Содержание

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 (например, процесс usync). Перед отмонтированием их тоже нужно остановить.

Import pool

:!: Если массив вставить в другой компьютер, у которого был массив с таким же именем, zfs зависнет.

Чтобы этого избежать, удалите файл zpool.cache и перезагрузитесь:

mv /etc/zfs/zpool.cache ~/

Примонтировать после того, как диски вставлены в другой компьютер:

zpool import <id>
zpool list

/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

solution

/etc/modprobe.d/zfs.conf
options zfs zfs_autoimport_disable=0

Performance

zpool iostat -lv
zpool iostat -vq 1