Коротко о главном
ZFS объединяет файловую систему и управление дисками. Он умеет проверять целостность данных, делать дешёвые снапшоты, отправлять наборы данных на другой сервер и объединять диски в пулы. Для домашнего сервера это мощный, но требовательный инструмент.
ZFS защищает от тихих ошибок чтения благодаря контрольным суммам, упрощает резервное копирование через send/receive и даёт гибкое управление квотами. Взамен требует памяти, понимания ARC и осторожности при расширении пула.
Этот материал — быстрый старт по ZFS. За 15 минут вы получите рабочую конфигурацию и поймёте, куда смотреть дальше.
Установка
В 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
Шпаргалка по командам
- Создайте пул на тестовых дисках: lsblk -o NAME,SIZE,MODEL
- Создайте набор данных: sudo zfs create -o compression=zstd tank/data
- Сделайте снапшот: sudo zfs snapshot tank/data@before-update
- Отправьте копию на другой носитель: sudo zfs send tank/data@before-update | ssh backup zfs receive backup/data
- Проверьте состояние: sudo zpool scrub tank
Практические советы
Эти рекомендации проверены на повседневных задачах. Начните с тех, которые закрывают вашу текущую боль, а не со всего списка сразу.
Совет 1. Не заполняйте пул выше 80%: производительность и фрагментация ухудшают
Не заполняйте пул выше 80%: производительность и фрагментация ухудшаются.
Совет 2. Для домашнего сервера достаточно 8–16 ГБ памяти, но ARC любит больше.
Для домашнего сервера достаточно 8–16 ГБ памяти, но ARC любит больше.
Совет 3. Планируйте расширение пула заранее: не все конфигурации просто добавит
Планируйте расширение пула заранее: не все конфигурации просто добавить.
Совет 4. Снапшоты не заменяют резервную копию: они лежат на тех же дисках.
Снапшоты не заменяют резервную копию: они лежат на тех же дисках.
Что дальше
Быстрый старт не означает «настроить навсегда». Когда базовый сценарий заработает, вернитесь к конфигурации и проверьте, что она переживёт перезагрузку: файлы на месте, служба включена в автозагрузку, путь к данным не зависит от текущего каталога.
Дальше имеет смысл разобраться с резервной копией и журналами ZFS. Это не самая заметная часть работы, но именно она превращает эксперимент в инструмент, которым можно пользоваться каждый день.
Чек-лист
- Команды из шпаргалки выполняются без ошибок после перезагрузки.
- Пароли и токены не хранятся в истории команд и конфигурации в открытом виде.
- Понятно, где смотреть логи и что считать признаком проблемы.
- Есть копия конфигурации, которую можно восстановить.
Короткие ответы на частые вопросы
Нужно ли запускать всё от root?
Нет. Права root нужны для установки пакетов и изменения системных файлов, но сама программа и её данные должны принадлежать отдельному пользователю. Постоянная работа под root превращает любую ошибку в критическую.
Что делать, если после перезагрузки ничего не работает?
Сначала проверьте, включена ли служба в автозагрузку и не изменился ли путь к конфигурации. Посмотрите журнал текущей загрузки: он почти всегда указывает на отсутствующий файл, неверные права или занятый порт.
Как обновлять без сюрпризов?
Читайте примечания к версии, делайте резервную копию конфигурации и проверяйте обновление на тестовом стенде. Не обновляйтесь в пятницу вечером перед выходными: время на откат должно быть частью плана.
Итог
Этого достаточно, чтобы начать. Дальше углубляйтесь по мере задач: документация ZFS станет понятнее, когда появится реальный сценарий использования.