URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 45521
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Настройка загрузки с ZFS раздела во FreeBSD и создание зеркала"

Отправлено auto_tips , 23-Ноя-08 22:58 
Во 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:
Обсуждается: https://www.opennet.ru/tips/info/1844.shtml


Содержание

Сообщения в этом обсуждении
"Настройка загрузки с ZFS раздела во FreeBSD и создание зеркала"
Отправлено Leo , 23-Ноя-08 22:58 
Напишите, пожалуйста, как поставить 7-ку на флэшку (da0s1a - UFS2 - /boot only), а всё остальное - на ZFS - raidz - ad0,ad1,ad2,ad3 ?
Спасибо

"Настройка загрузки с ZFS раздела во FreeBSD и создание зерка..."
Отправлено abigor , 24-Ноя-08 02:46 
а смысл в таком? да и не сложно там если быть точно, я вижу так, ставишь ее на флеху полностью, а потом выносишь все разделы кроме корня на zfs

"Настройка загрузки с ZFS раздела во FreeBSD и создание зерка..."
Отправлено iZEN , 25-Ноя-08 11:34 
Поставить 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/da0

2. Форматирование
MSDOS: % newfs_msdos -L DOS7 /dev/da0s1
FreeBSD: % bsdlabel -w -B da0s2 && newfs -n -U -L FBSD /dev/da0s2

3. Установка загрузчика в MBR флэшки
% boot0cfg -v -B -o noupdate da0

4. Перенос системных каталогов на флэшку
% 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    0

6. Перезагрузка
% umount /mnt/
% reboot

Может ещё чего ценного скопировать можно.


"Настройка загрузки с ZFS раздела во FreeBSD и создание зерка..."
Отправлено ш , 05-Окт-09 11:19 
ваша вот это cp разименует все хардлинки, переносить нужно дампом или таром