Коротко о главном
ZFS объединяет файловую систему и управление дисками. Он умеет проверять целостность данных, делать дешёвые снапшоты, отправлять наборы данных на другой сервер и объединять диски в пулы. Для домашнего сервера это мощный, но требовательный инструмент.
ZFS защищает от тихих ошибок чтения благодаря контрольным суммам, упрощает резервное копирование через send/receive и даёт гибкое управление квотами. Взамен требует памяти, понимания ARC и осторожности при расширении пула.
Большинство проблем с ZFS сводится к нескольким повторяющимся ошибкам. Ниже — что проверить в первую очередь и как не усугубить ситуацию.
Почему это происходит
Ошибки почти всегда связаны с контекстом: другая версия пакета, не тот пользователь, устаревший конфиг или команда из руководства для другой системы. ZFS не исключение. Поэтому сначала фиксируем исходное состояние, затем меняем одну вещь за раз.
Типичные ошибки
Ниже — сбои, которые встречаются чаще всего. Перед исправлением сохраните текущие конфиги и запишите, какие изменения вносите: так проще откатиться.
1. Пул не импортируется после переустановки
Проверьте zpool import без аргументов и импортируйте по имени. Не создавайте новый пул на тех же дисках.
2. Не хватает памяти
Ограничьте ARC через zfs_arc_max и проверьте, нет ли утечек. Не отключайте контрольные суммы ради экономии.
3. scrub находит ошибки
Смотрите zpool status -v, замените диск и выполните resilver. Не игнорируйте ошибки записи.
Как настроить правильно
Правильная последовательность проста: проверить версию и зависимости, сделать резервную копию конфигурации, внести минимальное изменение, проверить логи и только потом двигаться дальше.
Установка
В Debian, Ubuntu и Linux Mint используется пакетный менеджер APT:
sudo apt install zfsutils-linux
В Fedora и RHEL-совместимых системах пакет ставится через DNF:
sudo dnf install zfs-release && sudo dnf install zfs
В Arch Linux и производных пакет доступен в официальных репозиториях:
sudo pacman -S zfs-utils
1. Создайте пул на тестовых дисках
Не экспериментируйте на дисках с данными. Для зеркала нужны два устройства, для raidz — минимум три. Проверьте имена через lsblk.
lsblk -o NAME,SIZE,MODEL
sudo zpool create tank mirror /dev/sdb /dev/sdc
2. Создайте набор данных
Наборы данных позволяют задавать квоты, сжатие и снапшоты независимо. Включайте compression=zstd для экономии места.
sudo zfs create -o compression=zstd tank/data
zfs list
3. Сделайте снапшот
Снапшот фиксирует состояние мгновенно и почти не потребляет место, пока данные не изменились.
sudo zfs snapshot tank/data@before-update
zfs list -t snapshot
4. Отправьте копию на другой носитель
send/receive передаёт поток изменений. Для инкрементальной копии укажите базовый снапшот.
sudo zfs send tank/data@before-update | ssh backup zfs receive backup/data
Рабочий конфиг
Начните с минимального рабочего варианта. Не копируйте большой конфиг целиком: добавляйте параметры по одному и проверяйте результат после каждого изменения.
# /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=4294967296
Практические советы
Эти рекомендации проверены на повседневных задачах. Начните с тех, которые закрывают вашу текущую боль, а не со всего списка сразу.
Совет 1. Не заполняйте пул выше 80%: производительность и фрагментация ухудшают
Не заполняйте пул выше 80%: производительность и фрагментация ухудшаются.
Совет 2. Для домашнего сервера достаточно 8–16 ГБ памяти, но ARC любит больше.
Для домашнего сервера достаточно 8–16 ГБ памяти, но ARC любит больше.
Совет 3. Планируйте расширение пула заранее: не все конфигурации просто добавит
Планируйте расширение пула заранее: не все конфигурации просто добавить.
Совет 4. Снапшоты не заменяют резервную копию: они лежат на тех же дисках.
Снапшоты не заменяют резервную копию: они лежат на тех же дисках.
Профилактика
Большинство повторяющихся сбоев с ZFS связано не с ошибкой в самой программе, а с окружением: обновились зависимости, изменился путь, закончилось место или другой администратор поправил конфиг. Поэтому профилактика начинается с фиксации исходного состояния.
Сохраните рабочий конфиг в систему контроля версий, добавьте короткий комментарий о том, зачем нужен каждый нестандартный параметр, и запишите команду проверки. Через месяц вы скажете себе спасибо: восстановить логику по чужому файлу без пояснений почти невозможно.
Чек-лист
- Версия пакета и конфигурация зафиксированы и доступны для сравнения.
- Есть автоматическая проверка синтаксиса перед перезапуском службы.
- Журналы ротуются, а диск не заполняется ими за неделю.
- Изменения проходят через тестовый стенд, а не сразу на рабочий сервер.
Итог
Большинство ошибок с ZFS лечится не переустановкой, а проверкой конфигурации, логов и прав доступа. Действуйте по одному изменению за раз — и причина быстро найдётся.