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

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

2007-09-20

Предположим, что у вас диск - 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