ZFSonlinux-загрузчик .

ZFSonlinux-загрузчик .

Сообщение tupoll » 21 апр 2016, 05:29

Пул ZFS c Funtoo linux был создан с целью размещения на нём файловой помойки обычного рабочего домашнего окружения и естественно мультимедии,одной из задач было спокойное монтирование с любыми правами bsd системы расположенной на соседнем диске для двухстороннего обмена файлами.Получить сразу готовый образ с предустановленными глобальными флагами оптимизации под нужный процессор и окружение,и при этом с минимальными затратами на время сборки и кое-какими доработками под свои задачи можно только на funtoo http://www.funtoo.org/Subarches .Собрано всё было по вполне понятному описанию http://www.funtoo.org/ZFS_Install_Guide с некоторыми изменениями:
1.Для оптимизации времени загрузки и облегчения ядра убрана поддержка всех существующих в ядре gentoo-sources модулей файловых систем,кроме прослойки spl солярис.
2.Наличие первого пункта исключает раздел /boot на ext2,все в пуле.
Был выбран старый потрепанный жесткий диск с небольшим размером для установки без всякого предубеждения о нехватке места в будущем-всегда можно спокойно переехать снапшотом не заморачиваясь новой установкой на другой диск,имея точную копию рабочей системы.
Версии пула ZFS и версии самой файловой системы естественно меняются добавляются,новые опции и рано или поздно это начинает сказываться на работе существующей уже системы.Груб просто перестал узнавать файловую систему и не может просто загрузить имидж с обновленной версии пула,например 5000 в которой добавились новые опции управления файловой системой.Не знаю кто из этих авторов «глядел в воду» один предлагает создать рэйд с пулом с включенными опциями для понятия загрузчиком файловой системы чудесной командой:
Код: выделить все
zpool create  \
                    -d -o feature@async_destroy=enabled \
                       -o feature@empty_bpobj=enabled \
                       -o feature@lz4_compress=enabled \
                       -o feature@spacemap_histogram=enabled \
                       -o feature@enabled_txg=enabled \
                       -o feature@extensible_dataset=enabled \
                       -o feature@bookmarks=enabled \
                       -f -O compression=lz4 -o ashift=12 -m none tank mirror /dev/sda /dev/sdb

http://www.funtoo.org/Install_ZFS_root% ... ile_System -всё вполне толково и может быть
работает и grub узнает zfs .Опережая немного своей идеей второй предлагает все опции неизвестные грубу отключить :
Код: выделить все
zpool create -o ashift=12 -o listsnapshots=on \ -о feature@spacemap_histogram=disabled\ -о feature@enabled_txg=disabled\ -о feature@hole_birth=disabled\ -о feature@extensible_dataset=disabled\ -о feature@embedded_data=disabled\ -о feature@bookmarks=disabled\ -о feature@filesystem_limits=disabled\ -о feature@large_blocks=disabled\ diskpool raidz /dev/sda2 /dev/sdb2

https://habrahabr.ru/post/268807/
Всё это совсем не радует,никакой нет гарантии,что при очередной смене версии пула не появятся новые плюшки что приведет опять же к проблеме с загрузчиком,и снова начинаю задумываться о отдельном разделе /boot всегда понятном грубу.Раз речь идёт о raid причем в любом виде /boot на ext просто невозможен: при выходе из строя диска с загрузчиком на ext другой просто не загрузится.
Можно конечно не обновлять версию пула и zfs,но freebsd ждать не будет -монтирование будет невозможным.Приятной неожиданностью стало то,что sysresccd-4.5.4_zfs_0.6.5.4.iso позволяет в окружении chroot работать с zfs.
Пример.

Создаем пул для системы :
Код: выделить все
zpool create -f -o ashift=12 tank mirror /dev/sda3 /dev/sdb4

Импортирую пул с рабочей системой или в ней самой делаю снапшот всего пула ,без разницы и отправляю на созданный пул.
Код: выделить все
 zfs snapshot -r fun@20160210

 zfs send -vR fun@20160210 | zfs receive -vFd tank

Всё это описано уже и в подробности не нужно,смысл в том что новый пул получил рабочую систему монтируем его в /mnt/funtoo и чрутимся,ничего нового:
Код: выделить все
zpool import -o altroot=/mnt/funtoo -o cachefile=/etc/zfs/zpool.cache -f tank
   cd /mnt/funtoo
    mount -t proc none proc
 mount --rbind /dev dev
 mount --rbind /sys sys
env -i HOME=/root TERM=$TERM chroot . bash -l
export PS1="(chroot) $PS1"

Удаляем полностью директорию /boot c бэкапом
Код: выделить все
 mkdir -p /home/boot  #например
mv /boot  /home/boot

создаём в чруте новый пул boot версии 28 на разметке be00 solaris-boot
Код: выделить все
zpool create -f -o version=28 boot mirror /dev/sda2 /dev/sdb2

возвращаем на место всё что было в /boot,устанавливаем загрузчик на оба диска,конфигурим.
Код: выделить все
grub-install /dev/sda
grub-install /dev/sdb
grub-mkconfig -o /boot/grub/grub.cfg

Остался последний камень-проверяем что нам выдал grub.cfg и выясняется нет названия пула в корне
Код: выделить все
linux   /@/kernel-genkernel-x86_64-4.5.0-gentoo root=ZFS=/funtoo/root ro
теперь спокойно можно грузиться с нового пула -выходим с chroot .
дописываем
Код: выделить все
 linux   /@/kernel-genkernel-x86_64-4.5.0-gentoo root=ZFS=tank/funtoo/root ro

Разметка дисков:
Код: выделить все
                             Disk Drive: /dev/sda
                           Size: 976773168, 465.8 GiB

Part. #     Size        Partition Type            Partition Name
----------------------------------------------------------------
            1007.0 KiB  free space
   1        1000.0 KiB  BIOS boot partition --ef02
            24.0 KiB    free space     
   2        171.0 MiB   Solaris boot             --be00   
   3        465.6 GiB   Solaris root              --bf00

                              Disk Drive: /dev/sdb
                          Size: 1250263728, 596.2 GiB

Part. #     Size        Partition Type            Partition Name
----------------------------------------------------------------
            3.0 KiB     free space
   1        1000.0 KiB  BIOS boot partition
   2        170.9 MiB   Solaris boot
   4        465.6 GiB   Solaris root
   3        130.4 GiB   Solaris root              disk2



Отключаем питание с одного из дисков нового пула и проверим и загрузку с оставшегося-всё грузится данные на месте.Подключаем обратно-пул в порядке -всё online.
Код: выделить все
shell tupoll # zpool status
  pool: boot
 state: ONLINE
status: The pool is formatted using a legacy on-disk format.  The pool can
   still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'.  Once this is done, the
   pool will no longer be accessible on software that does not support
   feature flags.
  scan: resilvered 24K in 0h0m with 0 errors on Wed Apr 20 16:40:50 2016
config:

   NAME        STATE     READ WRITE CKSUM
   boot        ONLINE       0     0     0
     mirror-0  ONLINE       0     0     0
       sda2    ONLINE       0     0     0
       sdb2    ONLINE       0     0     0

errors: No known data errors

  pool: tank
 state: ONLINE
  scan: resilvered 5,42M in 0h0m with 0 errors on Wed Apr 20 16:40:51 2016
config:

   NAME        STATE     READ WRITE CKSUM
   tank        ONLINE       0     0     0
     mirror-0  ONLINE       0     0     0
       sda3    ONLINE       0     0     0
       sdb4    ONLINE       0     0     0

errors: No known data errors
zfs list
Код: выделить все
shell tupoll # zfs list
NAME                            USED  AVAIL  REFER  MOUNTPOINT
boot                           18,7M   109M  18,2M  /boot
tank                           89,4G   360G    96K  none
tank/HOME                      82,0G   360G    96K  none
tank/HOME/home                  168K   360G    96K  /home
tank/HOME/tupoll               82,0G   360G  81,9G  /home/tupoll
tank/funtoo                    4,80G   360G    96K  none
tank/funtoo/portage            2,67G   360G  1,21G  /usr/portage
tank/funtoo/portage/distfiles  1,26G   360G  1,26G  /usr/portage/distfiles
tank/funtoo/portage/packages    104K   360G    96K  /usr/portage/packages
tank/funtoo/root               1,53G   360G  1,49G  /
tank/funtoo/src                 608M   360G   607M  /usr/src
tank/prog                       554M   360G    96K  none
tank/prog/share                 554M   360G   541M  /usr/share
tank/swap                      2,13G   362G    64K  -
Правильный линукс-BSD.
Аватар пользователя
tupoll
Уважаемый участник
Уважаемый участник
 
Автор темы
Сообщений: 235
Фото: 3
Стаж: 3 года 6 месяцев 28 дней
Откуда: Vladivostok
Благодарил (а): 31 раз.
Поблагодарили: 44 раз.

ZFSonlinux-загрузчик .

Спонсор

Спонсор
 

Вернуться в ОСТАЛЬНЫЕ ДИСТРИБУТИВЫ

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron