Гид по технологиям

Установка и настройка ZFS на Debian 8.1 (Jessie)

6 min read Хранилище Обновлено 22 Nov 2025
Установка и настройка ZFS на Debian 8.1
Установка и настройка ZFS на Debian 8.1

Краткое введение

ZFS сочетает возможности файловой системы и управления томами. Основные возможности ZFS:

  • Защита отsilent data corruption (контроль целостности и автоматический ремонт).
  • Поддержка больших объёмов хранения.
  • Эффективная сжатие данных и дедупликация (опционально).
  • Интеграция управления томами и файловой системой в единый интерфейс.
  • Снапшоты и копии на основе copy‑on‑write.
  • Непрерывная проверка целостности и автоматическое восстановление.
  • RAID‑Z (аналог RAID‑5/6) и родные ACL NFSv4.

Определение: ZFS — файловая система с встроенным менеджером томов и проверкой целостности каждой записи.

Важно: исходная реализация ZFS распространяется под CDDL (Common Development and Distribution License).

Основные концепции ZFS

  • Целостность данных — контрольные суммы для каждого блока.
  • Простое администрирование — основные команды: zfs и zpool.
  • Операции можно выполнять на работающей (online) файловой системе.

Примечание: для полного обзора функций можно обратиться в документацию и статьи по ZFS.

Требования

  • Debian 8 (Jessie) с 64‑битным ядром (amd64).
  • Права root.

Важно: официальная поддержка zfsonlinux ориентирована на amd64 (x86_64).

Шаг 1 — Добавление репозитория zfsonlinux и обновление системы

Добавьте пакет zfsonlinux в систему. Это создаст файлы /etc/apt/sources.list.d/zfsonlinux.list и /etc/apt/trusted.gpg.d/zfsonlinux.gpg. После этого ZFS можно устанавливать через apt и получать обновления через apt‑get update && apt‑get upgrade.

Выполните на сервере с доступом по SSH и правами root следующие команды:

# uname -a
Linux debian-zfs 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux
# wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_6_all.deb
# dpkg -i zfsonlinux_6_all.deb
# apt-get update

Шаг 2 — Установка пакетов ZFS

Установите зависимости и сам пакет debian-zfs. Процесс может занять время. После установки перезагрузите сервер.

# apt-get install lsb-release
# apt-get install debian-zfs
# shutdown -r now

Шаг 3 — Создание и конфигурация пулов (zpools)

Проверьте установку после перезагрузки:

# dpkg -l | grep zfs
ii  debian-zfs                     7~jessie                    amd64        Native ZFS filesystem metapackage for Debian.
ii  libzfs2                        0.6.5.2-2                   amd64        Native ZFS filesystem library for Linux
ii  zfs-dkms                       0.6.5.2-2                   all          Native ZFS filesystem kernel modules for Linux
ii  zfsonlinux                     6                           all          archive.zfsonlinux.org trust package
ii  zfsutils                       0.6.5.2-2                   amd64        command-line tools to manage ZFS filesystems

Если пакет установлен, можно создавать пулы.

Пример: у сервера добавлено пять дисков по 2 ГБ: /dev/sdb.. /dev/sdg. /dev/sda занят под систему.

# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5  /dev/sdb  /dev/sdc  /dev/sdd  /dev/sde  /dev/sdf  /dev/sdg

Создание простого пула (raid0 / stripe)

# zpool list
no pools available

# zpool create -f pool0 /dev/sdb
# zpool list
NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
pool0  1.98G    64K  1.98G         -     0%     0%  1.00x  ONLINE  -

Команда показала, что создан пул pool0 размером ~2 ГБ.

Создание зеркала (raid1)

# zpool create -f pool1 mirror /dev/sdc /dev/sdd
# zpool list
NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
pool0  1.98G    64K  1.98G         -     0%     0%  1.00x  ONLINE  -
pool1  1.98G    64K  1.98G         -     0%     0%  1.00x  ONLINE  -

Теперь есть два пула: pool0 (stripe) и pool1 (mirror).

Проверка статуса пулов:

# zpool status
  pool: pool0
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        pool0       ONLINE       0     0     0
          sdb       ONLINE       0     0     0

errors: No known data errors

  pool: pool1
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        pool1       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0

errors: No known data errors

Создание RAID‑Z (RAID‑Z1)

RAID‑Z — это схема распределения данных и паритета, аналогичная RAID‑5, но с динамической шириной полосы. Минимум 3 диска. В случае отказа одного диска ZFS восстановит данные по паритету.

# zpool create -f poolz1 raidz sde sdf sdg
# zpool list poolz1
NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
poolz1  5.94G   117K  5.94G         -     0%     0%  1.00x  ONLINE  -

# zpool status poolz1
  pool: poolz1
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        poolz1      ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            sde     ONLINE       0     0     0
            sdf     ONLINE       0     0     0
            sdg     ONLINE       0     0     0

errors: No known data errors

# df -h /poolz1
Filesystem      Size  Used Avail Use% Mounted on
poolz1          3.9G     0  3.9G   0% /poolz1

Обратите внимание: у пула ~6 ГБ физически, но df показывает ~4 ГБ доступного пространства. Это связано с тем, что часть места используется под паритет.

Удаление пулов и создание RAID‑Z2 (двойной паритет, аналог RAID‑6)

# zpool list
NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
pool0   1.98G    64K  1.98G         -     0%     0%  1.00x  ONLINE  -
pool1   1.98G    64K  1.98G         -     0%     0%  1.00x  ONLINE  -
poolz1  5.94G   117K  5.94G         -     0%     0%  1.00x  ONLINE  -

# zpool destroy pool0
# zpool destroy pool1
# zpool destroy poolz1
# zpool list
no pools available

# zpool create poolz2 raidz2 sdb sdc sdd sde
# zpool list
NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
poolz2  7.94G   135K  7.94G         -     0%     0%  1.00x  ONLINE  -

# df -h /poolz2
Filesystem      Size  Used Avail Use% Mounted on
poolz2          3.9G     0  3.9G   0% /poolz2

# zpool status poolz2
  pool: poolz2
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        poolz2      ONLINE       0     0     0
          raidz2-0  ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0
            sde     ONLINE       0     0     0

errors: No known data errors

Как видно, RAID‑Z2 даёт повышенную отказоустойчивость: параллельно хранятся две копии паритета.

Шаг 4 — Симуляция отказа диска и восстановление

Создадим тестовый файл и проверим доступ к нему.

# echo "Test Only" > /poolz2/test.txt
# cat /poolz2/test.txt
Test Only

Перед симуляцией проверьте статус poolz2.

Симулируем отказ, записав случайные данные в /dev/sdb. После этого выполняем scrub и проверяем статус.

# dd if=/dev/urandom of=/dev/sdb bs=1024 count=20480
# zpool scrub poolz2
# zpool status
  pool: poolz2
 state: ONLINE
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-9P
  scan: scrub repaired 17K in 0h0m with 0 errors on Tue Dec  8 22:37:49 2015
config:

        NAME        STATE     READ WRITE CKSUM
        poolz2      ONLINE       0     0     0
          raidz2-0  ONLINE       0     0     0
            sdb     ONLINE       0     0    25
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0
            sde     ONLINE       0     0     0

errors: No known data errors

Далее заменим /dev/sdb на /dev/sdf и запустим восстановление (replace → resilver):

# zpool replace poolz2 sdb sdf
# zpool status
  pool: poolz2
 state: ONLINE
  scan: resilvered 49.5K in 0h0m with 0 errors on Tue Dec  8 22:43:35 2015
config:

        NAME        STATE     READ WRITE CKSUM
        poolz2      ONLINE       0     0     0
          raidz2-0  ONLINE       0     0     0
            sdf     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0
            sde     ONLINE       0     0     0

errors: No known data errors

Проверим доступность файла:

# cat /poolz2/test.txt
Test Only

Вывод показывает, что ZFS восстановил данные и файл доступен.

Шаг 5 — Создание и настройка файловой системы ZFS

ZFS автоматически создаёт файловую систему с именем пула. Посмотрим существующие файловые системы:

# zfs list
NAME     USED  AVAIL  REFER  MOUNTPOINT
poolz2   105K  3.83G  26.1K  /poolz2

Создадим дополнительную файловую систему poolz2/tank:

# zfs create poolz2/tank
# zfs list
NAME          USED  AVAIL  REFER  MOUNTPOINT
poolz2        132K  3.83G  26.1K  /poolz2
poolz2/tank  25.4K  3.83G  25.4K  /poolz2/tank

# df -h | grep poolz2
poolz2          3.9G  128K  3.9G   1% /poolz2
poolz2/tank     3.9G  128K  3.9G   1% /poolz2/tank

Создание пользовательской точки монтирования:

# zfs create poolz2/data -o mountpoint=/data
# df -h | grep poolz2
poolz2          3.9G     0  3.9G   0% /poolz2
poolz2/tank     3.9G     0  3.9G   0% /poolz2/tank
poolz2/data     3.9G     0  3.9G   0% /data

Изменение mountpoint у существующей FS:

# zfs set mountpoint=/tank poolz2/tank
# df -h | grep poolz2
poolz2          3.9G     0  3.9G   0% /poolz2
poolz2/data     3.9G     0  3.9G   0% /data
poolz2/tank     3.9G     0  3.9G   0% /tank

Монтирование и размонтирование:

# zfs unmount /data
# df -h | grep poolz2
poolz2          3.9G     0  3.9G   0% /poolz2
poolz2/tank     3.9G     0  3.9G   0% /tank

# zfs mount poolz2/data
# df -h | grep poolz2
poolz2          3.9G     0  3.9G   0% /poolz2
poolz2/tank     3.9G     0  3.9G   0% /tank
poolz2/data     3.9G     0  3.9G   0% /data

Удаление файловой системы:

# zfs destroy poolz2/data
# zfs list
NAME          USED  AVAIL  REFER  MOUNTPOINT
poolz2        152K  3.83G  26.1K  /poolz2
poolz2/tank  25.4K  3.83G  25.4K  /tank

Файловая система /data удалена.

Полезные советы и шпаргалка

Шпаргалка команд (cheat sheet):

# Просмотр пулов
zpool list
zpool status

# Создать пул
zpool create poolname 

# Удалить пул
zpool destroy poolname

# Заменить диск
zpool replace poolname olddev newdev

# Запустить scrub (проверка целостности)
zpool scrub poolname

# Создать файловую систему
zfs create poolname/fsname

# Настроить mountpoint
zfs set mountpoint=/path poolname/fsname

# Монтировать/отмонтировать
zfs mount poolname/fsname
zfs unmount poolname/fsname

# Снапшот
zfs snapshot poolname/fsname@label
# Восстановление из снапшота
zfs rollback poolname/fsname@label

Чек‑лист по ролям

Для администратора перед развёртыванием:

  • Проверить совместимость аппаратуры и ядра.
  • Подготовить отдельные диски для ZFS (без разделов) или использовать разделы по соглашению.
  • Настроить резервные копии перед стиранием/разрушением пулов.
  • Настроить мониторинг zpool status и alerting.

Для оператора при обслуживании:

  • Регулярно запускать zpool scrub (например, ежемесячно).
  • Следить за SMART‑статусом дисков.
  • Планировать замену дисков по предиктивной ошибке.

Когда ZFS может не подойти

  • Ограничения лицензирования: CDDL несовместима с GPL в ядре; некоторые дистрибутивы не включают ZFS по умолчанию.
  • Сценарии с очень малыми дисками/встроенными системами с ограниченной RAM — ZFS ожидает достаточного объёма памяти для кешей (ARC).
  • Если требуется родная поддержка LVM+ext4 с точным workflow — возможно, проще использовать стандартный стек.

Альтернативы

  • Btrfs — современная копирующаяся FS с RAID, снапшотами и сжатие; активно развивается, но у Btrfs другое поведение при определённых отказах.
  • LVM + XFS/ext4 — проверенное решение для простых задач, но без встроенной проверки целостности блоков и паритета.

Ментальные модели и эвристики

  • Пулы ZFS = набор устройств + политика (mirror, raidz, raidz2). Подумайте о vdev как о «столбце отказоустойчивости».
  • Сжатие и дедупликация — увеличивают нагрузку на CPU и память; включайте по необходимости.
  • Scrub = профилактическая проверка целостности; выполняйте регулярно.

Мини‑методология внедрения ZFS в проект

  1. Оцените требования по отказоустойчивости и IOPS.
  2. Выберите vdev‑политику (mirror для IOPS/быстрой реконструкции, raidz/raidz2 для плотной ёмкости).
  3. Выделите RAM под ARC и при необходимости настройте ZFS cache.
  4. Настройте мониторинг и план регулярных scrub.
  5. Тестируйте процедуру замены диска и восстановление данных в контролируемой среде.

Безопасность, резервное копирование и соответствие

  • ZFS обеспечивает целостность, но не заменяет резервное копирование. Храните внешние бэкапы и снапшоты вне основного пула.
  • Для GDPR/конфиденциальных данных применяйте шифрование на уровне диска или используйте ZFS‑скрипты с контейнеризацией и управлением доступом.
  • Настройте права доступа и NFSv4 ACL при экспорте через сеть.

Критерии приёмки

  • Пулы создаются и отображаются в zpool list.
  • Scrub завершился без ошибок.
  • Замена диска отрабатывает: resilver проходит успешно, данные доступны.
  • Файловые системы монтируются в ожидаемые точки и корректно монтируются после перезагрузки.

Краткий глоссарий (1‑строчно)

  • zpool — логический пул хранения, объединяющий устройства в vdev.
  • vdev — виртуальное устройство, формирующееся из дисков (mirror, raidz).
  • resilver — процесс восстановления данных на заменённый диск.
  • scrub — проверка целостности данных по контрольным суммам.
  • ARC — Adaptive Replacement Cache, основной кеш ZFS в памяти.

Заключение

ZFS меняет подход к хранению данных за счёт проверки целостности, встроенных снапшотов и гибких схем отказоустойчивости. На Debian 8.1 вы можете без больших усилий установить zfsonlinux, создать пулы разного типа, протестировать сценарии отказов и настроить файловые системы. ZFS подходит для серверов, где важны целостность и отказоустойчивость, но требует внимания к ресурсам (памяти) и планированию резервного копирования.

Резюме: начните с тестовой среды, прогоните scrub и замену диска, и только затем вводите ZFS в продакшн.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как устроить идеальную вечеринку для просмотра ТВ
Развлечения

Как устроить идеальную вечеринку для просмотра ТВ

Как распаковать несколько RAR‑файлов сразу
Инструменты

Как распаковать несколько RAR‑файлов сразу

Приватный просмотр в Linux: как и зачем
Приватность

Приватный просмотр в Linux: как и зачем

Windows 11 не видит iPod — способы исправить
Руководство

Windows 11 не видит iPod — способы исправить

PS5: как настроить игровые пресеты
Консоли

PS5: как настроить игровые пресеты

Как переключить камеру в Omegle на iPhone и Android
Руководство

Как переключить камеру в Omegle на iPhone и Android