Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
howto:sysadmin:zfs [2020/03/23 23:59] daq |
howto:sysadmin:zfs [2025/10/31 22:16] (текущий) sergey [Performance] |
||
|---|---|---|---|
| Строка 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 | ||
| Строка 26: | Строка 80: | ||
| |solution]] | |solution]] | ||
| - | <file /etc/modprobe.d/zfs.conf> | + | <file conf /etc/modprobe.d/zfs.conf> |
| options zfs zfs_autoimport_disable=0 | options zfs zfs_autoimport_disable=0 | ||
| </file> | </file> | ||
| + | |||
| + | ===== Performance ===== | ||
| + | zpool iostat -lv | ||
| + | zpool iostat -vq 1 | ||
| + | |||
| + | ===== Квота ===== | ||
| + | Можно ограничить максимальный размер раздела (датасета), установив квоту refquota, учитывающую размер снапшотов: | ||
| + | zfs set refquota=200G tank/home | ||
| + | | ||
| + | |||