Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
howto:sysadmin:zfs [2019/11/08 18:20] sergey |
howto:sysadmin:zfs [2024/11/03 10:50] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== ZFS ====== | ====== 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 | ||
+ | | ||
+ | |||
+ | Если отмонтировать не удается, проверьте, какие процессы имеют открытые файлы на дисках из пула и завершите эти процессы. | ||
+ | |||
+ | Например: | ||
+ | <code bash> | ||
+ | > 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 | ||
+ | </code> | ||
+ | |||
+ | :!: Некоторые пользовательские сервисы тоже могут мешать отмонтировать /data (например, процесс [[docs:daq:usync|usync]]). Перед отмонтированием их тоже нужно остановить. | ||
+ | ===== Import pool ==== | ||
+ | :!: Если массив вставить в другой компьютер, у которого был массив с таким же именем, zfs зависнет. | ||
+ | |||
+ | Чтобы этого избежать, удалите файл zpool.cache и перезагрузитесь: | ||
+ | mv /etc/zfs/zpool.cache ~/ | ||
+ | |||
+ | |||
+ | Примонтировать после того, как диски вставлены в другой компьютер: | ||
+ | zpool import <id> | ||
+ | zpool list | ||
+ | |||
+ | |||
+ | [[https://openzfs.github.io/openzfs-docs/Project%20and%20Community/FAQ.html#the-etc-zfs-zpool-cache-file|/etc/zfs/zpool.cache]] | ||
+ | ===== Install ===== | ||
<code> | <code> | ||
apt install -t buster-backports zfs-dkms zfsutils-linux | apt install -t buster-backports zfs-dkms zfsutils-linux | ||
modprobe zfs | modprobe zfs | ||
+ | </code> | ||
- | for a in c d; do wipefs /dev/sd${a}1 -a ; done | + | ===== Create ===== |
- | zpool create tank mirror /dev/sdc1 /dev/sdd1 | + | Пул data будет автоматом смонтирован в папку /data. |
+ | При использовании диска целиком он будет отформатирован автоматически (с запасом в 8МБ на неразмеченное пространство). | ||
+ | |||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | Расшариваем по сети. | ||
+ | <code> | ||
zfs create -o mountpoint=/data tank/data | 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 sharenfs="rw=172.22.0.0/16,root_squash,ro=*.ihep.su" tank/data | ||
Строка 21: | Строка 75: | ||
zpool set autoexpand=on tank | zpool set autoexpand=on tank | ||
</code> | </code> | ||
+ | |||
+ | ===== No pools after reboot ===== | ||
+ | [[https://superuser.com/questions/1248622/zfs-pool-disappears-after-reboot-on-debian-8 | ||
+ | |solution]] | ||
+ | |||
+ | <file conf /etc/modprobe.d/zfs.conf> | ||
+ | options zfs zfs_autoimport_disable=0 | ||
+ | </file> | ||
+ | |||
+ | ===== Performance ===== | ||
+ | zpool iostat -lv | ||
+ | zpool iostat -vq 1 | ||
+ | |||
+ |