Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

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

Ответить
Аватара пользователя
tupoll
Уважаемый участник
Уважаемый участник
Сообщения: 231
Зарегистрирован: 19 янв 2015, 07:30
Откуда: Vladivostok

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

Сообщение tupoll »

Пул 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.
Ответить

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