Во FreeBSD 8-CURRENT недавно появилась поддержка загрузки ядра с ZFS, а сама файловая система
была обновлена до версии 13. Процесс развертывания ZFS с возможностью загрузки с нее очень простой:1. Компилируете систему с опцией "-DLOADER_ZFS_SUPPORT" или добавляете в /etc/make.conf
LOADER_ZFS_SUPPORT=yes
2. Размечаете первый диск командой gpart на несколько разделов, из которых
обязательны только freebsd-boot и freebsd-zfs:# создаем таблицу разделов типа GPT на диске ad0
gpart create -s GPT ad0# добавляем загрузочный код позволяющий загружаться GPT разделов
gpart bootcode -b /boot/pmbr ad0# создаем раздел для кода загрузки loader(8)'а с раздела GPT
gpart add -b 34 -s 256 -t freebsd-boot ad0# записываем загрузочный код на него
gpart bootcode -p /boot/gptzfsboot -i 1 ad0# создаем swap-раздел для возможности делать kernel
# dump'ы в случае panic или deadlock'ов, чтобы иметь
# возможность анализировать неисправности. А также он
# может пригодиться в случае не хватки оперативной
# памяти.
gpart add -b 290 -s 2097152 -t freebsd-swap ad0# создаем основной раздел для ZFS
gpart add -b 2097442 -s 232344173 -t freebsd-zfs ad0# смотрим на результат
gpart show
=> 34 234441581 ad1 GPT (112G)
34 256 1 freebsd-boot (128K)
290 2097152 2 freebsd-swap (1.0G)
2097442 232344173 3 freebsd-zfs (111G)3. Создаете pool для ZFS на первом разделе и загружаетесь с него:
# создаем pool с именем 'h', выключенном поддержкой
# времени последнего доступа и включенным сжатием данных
zpool create -O atime=off -O compression=on h ad0p3# создаем необходимые dataset'ы
zfs create -p -o setuid=off -o utf8only=on h/usr/home
zfs create -o sharenfs='-alldirs -webnfs' h/usr/ports
zfs create -o atime=on h/var
zfs create -o readonly=on h/var/empty# населяем pool[1]
rsync -aHS --del --fileflags --filter '. migrate.rsync' / /h/# перезагружаемся
shutdown -r now# загружаемся *не* с ZFS в single-user режим (loader prompt)
boot -s# меняем точку монтирования pool'а на корень
/etc/rc.d/hostid restart
/sbin/zfs set mountpoint=/ h# перезагружаемся
/sbin/reboot# загружаемся с ZFS (loader prompt)
set vfs.root.mountfrom=zfs:h
boot
4. Повторяете шаг 1 для второго диска и подсоединяете его к "зеркалу":# Размечаем диск с учетом того, что количество блоков
# у freebsd-zfs должно быть такое же, как и на первом диске.
# В даннном примере - 484200428.
=> 34 488394988 ad0 GPT (233G)
34 256 1 freebsd-boot (128K)
290 4194304 2 freebsd-swap (2.0G)
4194594 484200428 3 freebsd-zfs (231G)=> 34 488397101 ad1 GPT (233G)
34 256 1 freebsd-boot (128K)
290 4196417 2 freebsd-swap (2.0G)
4196707 484200428 3 freebsd-zfs (231G)# подсоединяем его к pool'у как элемент зеркала
# (не перепутайте с *add*)
zpool attach h ad0p3 ad1p3Примечание: Тест проводился на 14 версии и с использованием
вот этого патча - http://pastebin.com/f3d2089f3
Если будут проблемы с компиляцей loader'а или gptzfsboot на
amd64,
то просто скопируйте их с уже работающей машины на i386.[1] пример migrate.rsync:
- .ccache
- /h
- /nfs
- /dev
- /tmp
- /var/emtpy
- /var/runСтоит не забыть потом создать эти директории в /h с соответствующими правами
на них. В частности без /dev система не загрузится.
URL:
Обсуждается: http://www.opennet.me/tips/info/1844.shtml
Напишите, пожалуйста, как поставить 7-ку на флэшку (da0s1a - UFS2 - /boot only), а всё остальное - на ZFS - raidz - ad0,ad1,ad2,ad3 ?
Спасибо
а смысл в таком? да и не сложно там если быть точно, я вижу так, ставишь ее на флеху полностью, а потом выносишь все разделы кроме корня на zfs
Поставить FreeBSD на флэшку1. Разметить флэшку
На всё пространство: % fdisk -BI /dev/da0
Интерактивно разбить на разделы: % fdisk -i /dev/da0
(ID разделов: UFS - 165, FAT32 - 11, EFI GPT - 238)
Используя конфиг-файл: % fdisk -f /poat/to/fdiskcofig.txt /dev/da02. Форматирование
MSDOS: % newfs_msdos -L DOS7 /dev/da0s1
FreeBSD: % bsdlabel -w -B da0s2 && newfs -n -U -L FBSD /dev/da0s23. Установка загрузчика в MBR флэшки
% boot0cfg -v -B -o noupdate da04. Перенос системных каталогов на флэшку
% mount /dev/da0s2 /mnt% cp -R /bin /mnt/
% cp -R /boot /mnt/
% cp -R /etc /mnt/
% cp -R /lib /mnt/
% cp -R /libexec /mnt/
% cp -R /sbin /mnt/% mkdir -p /mnt/usr/
% cp -R /usr/bin /mnt/usr/
% cp -R /usr/compat /mnt/usr/
% cp -R /usr/games /mnt/usr/
% cp -R /usr/include /mnt/usr/
% cp -R /usr/lib /mnt/usr/
% cp -R /usr/libdata /mnt/usr/
% cp -R /usr/libexec /mnt/usr/
% cp -R /usr/local /mnt/usr/
% cp -R /usr/ports /mnt/usr/
% cp -R /usr/sbin /mnt/usr/
% cp -R /usr/share /mnt/usr/
% cp -R /usr/src /mnt/usr/% cp -R /var /mnt/
% rm -rf /mnt/var/tmp/* && chmod -R 777 /mnt/var/tmp/
% rm -rf /mnt/var/run/*
% rm -rf /mnt/var/log/*% mkdir -p /mnt/mnt/
% mkdir -p /mnt/media/
% mkdir -p /mnt/cdrom/
% mkdir -p /mnt/dev/
% mkdir -p /mnt/proc/
% mkdir -p /mnt/tmp/ && chmod -R 777 /mnt/tmp/
% mkdir -p /mnt/usr/obj/5. Обеспечение загрузки с флэшки
% echo 'geom_label_load="YES"' >> /mnt/boot/loader.conf
% echo 'ifconfig_DEFAULT="DHCP"' >> /mnt/etc/rc.conf
% echo 'virecover_enable="NO"' >> /mnt/etc/rc.conf
% ee /mnt/etc/fstab:
# Device Mountpoint FStype Options Dump Pass#
#/dev/ad4s1f /usr ufs rw,noatime 2 2
#/dev/ad4s1g /home ufs rw,noatime 2 2
/dev/ufs/FBSD / ufs rw,noatime 1 1
md /tmp mfs rw,-s160M,noatime 0 0
md /var/run mfs rw,-s14M,noatime 0 0
md /var/log mfs rw,-s26M,noatime 0 0
#md /usr/obj mfs rw,-s900M,noatime 0 0
/dev/acd0 /cdrom cd9660 ro,noauto,-CUTF-8 0 0
/dev/da0s1 /mnt msdosfs rw,noauto,-D=CP1251,-L=ru_RU.UTF-8 0 0
/proc /proc procfs rw,noauto 0 0
/tmp /var/tmp nullfs rw 0 06. Перезагрузка
% umount /mnt/
% rebootМожет ещё чего ценного скопировать можно.
ваша вот это cp разименует все хардлинки, переносить нужно дампом или таром