Фильтры
Сбросить

ZFS: что это за файловая система, RAID-Z, пулы и настройка

Опубликовано 14.10.2026
14 мин
ZFS: что это за файловая система, RAID-Z, пулы и настройка  Изображение 1

ZFS — файловая система и менеджер хранения, который объединяет диски в пул, проверяет целостность данных и поддерживает снимки состояния. Она подходит для файловых серверов, хранилищ резервных копий и виртуализации, где важны обнаружение повреждений и удобное восстановление. Для небольшого сервера можно начать с зеркала, а для ёмкого хранилища на нескольких больших HDD — рассмотреть RAID-Z2. При этом ни избыточность, ни снимки ZFS не заменяют отдельную резервную копию.

Что такое ZFS

ZFS управляет дисками и файлами совместно: знает расположение блоков, проверяет их содержимое и при наличии исправной копии устраняет повреждение.

OpenZFS, TrueNAS и поддержка в Linux

Исторически ZFS возникла при поддержке компании Sun, использовалась в Solaris. Затем была портирована под FreeBSD, а затем уже и в Linux. Сейчас, после покупки Sun компанией Oracle, развивается как проприетарный механизм. Поэтому в Linux и FreeBSD используют OpenZFS — открытую реализацию ZFS. Она доступна в таких решениях, как Proxmox VE и служит основой хранения TrueNAS. Эти продукты добавляют собственные интерфейсы управления.

На 13 октября 2026 года последняя стабильная версия в списке релизов OpenZFS — 2.4.4. Дистрибутив может поставлять другую поддерживаемую версию.

В основное дерево ядра Linux ZFS не входит из-за несовместимости лицензий CDDL и GPLv2. Её подключают отдельным модулем.

Как устроена ZFS

Пул, vdev, датасеты и zvol

  1. Диски — физические HDD, SSD или выделенные разделы.
  2. vdev — отдельный диск либо группа дисков: зеркало, RAID-Z или dRAID. Здесь задаётся избыточность.
  3. Пул — общее хранилище из одного или нескольких vdev. Управление — через zpool.
  4. Датасеты — файловые системы внутри пула. Имеют собственные квоты, сжатие и снимки.
  5. zvol — блочный том внутри пула, например виртуальный диск для ВМ. Это альтернатива файловому датасету.

Датасеты делят свободное место пула без фиксированной нарезки на разделы. Например, для документов и резервных копий можно задать разные квоты. Физические разделы на дисках при этом допустимы.

Избыточность действует внутри vdev. Пул из двух зеркал переживёт отказ одного диска в каждом, но потеря целого зеркала означает потерю пула. Добавленный одиночный диск также становится точкой отказа.

Запись с копированием, контрольные суммы и scrub

Запись с копированием, Copy-on-Write, сохраняет изменённый блок в новом месте и затем обновляет ссылки. Структура остаётся согласованной, но последние асинхронные записи при сбое питания могут потеряться.

Контрольные суммы данных и метаданных позволяют обнаружить повреждение при чтении. ZFS восстанавливает блок из исправной копии зеркала или по чётности RAID-Z, если избыточности достаточно. На одиночном диске ошибку можно обнаружить, но исправить её часто неоткуда.

Scrub проверяет занятые блоки, включая давно не читавшиеся данные. Устройство пулов и механизм защиты описаны в документации OpenZFS.

RAID в ZFS: mirror, RAID-Z и dRAID

Дисковая полка Supermicro SC847E1C-R1K23JBOD, вид спереди

Дисковая полка Supermicro SC847E1C-R1K23JBOD, вид спереди. Источник: Supermicro.

Для SAS/SATA нужен прямой доступ через HBA — адаптер подключения дисков, обычно в режиме IT. Подходит и контроллер в полноценном режиме HBA. NVMe часто подключают напрямую к PCIe.

Аппаратный RAID под ZFS не создают: он скрывает диски и добавляет другой механизм восстановления. Для расширения используют дисковые полки JBOD с совместимым HBA. Пример полки — Dell PowerVault MD1400; совместимость с HBA и кабелями согласуют для конкретной комплектации. Выбор оборудования разобран в статье Сервер Молл «HBA или RAID-контроллер».

Схема Защита внутри одного vdev Где уместна
mirror Зеркало из N дисков выдерживает отказ N−1, пока остаётся исправная копия Виртуальные машины, базы данных, небольшие хранилища
RAID-Z1 Отказ одного диска Некритичные данные с отдельной копией и допустимым простоем
RAID-Z2 Отказ двух дисков Ёмкие файловые хранилища на HDD
RAID-Z3 Отказ трёх дисков Хранилища с повышенными требованиями к избыточности
dRAID Один, два или три отказа в зависимости от уровня чётности Большие массивы, где важна скорость восстановления на распределённый резерв

В dRAID резервное пространство распределено по накопителям: после отказа восстановление использует их совместно, а не упирается в запись на один запасной диск.

В RAID-Z чётность распределена по всем дискам. Постоянного «диска чётности» или «диска под контрольные суммы» нет: чётность восстанавливает данные, контрольные суммы проверяют целостность.

На одинаковых дисках ёмкость RAID-Z приблизительно равна (N − P) × объём диска, где P — уровень чётности. Служебные расходы и резерв свободного места дополнительно уменьшают доступный объём.

Зеркала обычно удобнее для мелких случайных обращений, RAID-Z — для экономии ёмкости. Чтение зеркала может использовать несколько дисков; формулы скорости классического RAID 5 нельзя переносить на RAID-Z.

RAID-Z1 или RAID-Z2: что выбрать

После отказа диска RAID-Z1 лишается запаса избыточности. Второй отказ в том же vdev во время восстановления делает данные недоступными; нечитаемый блок на оставшемся диске может привести к потере соответствующих данных.

Большие HDD при высокой нагрузке восстанавливаются долго. RAID-Z2 сохраняет защиту от ещё одного отказа, поэтому для рабочего файлового хранилища обычно предпочтительнее. RAID-Z1 выбирают с пониманием допустимого простоя и порядка восстановления из резервной копии.

С OpenZFS 2.3 RAID-Z можно расширить добавлением диска при поддержке функции пулом. RAID-Z1 не станет RAID-Z2, а старые блоки сохранят прежнее соотношение данных и чётности. Это влияет на доступную ёмкость. Уменьшение за счёт удаления диска не поддерживается.

Кэш и память: ARC, L2ARC и SLOG

Механизмы ускорения решают разные задачи:

  • ARC хранит востребованные данные и метаданные в оперативной памяти.
  • L2ARC — дополнительный кэш чтения на SSD. Полезен для повторного чтения данных, не помещающихся в ARC. Требует памяти для учёта блоков, запись не ускоряет.
  • SLOG — отдельное устройство журнала намерений ZIL. Может ускорить подтверждение синхронной записи — надёжного сохранения до продолжения работы приложения.

SLOG не ускоряет обычную асинхронную запись. Без него ZIL размещается в основном пуле. Для SLOG нужен накопитель с низкой задержкой и защитой от потери питания; для ответственных систем — зеркало. Отключение синхронной записи ради скорости меняет гарантии сохранности данных.


У ZFS, вопреки расхожим мифам, нет единого минимума 8 ГБ и обязательной нормы памяти на терабайт. Потребности зависят от приложений, активных данных и функций хранения. В руководстве TrueNAS минимум 8 ГБ относится ко всей системе TrueNAS.

ECC желательна, но не обязательна, это тоже миф: она исправляет часть ошибок ОЗУ. В конфигураторе Сервер Молл предусматривают память для приложений и ARC, поддержку ECC платой и процессором. L2ARC не заменяет достаточный объём ОЗУ.

Снапшоты, сжатие и дедупликация

Снапшоты, сжатие и дедупликация ZFS

Снимки состояния

Снапшот фиксирует состояние датасета или zvol. Он удерживает ссылки на существующие блоки без полного копирования данных. Место расходуется по мере изменений: старые блоки приходится сохранять ради снимка.

Снимок помогает вернуть файл или откатить датасет после обновления. Но он не переживёт потерю пула и не заменяет резервную копию.


Снимки передают на отдельное хранилище через zfs send и zfs receive, включая только изменения. Для согласованности базы данных или ВМ нужна остановка записи либо штатный механизм приложения.

Сжатие и удаление дубликатов

lz4 — быстрый начальный вариант сжатия с небольшой нагрузкой на процессор. zstd позволяет выбрать баланс между плотностью и вычислительными затратами. Архивы и видео сжимаются хуже текста.

Сжатие задаётся по датасетам и действует на новые записи. Старые блоки автоматически не пересжимаются. Результат показывает compressratio.

Дедупликация хранит одинаковые блоки в одном экземпляре, но требует ресурсов для таблицы их использования. Перед включением оценивают повторяемость данных, память и скорость хранения таблицы. Для небольшого сервера разумнее начать со сжатия без дедупликации.

Установка и настройка ZFS

Для пула данных важна комплектация: корзина, HBA, кабели, охлаждение и прямой доступ к дискам. При выборе стоечного сервера проверяют именно эти возможности, а не только название модели.

Установка зависит от операционной системы:

  • Ubuntu: включить репозиторий universe, выполнить sudo apt update и sudo apt install zfsutils-linux. Модуль для штатного ядра поставляется пакетами дистрибутива.
  • Debian: включить contrib, установить заголовки используемого ядра, затем sudo apt install zfs-dkms zfsutils-linux. При Secure Boot потребуется корректно подписать и разрешить загрузку модуля.
  • FreeBSD: ZFS входит в базовую систему; при необходимости модуль загружают командой kldload zfs, а службу включают через sysrc zfs_enable="YES".

Ниже показан пример работы с отдельным пулом данных в Linux. В FreeBSD используют другие имена устройств; порядок работы описан в официальном руководстве.

Создание пула и датасетов

Постоянные имена /dev/disk/by-id/ сопоставляют с серийными номерами дисков. В отличие от /dev/sda, они не зависят от порядка обнаружения устройств.

Пример создаёт зеркало из двух пустых дисков. DISK_A и DISK_B заменяют реальными идентификаторами. Создание пула меняет разметку выбранных накопителей и не сохраняет прежние данные.


sudo zpool create -o ashift=12 tank mirror \
   /dev/disk/by-id/DISK_A \
   /dev/disk/by-id/DISK_B

 sudo zfs create -o compression=lz4 \
   -o mountpoint=/srv/documents tank/documents
 sudo zfs set quota=500G tank/documents

 sudo zpool status tank
 sudo zfs list

ashift=12 соответствует сектору 4096 байт, включая диски 512e. Для большего физического сектора выбирают другое значение. У созданного vdev его нельзя просто изменить.

Подключение пула на другом сервере

Конфигурация хранится на дисках: пул можно перенести на совместимый сервер без исходного HBA.

На исходном сервере останавливают приложения и выполняют экспорт:

sudo zpool export tank

На новом сервере находят и подключают пул:

sudo zpool import -d /dev/disk/by-id
sudo zpool import -d /dev/disk/by-id tank

Новый узел должен поддерживать активные функции пула; зашифрованным датасетам нужны ключи. Одновременный импорт обычного пула на два сервера для записи недопустим.


Замена диска и восстановление

Проверка целостности

Проверка занятых блоков и её результат:

sudo zpool scrub tank
sudo zpool status -v tank

Scrub регулярно запускают в менее загруженные часы. При повторных ошибках исследуют диски, кабели, питание, HBA и память.

Замена накопителя

Неисправного участника находят через zpool status и сопоставляют с физическим накопителем. После подключения нового диска выполняют замену:

sudo zpool replace tank OLD_DEVICE \
   /dev/disk/by-id/NEW_DISK
 sudo zpool status tank

OLD_DEVICE — имя или числовой идентификатор из состояния пула, NEW_DISK — идентификатор нового пустого диска. Его доступная ёмкость должна быть достаточной для замены.

resilver восстанавливает данные на новом диске; до завершения запас защиты уменьшен. Scrub проверяет существующие блоки, resilver восстанавливает копии. Если избыточности уже недостаточно, нужна резервная копия.

Возврат к снимку

Создание снимка и последующий откат:

sudo zfs snapshot tank/documents@before-change
sudo zfs rollback tank/documents@before-change

Откат после остановки приложений отменяет все изменения после снимка. Для одного файла лучше скопировать только его. Более новые снимки блокируют обычный откат к старому; их принудительное удаление требует отдельного решения. Длительное хранение снимка не рекомендуется - требует места и влияет на производительность. Для длительного хранения точки отката лучше использовать Backup.

ZFS в Proxmox VE

Задняя панель Supermicro SC847E1C-R1K23JBOD

Задняя панель Supermicro SC847E1C-R1K23JBOD: дисковые отсеки, питание и подключения. Источник: Supermicro.

Установщик Proxmox VE предлагает ZFS с зеркалами, RAID-Z1, RAID-Z2 или RAID-Z3. Аппаратный RAID заранее не создают. Для ВМ используются zvol, для контейнеров — файловые датасеты.

Для новых установок с Proxmox VE 8.1 лимит ARC — 10% физической памяти, максимум 16 ГиБ. После обновления старой системы настройка может отличаться. Значение хранится в /etc/modprobe.d/zfs.conf.

Выбирая хранилище ВМ, учитывают задачи:

  • ZFS удобна, когда нужны контрольные суммы, собственная дисковая избыточность, снимки и репликация между узлами.
  • ext4 и LVM-thin подходят, когда нужен привычный стек Linux и функции ZFS не оправдывают дополнительную настройку. Снимки виртуальных дисков в таком варианте предоставляет LVM-thin, а не ext4.

ZFS не всегда быстрее или медленнее ext4. Сравнивают одинаковые диски, нагрузку ВМ и гарантии синхронной записи, учитывают сжатие, заполнение и размер блоков. Настройки памяти описаны в руководстве Proxmox VE.

Подбор платформы разобран в статье Сервер Молл «Как выбрать сервер для Proxmox». Выбирая сервер для виртуализации, учитывают схему дисков, количество ВМ и активные данные.

ZFS или ext4: в чём разница

Функции ext4 можно дополнить отдельными средствами RAID, управления томами и копирования.

Возможность ZFS ext4
Управление дисками Пулы и vdev встроены RAID и тома организуют отдельно
Контроль целостности Контрольные суммы данных и метаданных Есть защита ряда метаданных; штатной проверки содержимого всех файлов нет
Исправление повреждений По исправной копии или чётности при наличии избыточности Нужны средства других уровней и резервные копии
Снимки состояния Встроены для датасетов и zvol Нужен другой уровень, например LVM
Сжатие Встроено, настраивается по датасетам Штатного прозрачного сжатия нет
Перенос изменений Передача между снимками через send/receive Внешние средства копирования
Поддержка Linux Отдельный модуль и совместимые пакеты В основном ядре Linux

Сконвертировать ext4 в ZFS на месте нельзя. Данные переносят на другой носитель, создают пул и возвращают обратно либо мигрируют на новый сервер. Для этого нужны временная ёмкость и время.

Минусы и когда ZFS не нужна

Схему пула сложнее изменить, чем свойства датасета. Основные ограничения:

  • ARC конкурирует за память с приложениями.
  • Администратору нужно понимать vdev, функции пула и восстановление.
  • RAID-Z vdev нельзя убрать из пула. Расширение добавлением диска не даёт возможности потом уменьшить его или сменить уровень чётности.
  • Для записи с копированием нужен запас свободного места. Переполнение осложняет обслуживание и снижает скорость.

ZFS может быть избыточна для небольшой ВМ с одним виртуальным диском, системного раздела или воспроизводимых временных данных. Если задача решается ext4 и резервным копированием, усложнять хранение необязательно.

ZFS оправдана, когда нужны вместе контроль целостности, избыточность, снимки и перенос изменений. Начать стоит с понятной схемы дисков, сжатия и отдельного резервного копирования, а дополнительные устройства выбирать по реальной нагрузке.


Автор

СЕРВЕР МОЛЛ

Поделиться
Комментарии
(0)
Ещё не добавлено ни одного комментария
Написать комментарий
Поля, отмеченные *, обязательны для заполнения
client consultations icon-delivery discount icon-facebook franchise icon-google_plus it-solutions icon-jivosite icon-menu icon-up icon-message payment icon-recall shops-local shops-network icon-solutions icon-support tasks icon-twitter Group 8 icon-user icon-viber icon-vk icon-watsup icon-watsup-2
Мы используем файлы 'cookie', чтобы обеспечить максимальное удобство пользователям.