Переход с BTRFS на ZFS on Linux
Уничтожение массива BTRFS
Смотрим какие диски находятся в массиве:
btrfs filesystem show
Label: none uuid: 68b18a28-708b-4f86-bd92-e97681f0e266
Total devices 4 FS bytes used 63.90GiB
devid 1 size 232.89GiB used 232.88GiB path /dev/sdb
devid 2 size 232.89GiB used 232.88GiB path /dev/sdc
devid 3 size 232.89GiB used 232.88GiB path /dev/sdd
devid 4 size 232.89GiB used 232.88GiB path /dev/sde
Размонтируем раздел и удаляем массив:
umount /opt
wipefs -t btrfs /dev/sdb /dev/sdc /dev/sdd /dev/sde
/dev/sdb: 8 bytes were erased at offset 0x00010040 (btrfs): 5f 42 48 52 66 53 5f 4d
/dev/sdc: 8 bytes were erased at offset 0x00010040 (btrfs): 5f 42 48 52 66 53 5f 4d
/dev/sdd: 8 bytes were erased at offset 0x00010040 (btrfs): 5f 42 48 52 66 53 5f 4d
/dev/sde: 8 bytes were erased at offset 0x00010040 (btrfs): 5f 42 48 52 66 53 5f 4d
При замене дисков выполняем "echo 1 > /sys/block/sdX/device/delete" поочередено. После того, как на горячую вставите диск он автоматически определится без небходимости сканирования SATA порта.
Установка ZFS
Теперь удаляем BTRFS и устанавливаем ZFS on Linux:
yum remove btrfs-progs
cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
yum install http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm
gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux
yum install zfs
Ну как же без траблов. Во время установки вылезла следующая ошибка хотя kernel-devel был установлен:
Loading new zfs-0.7.12 DKMS files...
Building for 3.10.0-957.21.3.el7.x86_64
Building initial module for 3.10.0-957.21.3.el7.x86_64
configure: error:
*** Please make sure the kmod spl devel <kernel> package for your
*** distribution is installed then try again. If that fails you
*** can specify the location of the spl objects with the
*** '--with-spl-obj=PATH' option. Failed to find spl_config.h in
*** any of the following:
/usr/src/spl-0.7.12/3.10.0-957.21.3.el7.x86_64
/usr/src/spl-0.7.12
Error! Bad return status for module build on kernel: 3.10.0-957.21.3.el7.x86_64 (x86_64)
Consult /var/lib/dkms/zfs/0.7.12/build/make.log for more information.
warning: %post(zfs-dkms-0.7.12-1.el7_4.noarch) scriptlet failed, exit status 10
Non-fatal POSTIN scriptlet failure in rpm package zfs-dkms-0.7.12-1.el7_4.noarch
После перезагрузки "lsmod|grep zfs" не обнаружил никаких модулей. Вообще очень странная ошибка. В своей практике впервые встречаю такое. Не долго думая обновляем ОС и пробуем переустановить:
yum upgrade
reboot
cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
yum remove zfs zfs-kmod spl spl-kmod libzfs2 libnvpair1 libuutil1 libzpool2 zfs-release
yum install http://download.zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm
yum clean metadata
yum install zfs
reboot
lsmod|grep zfs
zfs 3564425 3
zunicode 331170 1 zfs
zavl 15236 1 zfs
icp 270148 1 zfs
zcommon 73440 1 zfs
znvpair 89131 2 zfs,zcommon
spl 102412 4 icp,zfs,zcommon,znvpair
Вроде обновление помогло. Все установилось без ошибок и модуль загрузился.
Создаем RAID массив
При создании пула ZFS по-умолчанию монтирует раздел в root. Создадим RAID0+1 и примонтируем в /opt. Пул назовем data:
zpool create data mirror /dev/sdb /dev/sdc mirror /dev/sdd /dev/sde
zfs get mountpoint data
NAME PROPERTY VALUE SOURCE
data mountpoint /data default
zfs set mountpoint=/opt data
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl_ethan-root 50G 28G 23G 56% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 9.8M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda1 1014M 320M 695M 32% /boot
/dev/mapper/cl_ethan-home 165G 83G 82G 51% /home
tmpfs 3.2G 0 3.2G 0% /run/user/1000
data 431G 128K 431G 1% /opt
systemctl enable zfs.target
Восстанавливаем данные, перезагружаем сервер и проверяем все ли данные на месте и все ли автоматически примонтировалось.
Как видите ничего сверхестественного и вполне себе выполнимо. Пусть статья и адаптирована изначально под CentOS, но рецепт подойдет и для любого другого дистрибутива Linux.