Gpt

http://sys.dmitrow.com/node/172

GPT предлагает следующие функции:

Максимальная ёмкость 18 экзабайт; до 128 разделов на диске; главная и резервная таблицы разделов для избыточности; чётко определённый и самораспознающийся формат раздела; каждый раздел имеет уникальный ID во избежание одинаковых идентификаторов (таблица “GUID”).

 А теперь перейдем к практике:

Первым делом посмотрим что у нас на жестком диске и удалим все разделы.

Информация о разделах: Fixit$ gpart show ipsd0 =>      63 312581745 ipsd0 MBR  (149G) 63 11293632     1 !12 [active]  (5.4G) 11293695 301288113      - free -  (144G)

Удаляем разделы: Fixit$ gpart delete -i 1 ipsd0 ipsd0s1 deleted

Уничтожаем существующую таблицу разделов (в данном случае - MBR): Fixit$ gpart destroy ipsd0 ipsd0 destroyed

Создаём таблицу GPT: Fixit$ gpart create -s GPT ipsd0 ad4 created Fixit$ gpart show ipsd0 =>      34 312581741 ipsd0 GPT  (149G) 34 312581741      - free —  (149G)

Создаём разделы.

1. Раздел для загрузчика.

Размер раздела для загрузчика не должен быть больше 545 кБ, иначе при загрузке появится сообщение "Boot loader too large" и загрузка остановится. По умолчанию началом первого раздела за GPT является 34 блок, но если в качестве целевого жёсткого диска будет использоваться жёсткий диск с 4кБ секторами, то в качестве первого блока для раздела freebsd-boot необходимо использовать не 34, а 40 блок (т.е. сделать необходимое выравнивание).

Загрузочный раздел начинается по смещению 34 блока от начала диска - сразу после таблицы GPT. Его размер задаём в 256 блоков, это составляет 128кБайт. Тип раздела "freebsd-boot" означает, что этот раздел выделен специально под загрузчик FreeBSD: Fixit$ gpart add -b 34 -s 256 -t freebsd-boot ipsd0 ipsd0p1 added

Параметр -b указывает смещение начального блока создаваемого раздела, а -s - его размер (дополнения к цифрам k, m, g означают, что размер задан не в блоках, а в кило-, мега-, гигабайтах).

2. Создаём раздел для swap-а.

Можно создать swap и на ZFS, но тогда не будет возможности записи дампа ядра при kernel panic. Размер раздела будет 4 ГБ, в блоках это = 1024*1024*2*4 (в 1кБ два блока). Тип раздела — freebsd-swap: Fixit$ gpart add -b 290 -s 8388608 -t freebsd-swap -l swap0 ipsd0 ipsd0p2 added

3.Создаём раздел для ZFS пула, отведя ему остатки.

Тип раздела — freebsd-zfs. Начало и конец раздела можно не указывать, если под него выделяется всё оставшееся место на жёстких дисках, как в моём случае. Fixit$ gpart add -t freebsd-zfs -l disk0 ipsd0 ipsd0p3 added

Итоговая таблица GPT будет такой: Fixit$ gpart show ipsd0 =>      34 312581741 ipsd0 GPT (68G) 34      256     1 freebsd-boot  (128K) 290  8388608     2 freebsd-swap  (4.0G) 8388608 134983357    3 freebsd-zfs  (64G)

Можно вывести и по указанным идентификаторам: Fixit$ gpart show -l ipsd0 =>      34 312581741 ipsd0 GPT (68G) 34      256     1 boot0  (128K) 290  8388608     2 swap0  (4.0G) 8388608 134983357    3 disk0  (64G)

Недавно в утилиту gpart была добавлена новая функциональность: возможность резервного копирования и восстановления таблицы разделов: gpart backup/restore.

Устанавливаем защитный Protected MBR (pmbr) от программ, не знающих GPT, и GPART загрузчик gptzfsboot: Fixit$ gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ipsd0