====== ZFS ======
На сегодняшний день это лучшее решение для хранения данных. Среди удобств "прозрачная" поддержка сжатия, зеркалирование, простота администрирования и надежность (по сравнению с btrfs).
===== Зависание ZFS =====
В некоторых случаях ZFS может зависнуть. При этом команды zpool и zfs подвисают по вводу-выводу и не реагируют на Ctrl-C.
В некоторых случаях помогает удаление кеша ZFS-пулов с последующей перезагрузкой и повторным импортом пула.
mv /etc/zfs/zpool.cache ~/
reboot
# A fEW MoMEntS lATeR ...
zpool import tank
===== Export pool ====
Отмонтировать все диски:
zpool export tank
Если отмонтировать не удается, проверьте, какие процессы имеют открытые файлы на дисках из пула и завершите эти процессы.
Например:
> zpool export tank
cannot unmount '/data': unmount failed
> lsof /data/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 1350 root 6w REG 0,45 61420859 7766004 /data/easydaq.log
> service xinetd stop
> zpool export tank
:!: Некоторые пользовательские сервисы тоже могут мешать отмонтировать /data (например, процесс [[docs:daq:usync|usync]]). Перед отмонтированием их тоже нужно остановить.
===== Import pool ====
:!: Если массив вставить в другой компьютер, у которого был массив с таким же именем, zfs зависнет.
Чтобы этого избежать, удалите файл zpool.cache и перезагрузитесь:
mv /etc/zfs/zpool.cache ~/
Примонтировать после того, как диски вставлены в другой компьютер:
zpool import
zpool list
[[https://openzfs.github.io/openzfs-docs/Project%20and%20Community/FAQ.html#the-etc-zfs-zpool-cache-file|/etc/zfs/zpool.cache]]
===== Install =====
apt install -t buster-backports zfs-dkms zfsutils-linux
modprobe zfs
===== Create =====
Пул data будет автоматом смонтирован в папку /data.
При использовании диска целиком он будет отформатирован автоматически (с запасом в 8МБ на неразмеченное пространство).
for a in x y; do wipefs /dev/sd${a}1 -a ; done
zpool create -o ashift=13 -O compression=lz4 tank mirror /dev/sd{x,y}1
# добавляем еще два диска, получится аналог raid10
zpool add tank mirror /dev/sd{v,w}1
Расшариваем по сети.
zfs create -o mountpoint=/data tank/data
zfs set sharenfs="rw=172.22.0.0/16,root_squash,ro=*.ihep.su" tank/data
zfs set xattr=sa tank/data
zfs set acltype=posixacl tank/data
zfs set atime=off tank/data
zfs set relatime=off tank/data
zfs share tank/data
exportfs -v
zfs set compression=lz4 tank/data
zpool set autoexpand=on tank
===== No pools after reboot =====
[[https://superuser.com/questions/1248622/zfs-pool-disappears-after-reboot-on-debian-8
|solution]]
options zfs zfs_autoimport_disable=0
===== Performance =====
zpool iostat -lv
zpool iostat -vq 1