Убедитесь, что работа с разделами и файловыми системами проводится на нужном диске\разделе. Перед работами тщательно планируйте все действия, чтобы по ошибке не потерять важную информацию на дисках!

Кратенький справочник по работе с разделами и файловыми системами во FreeBSD.

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

Какие диски обнаружены и как именованы:

% dmesg | grep ada

Информация о блоках, размере и модели:

# diskinfo /dev/ada3

Просмотр имеющихся разделов на диске:

# gpart show ada1
=>        34  1953525101  ada1  GPT  (932G)
          34           6        - free -  (3.0K)
          40   629145600     1  freebsd-ufs  (300G)
   629145640   629145600     2  freebsd-ufs  (300G)
  1258291240   695233888     3  freebsd-ufs  (332G)
  1953525128           7        - free -  (3.5K)

Особенности именования: Идентификатор накопителя в системе зависит от используемого драйвера. Например:

  • ad, ada - IDE PATA и SATA.
  • cd - CD/DVD подключенный через SCSI (SATA) порт.
  • acd - CD/DVD подключенный через ATA порт.
  • fd - накопитель на гибких дисках.
  • da - флешки.

Для IDE PATA-устройств есть особые правила, для PATA устройств зарезервированы имена:

  • /dev/ad0 - жесткий диск, подключенный как Primary Master
  • /dev/ad1 - жесткий диск, подключенный как Primary Slave
  • /dev/ad2 - жесткий диск, подключенный как Secondary Master
  • /dev/ad3 - жесткий диск, подключенный как Secondary Slave

После идентификатора устройства ставится английская буква, указывающая на номер раздела. Буква "c" - зарезервирована и в некоторых случаях указывает на весь слайс. Пример разбивки PATA-диска, на котором установлена ОС:

# gpart show -p /dev/ada2
=>        0  234441648   ada2  BSD  (112G)
          0    8388608  ada2a  freebsd-ufs  (4.0G)
    8388608    4194304  ada2b  freebsd-ufs  (2.0G)
   12582912    4194304  ada2d  freebsd-swap  (2.0G)
   16777216    4194304  ada2e  freebsd-ufs  (2.0G)
   20971520    6291456  ada2f  freebsd-ufs  (3.0G)
   27262976    2097152  ada2g  freebsd-ufs  (1.0G)
   29360128  205081519  ada2h  freebsd-ufs  (98G)
  234441647          1         - free -  (512B)

Ключ -p выводит не номера, а имена разделов (смотри пример выше).
Здесь в "ada2e":

  • ada2 - идентификатор диска, подключенного в Secondary Master,
  • e - порядковый указатель.

Для SATA-устройств определены имена начиная с четвёртого, через один:

  • /dev/ad4 - жесткий диск, подключенный к первому SATA-разъёму
  • /dev/ad5 - не используется
  • /dev/ad6 - жесткий диск, подключенный ко второму SATA-разъёму
  • /dev/ad7 - не используется
  • и тд.

Идентификатор выглядит уже по-другому - в цифровом виде, например: /dev/ada1p1, где p1 означает - первый раздел. пример ниже:

# gpart show -p /dev/ada1
=>        34  1953525101    ada1  GPT  (932G)
          34           6          - free -  (3.0K)
          40   629145600  ada1p1  freebsd-ufs  (300G)
   629145640   629145600  ada1p2  freebsd-ufs  (300G)
  1258291240   695233888  ada1p3  freebsd-ufs  (332G)
  1953525128           7          - free -  (3.5K)

Удаление с диска разделов и таблицы разделов

Просмотр текущего состояния и удаление раздела:
таблица разделов MBR:

# gpart show ada1
=>       63  976773105  ada1  MBR  (465G)
         63  976773105     1  freebsd  [active]  (465G)
# gpart delete -i 1 ada1
ada1s1 deleted

где i - порядковый номер раздела.

таблица разделов BSD:

# gpart show ada1s1
=>        0  976773105  ada1s1  BSD  (465G)
          0  976773105       4  freebsd-ufs  (465G)
# gpart delete -i 4 adas1
ada1s1d deleted

Удаление таблицы разделов MBR для перехода на GPT.

# gpart destroy ada1
ada1 destroyed
# dd if=/dev/zero of=/dev/ada1 count=1024

Удаление GPT-раздела:

# gpart show ada1
=>       34  976773101  ada1  GPT  (465G)
         34  976773101     1  freebsd-ufs  (465G)
# gpart delete -i 1 ada1
ada1p1 deleted

Создание таблицы разделов, разделов, файловых систем

Если на диске нет никакой таблицы разделов - создаём её:

# gpart create -s gpt ada1
ada1 created

# gpart show ada1
=>       34  976773101  ada1  GPT  (465G)
         34  976773101        - free -  (465G)

Создание UFS или ZFS разделов:

# gpart add -s 20G -t freebsd-ufs -l work1 ada1
ada1p1 added
# gpart add -s 20G -t freebsd-zfs -l data3 ada1
ada1p2 added
# gpart add -i 1 -s 100G -t freebsd-ufs -a 4K -l WD201 ada3

, где:

  • -i - порядковый номер раздела (если не указано, назначается автоматически),
  • -a - выравнивание раздела (об этом - ниже),
  • -s - размер раздела,
  • -t - тип файловой системы в разделе,
  • -l - label или "метка" диска.

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

# newfs -U -L data0 ada3p1

, где:

  • -U - включение режима "Soft Updates",
  • -L data0 - установка метки раздела,
  • ada3p1 - раздел, на котором создаётся файловая система.

Выравнивание раздела по блокам

Актуально для всех дисков, особенно больших. Смысл выравнивания - вместить в логический блок равное количество физических (блоков, определённых изготовителем диска):

Иллюстрация процесса выравнивания блоков на накопителе

Слева показано нормальное выравнивание - в сектор помещается какое-то количество блоков, причём их границы совпадают. Справа - нет выравнивания, граница сектора лежит в пространстве длока. Если не произвести выравнивания, то производительность диска резко падает.

Для проверки, выравнен раздел или нет, можно использовать команду diskinfo:

# diskinfo -v ada0p1
ada0p3
        512             # sectorsize
        75731098112     # mediasize in bytes (70G)
        147912301       # mediasize in sectors
        4096            # stripesize
        1024            # stripeoffset
        146738          # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        K0FDJ1NL427752  # Disk ident.

Подсчитать остаток от деления между stipeoffset и желаемым выравниванием можно командой ниже. Если получаемое значение не равно нулю, значит у раздела нет выравнивания.

#  echo 1024 % 4096 | bc
1024

Источники информации

А также

Печать/экспорт