Файловая система FreeBSD: иерархия и монтирование. Файловая система Монтирование usb дисков в freebsd 11

NTFS — «родная» файловая система Windows. Поэтому просто так подключить флешки, жётские диски или другие неизвестные нам съёмные носители не получиться (по правде получится, но будут проблемы). Поэтому выкатываем наш исчерпывающий мануал по этому поводу.


  1. Как и всегда всё начинается с . Ставим драйвер для NTFS: #cd /usr/ports/sysutils/fusefs-ntfs #make install clean
  2. Начиная с FreeBSD 10, Fuse — это часть ядра. Делаем так, чтобы он загружался с системными модулями #nano /boot/loader.conf fuse_load="YES"

    Это сработает после перезагрузки. В текущем сеансе подгрузим этот модуль вручную

    #kldload fuse

    Проверить загружен ли модуль или нет можно командой

    #kldstat

    Если в списке будет присутствовать fuse.ko , значит всё хорошо.

    #kldstat Id Refs Address Size Name 1 3 0xffffffff80200000 1fa7c38 kernel 2 1 0xffffffff821a9000 1a7c8 fuse.ko

  3. Далее мы должны определиться, как видит система флешку или внешний жёсткий диск: #dmesg | grep da

    Вывод будет примерно таким:

    Da0 at umass-sim0 bus 0 scbus1 target 0 lun 0 da0: s/n 00H79BHRYGX22JBN detached (da0:umass-sim0:0:0:0): Periph destroyed da0 at umass-sim0 bus 0 scbus1 target 0 lun 0 da0: Removable Direct Access SPC-4 SCSI device da0: Serial Number 00H79BHRYGX22JBN da0: 40.000MB/s transfers da0: 14870MB (30453760 512 byte sectors) da0: quirks=0x12 da1 at umass-sim1 bus 1 scbus2 target 0 lun 0 da1: s/n 8968888304C9BB52 detached (da1:umass-sim1:1:0:0): Periph destroyed da1 at umass-sim1 bus 1 scbus2 target 0 lun 0 da1: Removable Direct Access SCSI-2 device da1: Serial Number 8968888306C9BB52 da1: 40.000MB/s transfers da1: 1999MB (4093952 512 byte sectors) da1: quirks=0x2

    Видим, что в системе у нас две флешки с идентификаторами da0 и da1 . В нашем примере мы будем использовать только флешку da0.

  4. Монтируем её следующей командой: ntfs-3g /dev/da0 /mnt

    /dev/da0 — это наша флешка, мы это выяснили в пункте 3.
    /mnt — это точка монтирования. Она может быть любой.

    Если появилась ошибка, монтируем раздел флешки. После ввода

    Ntfs-3g /dev/da0

    жмём TAB и видим разделы флешки

    Da0 da0s1

    И монтируем этот раздел

    Ntfs-3g /dev/da0s1 /mnt

  5. Переходим в каталог, куда мы примонтировали флешку и видим там её содержимое: #cd /mnt #ll total 13 drwxrwxrwx 1 root wheel 0 4 нояб. 17:23 System Volume Information/ -rwxrwxrwx 1 root wheel 9 4 нояб. 18:05 xxx.xxx* -rwxrwxrwx 1 root wheel 22 4 нояб. 18:04 Архив ZIP - WinRAR.zip* -rwxrwxrwx 1 root wheel 9904 4 нояб. 18:04 Лист Microsoft Office Excel.xlsx*

    Теперь на флешку можно записывать файлы и читать их с неё.

  6. Для того, чтобы отмонтировать флешку, сначала покинем каталог, куда она примонтирована. Например, #cd /

    А после этого, воспользуемся командой

    #umount /mnt

    Обратите внимание, что в качестве аргумента указана не флешка, а её точка монтирования!
    ВАЖНО: Не выдёргивайте флешку сразу после ввода команды! Её можно будет вытаскивать только через несколько секунд, когда в терминале снова появится приглашение на ввод!

Главная > Операционные системы > UNIX > BSD > FreeBSD

Добавить жесткий диск в FreeBSD за 5 минут

Часто обращаю внимание на то, что простые вопросы чаще всего мало освещены в интернете. Наверное, это потому, что все гуру уверены, что никто никогда не задаст таких глупых вопросов, ведь это знает каждый. Но моя практика показала, что именно такие мелкие простые вопросы самые частые не только у новичков, а и у серьезных администраторов, которым просто не приходилось иметь с этим дела. Даже серьезные администраторы не делают это каждый день, а, чтобы не забыть, ведут некую шпаргалку для себя, никому в этом не признаваясь. Давайте все исправим. Сейчас Вы узнаете, как за 5 минут добавить жесткий диск в FreeBSD. Итак. Сначала будет преведена полная инструкция для понимания процесса, а в конце будет краткий список действий , которое будет содержать лишь список команд в качестве шпаргалки.

Подробная инструкция с пояснениями

Выбор имени жесткого диска

Для начала нужно определить имя устройства, которое мы только что добавили. В этом нам поможет следующая команда:

Geom disk list

Или же вот такая команда:

Camcontrol devlist

В реальной системе эти команды покажут более полезную информацию, а именно: названия устройств и их серийные номера.

До установки нового устройства мы знали, что наша система установлена на ada0, значит по логике вещей наш новый диск ada1. Это вы можете определить по названию нового устройства, его серийному номеру или же объему.

Теперь проверим, имеется ли разметка на нашем новом диске

Gpart show ada1

Диск не имеет никакой разметки.

Удаление существующей разметки

Если диск уже использовался и есть необходимость удалить с него разметку, просто выполните:

Gpart destroy -F ada1

Создание разметки GPT

Для начала мы должны создать разметку диска. Крайне рекомендую забыть о MBR и перейти на новую, более удобную и функциональную - GPT.

Создаем разметку GPT на диске, затем проверяем, что вышло:

Gpart create -s gpt /dev/ada1 gpart show ada1

Теперь у нас диск имеет разметку GPT. Из вывода можно увидеть, что абсолютно весь диск, начиная с LBA 34 и заканчивая LBA 8388541 пуст. LBA 0-33 - зарезервированы системой под таблицу разделов.

Допустим, нам необходимо создать два раздела на этом диске:

  • swap - раздел подкачки
  • data - раздел типа ufs для хранения каких либо, необходимых нам, данных.

Создание разделов (слайсов)

Если установка производится на современные жесткие диски, у которых размер сектора = 4 кб, то при создании разделов (партиций) необходимо использовать выравнивание. Можно поступить двумя способами:
1) если указываем параметры раздела в блоках, то номер блока вводить кратным 8, например: -b 40 ;
2) если указываем размер раздела в байтах, либо не указываем вообще начало и размер, использовать параметр -a 4k , который подгонит начало и конец раздела под секторы, размером 4 кб. Так как мы в данном примере производим тестовую установку на виртуальный жесткий диск, то этого можно не делать. В любом случае перед созданием разделов нужно точно знать размер сектора вашего накопителя, иначе это выльется жуткими тормозами в работе.

Теперь создадим разделы. Для этого существует команда gpart add с различными параметрами. Первый параметр -t - указывает на тип создаваемой файловой системы. В нашем случае будет использовано два типа: freebsd-swap и freebsd-ufs. Далее идут два необязательных параметра: -b - указывает на номер LBA, начиная с которого необходимо создать раздел. Если не указать данный параметр, то раздел будет создан автоматически с первого свободного LBA. -s - указывает на размер раздела в LBA. Размер одного блока LBA = 512 байт. Желательно указывать в количестве блоков LBA, но можно и в кило/мега/гига/… байтах (суффикс k/M/G). Если не указать данный параметр, то раздел будет создан до максимально возможного LBA в пределах пустой области. Также в качестве параметра можно указать метку раздела, например: -l swap1 - в этом случае будет создана метка /dev/gpt/swap1, по которой можно более удобно обращаться к разделу. Последним обязательным параметром идет путь к диску. В нашем случае: /dev/ada1.

Давайте создадим два раздела, а затем посмотрим, что у нас получилось. Первый раздел будем создавать без указания начального LBA, но с указанием размера 1 Гб (2097152 блоков). Второй раздел создадим без указания начального LBA и без указания размера - таким образом он будет создан на всем свободном пространстве.

Gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1 gpart show ada1

Размер можно указывать в байтах, а не блоках. Это значительно удобней. Единственный минус - система не всегда может корректно рассчитать количество блоков. Возможны случаи, когда на диске останется пустовать некоторое количество блоков при указании размера раздела в байтах.

Создание файловой системы (форматирование)

Разделы типа swap форматировать нет необходимости. А вот разделы типа ufs перед использованием должны быть отформатированы. Правильнее сказать: на них должна быть создана файловая система.

Для того, чтобы создать файловую систему на втором разделе, достаточно выполнить следующую команду:

Newfs -U /dev/ada1p2

В данном случае использовался параметр -U - он говорит о том, что в данной файловой системе должен использоваться механизм Soft Updates. Вы можете не использовать этот параметр, чтобы не включать данный механизм.

Монтирование

Следующим шагом будет монтирование разделов. Для начала, чтобы не забыть, добавим наши новые разделы в /etc/fstab. Мой файл после редактирования выглядит вот так:

Для того, чтобы перемонтировать все разделы согласно файла /etc/fstab, просто выполним команду:

Mount -a

Как видно из вывода, раздел /dev/ada1p2 смонтирован. Теперь посмотрим, что произошло с разделом SWAP. Выполним команду:

Как видно, новый раздел SWAP не смонтирован. Чтобы смонтировался SWAP, необходимо его включить специальной командой:

Swapon /dev/ada1p1

Точно так же при помощи команды swapoff нужно отключать раздел SWAP перед тем, как произвести над ним какие-то действия.

На этом все действия по добавлению нового жесткого диска в систему завершены.

Краткая инструкция

Дано : жесткий диск /dev/ada1

Цель : удалить существующую разметку, создать новую разметку GPT, создать два раздела: подкачка и данные и подключить их к рабочей системе.

После каждого действия выполняйте gpart show , чтобы наблюдать за результатом. Последовательность действий:

  1. Удалить существующую разметку:
    gpart destroy -F ada1
  2. Создать новую разметку:
    gpart create -s gpt /dev/ada1
  3. Создать два раздела: подкачка и данные:
    gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1
  4. Создать файловую систему UFSv2 на втором разделе:
    newfs -U /dev/ada1p2
  5. Добавить в файл /etc/fstab строки для автомонтирования при загрузке:
    /dev/ada1p1 none swap sw 0 0 /dev/ada1p2 /mnt ufs rw 2 2
  6. Смонтировать новый раздел (команда монтирует все разделы из файла /etc/fstab):
    mount -a
  7. Включить в работу новый раздел swap командой:
    swapon /dev/ada1p1 Материал взят с сайта:

Менять права доступа и владельца файлов и каталогов в , можно с помощью команд chmod и chown . Маску для установки прав на создаваемые файлы, можно изменить глобально, в /etc/profile для Linux и в /etc/login.conf для FreeBSD. Обычно, маска по-умолчанию 022 . Значение umask вычитается из 777 , таким образом права доступа будут иметь значение 755 . exec - разрешено выполнение read - право на чтение write - право на запись SUID bit - атрибут файла, в совокупности с атрибутом исполняемого файла, позволяет запускаемому файлу выполняться с эффективным UID владельца файла, а не того, кто запускает файл 1 --x execute # Права 764 = exec/read/write | read/write | read 2 -w- write # Для: |-- Owner --| |- Group-| |Oth| 4 r-- read ugo=a u=user, g=group, o=others, a=everyone # chmod MODE[,MODE] FILE # MODE имеет форму: *([-+=]()) # chmod 640 /var/log/maillog # Установить права доступа равными -rw-r----- # chmod u=rw,g=r,o= /var/log/maillog # Как и выше # chmod -R o-r /home/* # Рекурсивно изменить права, запретить чтение для Other # chmod u+s /path/to/prog # Установить SUID бит на исполняемый файл (тут осторожней, вы должны понимать, что вы делаете) # find / -perm -u+s -print # Найти все программы с установленным SUID битом # chown user:group /path/to/file # Установить пользователя и группу как владеющих файлом # chgrp group /path/to/file # Изменить группу владеющую файлом # chmod 640 `find ./ -type f -print` # Изменить права доступа на 640 для всех файлов # chmod 751 `find ./ -type d -print` # Изменить права доступа на 751 для всех директорий

Информация о дисках

# diskinfo -v /dev/ad2 # Посмотреть информацию о диске (sector/size ) FreeBSD # hdparm -I /dev/sda # Информация о IDE/ATA диске (Linux) # fdisk /dev/ad2 # Показать изменить разделы диска # smartctl -a /dev/ad2 # Показать SMART информацию диска

Загрузка

FreeBSD

Что-бы загрузить старое ядро, в аварийной ситуации, например после неудачной сборки и установки нового, остановите загрузку, нажав 6 во время обратного отсчета, что-бы попасть в приглашение командной строки. # unload # load kernel.old # boot

Точки монтирования, использование дисков

# mount | column -t # Показать смонтированные файловые системы # df # Показать кол-во свободного места и смонтированные устройства # cat /proc/partitions # Показать все зарегистрированные разделы (Linux)

Информация о директориях

# du -sh * # Размеры директорий в виде списка # du -csh # Суммарный объем текущей директории # du -ks * | sort -n -r # Список директорий, отсортированный по объему в килобайтах # ls -lSr # Список директорий, обратная сортировка

Кто какие файлы открыл

Иногда необходимо выяснить, какой файл заблокировал раздел, из-за чего команда umount выдает соответствующую ошибку. # umount /home/ umount: unmount of /home # Размонтировать раздел невозможно, пока /home заблокирован failed: Device busy

FreeBSD и большинство Unix подобных систем

# fstat -f /home # для точки монтирования # fstat -p PID # для приложения с PID # fstat -u user # для имени пользователя Найти открытый файл для Xorg : # ps ax | grep Xorg | awk "{print $1}" 1252 # fstat -p 1252 USER CMD PID FD MOUNT INUM MODE SZ|DV R/W root Xorg 1252 root / 2 drwxr-xr-x 512 r root Xorg 1252 text /usr 216016 -rws--x--x 1679848 r root Xorg 1252 0 /var 212042 -rw-r--r-- 56987 w Найти файл с inum 212042 в директории /var можно так: # find -x /var -inum 212042 /var/log/Xorg.0.log

Linux

Найти открытый файл в директории с помощью fuser или lsof : # fuser -m /home # Список процессов имеющих доступ к /home # lsof /home COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME tcsh 29029 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home) lsof 29140 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home) Найти по PID приложения: ps ax | grep Xorg | awk "{print $1}" 3324 # lsof -p 3324 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log По имени файла: # lsof /var/log/Xorg.0.log COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log

Монтирование/перемонтирование файловых систем

Например cdrom , прописанный в /etc/fstab : # mount /cdrom Или можно найти устройство в /dev или в выводе dmesg

FreeBSD

# mount -v -t cd9660 /dev/cd0c /mnt # Монтирование диска Cdrom (способ первый) # mount_cd9660 /dev/wcd0c /cdrom # Монтирование диска Cdrom (способ второй) # mount -v -t msdos /dev/fd0c /mnt # Дискета Запись в /etc/fstab : # Device Mountpoint FStype Options Dump Pass# /dev/acd0 /cdrom cd9660 ro,noauto 0 0 Разрешить пользователям монтирование дисков: # sysctl vfs.usermount=1 # Или впишите строку "vfs.usermount=1" in /etc/sysctl.conf

Linux

# mount -t auto /dev/cdrom /mnt/cdrom # Типичная команда монтирования диска cdrom # mount /dev/hdc -t iso9660 -r /cdrom # Монтирование диска IDE # mount /dev/scd0 -t iso9660 -r /cdrom # Монтирование диска SCSI cdrom # mount /dev/sdc0 -t ntfs-3g /windows # Монтирование диска SCSI Запись в /etc/fstab : /dev/cdrom /media/cdrom subfs noauto,fs=cdfss,ro,procuid,nosuid,nodev,exec 0 0

Монтирование FreeBSD раздела с Linux

Посмотрите номер раздела в fdisk , обычно это корнеыой раздел, но может быть и на другом BSD слайсе. Если на разделе FreeBSD много слайсов, их не будет видно через fdisk , но их можно найти в dev/sda* или /dev/hda* . # fdisk /dev/sda # Найти FreeBSD раздел /dev/sda3 * 5357 7905 20474842+ a5 FreeBSD # mount -t ufs -o ufstype=ufs2,ro /dev/sda3 /mnt /dev/sda10 = /tmp; /dev/sda11 /usr # Другой слайс

Перемонтирование

Перемонтировать устройство без предварительного размонтирования, например для fsck # mount -o remount,ro / # Linux # mount -o ro / # FreeBSD Копировать поток данных с CDROM "а в файл ISO образа . # dd if=/dev/cd0c of=file.iso

Создание swap раздела на лету

Предположим вам нужно увеличить swap раздел, скажем до 2 гигабайт, /swap2gb (для Linux) # dd if=/dev/zero of=/swap2gb bs=1024k count=2000 # mkswap /swap2gb # Создать swap # swapon /swap2gb # Включить swap, теперь его можно использовать # swapoff /swap2gb # Отключить swap # rm /swap2gb

Монтирование SMB раздела

CIFS - Common Internet File System SMB - server message block Предположим вам нужно получить доступ на расшаренному SMB разделу myshare на сервере smbserver , адрес набираемый на Windows машине будет \\smbserver\myshare\ . Монтировать будем на /mnt/smbshare . Не забывайте, для cifs требуется IP адрес или доменное имя.

Linux

# smbclient -U user -I 192.168.16.229 -L //smbshare/ # List the shares # mount -t smbfs -o username=winuser //smbserver/myshare /mnt/smbshare # mount -t cifs -o username=winuser,password=winpwd //192.168.16.229/myshare /mnt/share Кроме того пакет mount.cifs позволяет хранить привилегии в файле, например /home/user/.smb : username=winuser password=winpwd И теперь монтируем: # mount -t cifs -o credentials=/home/user/.smb //192.168.16.229/myshare /mnt/smbshare

FreeBSD

Используйте ключ -I , что-бы задать IP адрес (или DNS ); smbserver , это Windows имя. # smbutil view -I 192.168.16.229 //winuser@smbserver # Список расшаренных ресурсов # mount_smbfs -I 192.168.16.229 //winuser@smbserver/myshare /mnt/smbshare

Монтировать образ

Linux loop-back

# mount -t iso9660 -o loop file.iso /mnt # Монтировать образ CD # mount -t ext3 -o loop file.img /mnt # Монтировать образ с файловой системой ext3

FreeBSD

Используя md - устройство памяти (если нужно, сделайте kldload md.ko ): # mdconfig -a -t vnode -f file.iso -u 0 # mount -t cd9660 /dev/md0 /mnt # umount /mnt; mdconfig -d -u 0 # Очистить устройство памяти Или используя псевдоустройство(VN, Virtual node ): # vnconfig /dev/vn0c file.iso; mount -t cd9660 /dev/vn0c /mnt # umount /mnt; vnconfig -u /dev/vn0c # Очистить псевдоустройство

Создание и запись образа ISO

Будем копировать cd или dvd сектор за сектором. # dd if=/dev/hdc of=/tmp/mycd.iso bs=2048 conv=notrunc Используйте mkisofs что-бы создать образ из файла в директории. Для преодоления ограничений имен файлов используйте опцию -r , включающую расширение RockRidge , основное для UNIX систем, -J включает Joliet , используемое Microsoft, -L разрешает ISO9660 имена, начинающиеся точкой. # mkisofs -J -L -r -V TITLE -o imagefile.iso /path/to/dir Во FreeBSD, mkisofs можно установить из портов /usr/ports/sysutils/cdrtools.

Запись CD/DVD ISO образов

FreeBSD

FreeBSD не устанавливает DMA на ATAPI устройства, это можно сделать через переменную sysctl или в файле /boot/loader.conf , следующими записями. hw.ata.ata_dma="1" hw.ata.atapi_dma="1" Используйте burncd для ATAPI устройств (burncd , стандартная программа, часть базовой системы) и cdrecord (из /usr/ports/sysutils/cdrtools ) для SCSI устройств. # burncd -f /dev/acd0 data imagefile.iso fixate # Для ATAPI устройств # cdrecord -scanbus # Найти рекордер # cdrecord dev=1,0,0 imagefile.iso

Linux

Так-же используйе cdrecord , как описано выше. Кроме того можно использовать родной ATAPI интерфейс: # cdrecord dev=ATAPI -scanbus Записывайте, как было описано выше.

dvd+rw-tools

Пакет dvd+rw-tools (FreeBSD: ports/sysutils/dvd+rw-tools) имеет весь функционал необходимый для работы с DVD, плюс growisofs , для записи CD или DVD. Документацию с примерами можно найти в FreeBSD handbook Глава 18.7 # -dvd-compat закрывает диск # growisofs -dvd-compat -Z /dev/dvd=imagefile.iso # Записать существующий iso образ # growisofs -dvd-compat -Z /dev/dvd -J -R /p/to/data # Записать напрямую

Конвертировать образ из Nero .nrg файла в файл.iso

Nero добавляет к образу заголовок в 300кб, его можно обрезать с помощью dd . # dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300

Конвертировать образ bin/cue в.iso

Это можно сделать с помощью небольшой программы, bchunk . Во FreeBSD ее можно найти в портах /usr/ports/sysutils/bchunk . # bchunk imagefile.bin imagefile.cue imagefile.iso

Создание образа на основе файла

Например, раздел размером 1Гб использует файл /usr/vdisk.img . В данном случае мы используем ключ -u 0 , но номер может быть любым.

FreeBSD

# dd if=/dev/random of=/usr/vdisk.img bs=1K count=1M # mdconfig -a -t vnode -f /usr/vdisk.img -u 0 # Создаем устройство /dev/md1 # bsdlabel -w /dev/md0 # newfs /dev/md0c # mount /dev/md0c /mnt # umount /mnt; mdconfig -d -u 0; rm /usr/vdisk.img # Очистить md Образ созданный из файла может быть смонтирован в процессе загрузки системы, путем записи строки в /etc/rc.conf и /etc/fstab . Проверить правильность ваших настроек можно с помощью команды /etc/rc.d/mdconfig start (предварительно удалив устройство md0 с помощью команды # mdconfig -d -u 0 ). Имейте в виду, что автоматическая монтирование образа будет работать, только если файл образа, лежит НЕ в корневом разделе, в силу того что скрипт /etc/rc.d/mdconfig выполняется на ранней стадии загрузки, когда корневой раздел еще не доступен на запись. Образы расположенные вне корневого раздела будут смонтированы позже, скриптом /etc/rc.d/mdconfig2 .
/boot/loader.conf: md_load="YES" /etc/rc.conf: mdconfig_md0="-t vnode -f /usr/vdisk.img" # /usr не в корневом разделе /etc/fstab: (0 0 в конце, очень важны, это укажет fsck игнорировать проверку устройства, так как оно еще не существует) /dev/md0 /usr/vdisk ufs rw 0 0
Кроме того, в последствии можно увеличить размер образа, скажем на 300 мб. # umount /mnt; mdconfig -d -u 0 # dd if=/dev/zero bs=1m count=300 >> /usr/vdisk.img # mdconfig -a -t vnode -f /usr/vdisk.img -u 0 # growfs /dev/md0 # mount /dev/md0c /mnt # Теперь файловый раздел на 300 мб больше

Linux

# dd if=/dev/zero of=/usr/vdisk.img bs=1024k count=1024 # mkfs.ext3 /usr/vdisk.img # mount -o loop /usr/vdisk.img /mnt # umount /mnt; rm /usr/vdisk.img # Очистить

Linux и losetup

/dev/zero намного быстрей, чем urandom , но менее защищенн для шифрования. # dd if=/dev/urandom of=/usr/vdisk.img bs=1024k count=1024 # losetup /dev/loop0 /usr/vdisk.img # Создать /dev/loop0 # mkfs.ext3 /dev/loop0 # mount /dev/loop0 /mnt # losetup -a # Проверить # umount /mnt # losetup -d /dev/loop0 # Отсоединить # rm /usr/vdisk.img

Создание файловой системы в памяти

Файловая система в памяти очень быстрая, имеет смысл использовать ее для приложений с высоким дисковым IO. Создадим раздел размером 64 мб и смонтируем его в /memdisk:

FreeBSD

# mount_mfs -o rw -s 64M md /memdisk # umount /memdisk; mdconfig -d -u 0 # Очистить md устройство md /memdisk mfs rw,-s64M 0 0 # запись в /etc/fstab

Linux

# mount -t tmpfs -osize=64m tmpfs /memdisk

Производительность дисков

Чтение и запись 1гб файла в разделе ad4s3c (/home ) # time dd if=/dev/ad4s3c of=/dev/null bs=1024k count=1000 # time dd if=/dev/zero bs=1024k count=1000 of=/home/1Gb.file # hdparm -tT /dev/hda # Только Linux

Часто обращаю внимание на то, что простые вопросы чаще всего мало освещены в интернете. Наверное, это потому, что все гуру уверены, что никто никогда не задаст таких глупых вопросов, ведь это знает каждый. Но моя практика показала, что именно такие мелкие простые вопросы самые частые не только у новичков, а и у серьезных администраторов, которым просто не приходилось иметь с этим дела. Даже серьезные администраторы не делают это каждый день, а, чтобы не забыть, ведут некую шпаргалку для себя, никому в этом не признаваясь. Давайте все исправим. Сейчас Вы узнаете, как за 5 минут добавить жесткий диск в FreeBSD. Итак. Сначала будет преведена полная инструкция для понимания процесса, а в конце будет краткий список действий , которое будет содержать лишь список команд в качестве шпаргалки.

Подробная инструкция с пояснениями

Выбор имени жесткого диска

Для начала нужно определить имя устройства, которое мы только что добавили. В этом нам поможет следующая команда:

Geom disk list

Или же вот такая команда:

Camcontrol devlist

В реальной системе эти команды покажут более полезную информацию, а именно: названия устройств и их серийные номера.

До установки нового устройства мы знали, что наша система установлена на ada0, значит по логике вещей наш новый диск ada1. Это вы можете определить по названию нового устройства, его серийному номеру или же объему.

Теперь проверим, имеется ли разметка на нашем новом диске

Gpart show ada1

Диск не имеет никакой разметки.

Удаление существующей разметки

Если диск уже использовался и есть необходимость удалить с него разметку, просто выполните:

Gpart destroy -F ada1

Создание разметки GPT

Для начала мы должны создать разметку диска. Крайне рекомендую забыть о MBR и перейти на новую, более удобную и функциональную - GPT.

Создаем разметку GPT на диске, затем проверяем, что вышло:

Gpart create -s gpt /dev/ada1 gpart show ada1

Теперь у нас диск имеет разметку GPT. Из вывода можно увидеть, что абсолютно весь диск, начиная с LBA 34 и заканчивая LBA 8388541 пуст. LBA 0−33 - зарезервированы системой под таблицу разделов.

Допустим, нам необходимо создать два раздела на этом диске:

  • swap - раздел подкачки
  • data - раздел типа ufs для хранения каких либо, необходимых нам, данных.

Создание разделов (слайсов)

Если установка производится на современные жесткие диски, у которых размер сектора = 4 кб, то при создании разделов (партиций) необходимо использовать выравнивание. Можно поступить двумя способами: 1) если указываем параметры раздела в блоках, то номер блока вводить кратным 8, например: -b 40 ; 2) если указываем размер раздела в байтах, либо не указываем вообще начало и размер, использовать параметр -a 4k , который подгонит начало и конец раздела под секторы, размером 4 кб. Так как мы в данном примере производим тестовую установку на виртуальный жесткий диск, то этого можно не делать. В любом случае перед созданием разделов нужно точно знать размер сектора вашего накопителя, иначе это выльется жуткими тормозами в работе.

Теперь создадим разделы. Для этого существует команда gpart add с различными параметрами. Первый параметр -t - указывает на тип создаваемой файловой системы. В нашем случае будет использовано два типа: freebsd-swap и freebsd-ufs. Далее идут два необязательных параметра: -b - указывает на номер LBA, начиная с которого необходимо создать раздел. Если не указать данный параметр, то раздел будет создан автоматически с первого свободного LBA. -s - указывает на размер раздела в LBA. Размер одного блока LBA = 512 байт. Желательно указывать в количестве блоков LBA, но можно и в кило/мега/гига/… байтах (суффикс k/M/G). Если не указать данный параметр, то раздел будет создан до максимально возможного LBA в пределах пустой области. Также в качестве параметра можно указать метку раздела, например: -l swap1 - в этом случае будет создана метка /dev/gpt/swap1, по которой можно более удобно обращаться к разделу. Последним обязательным параметром идет путь к диску. В нашем случае: /dev/ada1.

Давайте создадим два раздела, а затем посмотрим, что у нас получилось. Первый раздел будем создавать без указания начального LBA, но с указанием размера 1 Гб (2097152 блоков). Второй раздел создадим без указания начального LBA и без указания размера - таким образом он будет создан на всем свободном пространстве.

Gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1 gpart show ada1

Размер можно указывать в байтах, а не блоках. Это значительно удобней. Единственный минус - система не всегда может корректно рассчитать количество блоков. Возможны случаи, когда на диске останется пустовать некоторое количество блоков при указании размера раздела в байтах.

Создание файловой системы (форматирование)

Разделы типа swap форматировать нет необходимости. А вот разделы типа ufs перед использованием должны быть отформатированы. Правильнее сказать: на них должна быть создана файловая система.

Для того, чтобы создать файловую систему на втором разделе, достаточно выполнить следующую команду:

Newfs -U /dev/ada1p2

В данном случае использовался параметр -U - он говорит о том, что в данной файловой системе должен использоваться механизм Soft Updates. Вы можете не использовать этот параметр, чтобы не включать данный механизм.

Монтирование

Следующим шагом будет монтирование разделов. Для начала, чтобы не забыть, добавим наши новые разделы в /etc/fstab. Мой файл после редактирования выглядит вот так:

Для того, чтобы перемонтировать все разделы согласно файла /etc/fstab, просто выполним команду:

Mount -a

Как видно из вывода, раздел /dev/ada1p2 смонтирован. Теперь посмотрим, что произошло с разделом SWAP. Выполним команду:

Как видно, новый раздел SWAP не смонтирован. Чтобы смонтировался SWAP, необходимо его включить специальной командой:

Swapon /dev/ada1p1

Точно так же при помощи команды swapoff нужно отключать раздел SWAP перед тем, как произвести над ним какие-то действия.

На этом все действия по добавлению нового жесткого диска в систему завершены.

Краткая инструкция

Дано : жесткий диск /dev/ada1

Цель : удалить существующую разметку, создать новую разметку GPT, создать два раздела: подкачка и данные и подключить их к рабочей системе.

После каждого действия выполняйте gpart show , чтобы наблюдать за результатом. Последовательность действий:

  1. Удалить существующую разметку: gpart destroy -F ada1
  2. Создать новую разметку: gpart create -s gpt /dev/ada1
  3. Создать два раздела: подкачка и данные: gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1
  4. Создать файловую систему UFSv2 на втором разделе: newfs -U /dev/ada1p2
  5. Добавить в файл /etc/fstab строки для автомонтирования при загрузке: /dev/ada1p1 none swap sw 0 0 /dev/ada1p2 /mnt ufs rw 2 2
  6. Смонтировать новый раздел (команда монтирует все разделы из файла /etc/fstab): mount -a
  7. Включить в работу новый раздел swap командой: swapon /dev/ada1p1

На этом настройка завершена.