Корневая файловая система на ZFS во FreeBSD


Павел Якуб Давидек (Pawel Jakub Dawidek)
Перевод: Алексей Федорчук

Предположим, что у вас диск - ad0. Создайте на нем один слайс, занимающий весь диск целиком:
# fdisk -BI /dev/ad0
Создайте на нем разметку в стиле BSD:
# bsdlabel -wB /dev/ad0s1

Отредактируйте схему разметки так, чтобы создать маленький (256-512 Мбайт) раздел a, а остальное зарезервируйте под раздел d.
# bsdlabel -e /dev/ad0s1

Будет создано нечто вроде этого - с разделом a на 512 МБ и резервированием всего остального d:
# /dev/ad0s1:
8 partitions:
# size offset fstype
a: 1048576 16 unused
c: * 0 unused
d: * * unused

Раздел d будет использован под ZFS:
# zpool create tank ad0s1d

Создайте каталог bootdir, куда будет монтироваться загружаемая система:
# mkdir /tank/bootdir
# ln -s bootdir/boot /tank/boot

Создайте файловую систему UFS на /dev/ad0s1a и туда скопируйте каталог /boot/
# newfs /dev/ad0s1a
# mount /dev/ad0s1a /tank/bootdir
# cp -Rp /boot /tank/bootdir/

Теперь не забудьте добавить строку zfs_load = "YES" в файл /tank/boot/loader.conf.

Далее, вы также должны указать системному загрузчику местоположение корневой файловой системы. Это можно сделать, добавив строку:
vfs.root.mountfrom="zfs:tank"

в файл /tank/boot/loader.conf. Или можно создать файл /tank/bootdir/etc/fstab с единственной строкой:
tank / zfs rw 0 0

Файл /etc/fstab (/tank/etc/fstab) на вашей файловой системе ZFS должен содержать строку, приведенную выше, строку:
/dev/ad0s1a /bootdir ufs rw 1 1

и все остальное, то есть swap-раздел и другие файловые системы (которые требуется монтировать при загрузке).

И наконец, нужно установить точку монтирования 'legacy' так, чтобы ZFS не пробовала монтировать это автоматически:
# zfs set mountpoint=legacy tank
Комментарии
Unisol, суббота, 24 ноября 2007 г. 00:53:39:
Вобщем - "идея простая", и полезная не только для описанного, но и, например, при переразбивке дисков на удалённом сервере.

Если коротко и понятно изложить статью то получим:
- Сделать раздел /dev/ad*s[1234]a и отформатировать его в UFS. Мегабайт 20-50 вам хватит.
- В нём сделать /boot и заинсталить туда ядро с модулями, создать /etc/fstab, в котором указать расположение корневого раздела - у меня вот есть сервера с /dev/ad0s1d :)
- В новом корневом разделе сделать "настоящий" /etc/fstab, неполхо при этом бывает смонтировать куда-то раздел с ядром и сделать симлинк /boot на куда-то/boot
- для случая с zfs - полезно сделать что-то вроде "zfs set mountpoint=legacy ваш-пул"

Обновлено: 12.03.2015