ZFS для новичков: выбираем между зеркалом и RAID-Z1 (пошаговое руководство) | AdminWiki

ZFS для новичков: выбираем между зеркалом и RAID-Z1 (пошаговое руководство)

25 июля 2026 8 мин. чтения

ZFS предлагает два основных способа защитить данные при использовании 2–4 дисков: зеркало (mirror) и RAID-Z1. Зеркало создает полную копию данных на двух дисках. RAID-Z1 распределяет данные и одну контрольную сумму четности по трем или более дискам. Если у вас два диска, выбор однозначен - только зеркало. Для трех или четырех дисков решение зависит от приоритетов: скорость и быстрое восстановление или максимальный полезный объем.

В этом руководстве вы получите точные команды для создания пулов и сравнение по ключевым параметрам. Мы разберем, как работают обе конфигурации изнутри, и дадим рекомендации для типовых сценариев - от домашнего NAS до сервера виртуализации.

Перед началом настройки убедитесь, что ваши диски подключены через HBA-контроллер в IT-режиме. Это критичное требование ZFS, которое напрямую влияет на надежность хранения. Подробнее о выборе оборудования читайте в руководстве по RAID-массивам 2026.

Зеркало vs RAID-Z1: ключевые отличия за 2 минуты

Зеркало в ZFS - это аналог классического RAID-1. Данные пишутся одновременно на оба диска. При выходе одного из строя пул продолжает работу на оставшемся. Полезный объем всегда равен 50% от суммарной емкости. RAID-Z1 - это аналог RAID-5. Данные и блоки четности распределяются по всем дискам в пуле. Отказ одного диска не приводит к потере данных. Полезный объем равен суммарной емкости всех дисков минус один диск.

ПараметрЗеркало (Mirror)RAID-Z1
Минимальное число дисков23
Отказоустойчивость1 диск (в паре)1 диск (любой)
Полезный объем (для 4 дисков)50%75%
Скорость чтенияВысокая (чтение с любого диска)Высокая (чтение со всех дисков)
Скорость случайной записиВысокая (нет вычислений четности)Средняя/Низкая (вычисление четности)
Время восстановленияБыстрое (простое копирование)Долгое (чтение всех дисков + вычисления)

Для двух дисков единственный вариант с отказоустойчивостью - зеркало. RAID-Z1 на двух дисках технически создается, но теряет смысл: вы получаете те же 50% объема при более низкой производительности записи. Для трех дисков RAID-Z1 дает 66% полезного объема против 33% у зеркала с горячим запасным диском. Для четырех дисков RAID-Z1 обеспечивает 75% объема, а зеркало из двух пар - 50%.

Как работает зеркало в ZFS: просто о сложном

При создании зеркального vdev ZFS объединяет два физических диска в логическую пару. Каждая операция записи отправляется на оба диска одновременно. Контроллер не ждет подтверждения от медленного диска - запись считается завершенной, когда данные попали на самый быстрый из них. Это делает зеркало конфигурацией с минимальной задержкой записи среди всех отказоустойчивых вариантов ZFS.

Чтение распределяется между дисками: один запрос может читать блок с первого диска, следующий - со второго. Такой подход удваивает IOPS на чтение по сравнению с одиночным диском. При отказе одного диска пул автоматически переходит в состояние DEGRADED и продолжает обслуживать запросы с оставшегося. Данные не теряются.

Полезный объем составляет ровно 50%, потому что каждый блок данных записан дважды. Если у вас два диска по 4 ТБ, доступно 4 ТБ. Четыре диска по 4 ТБ в двух зеркальных парах дают 8 ТБ полезного пространства. Эта предсказуемость упрощает планирование емкости на годы вперед.

Как работает RAID-Z1: распределение данных и четности

RAID-Z1 распределяет данные и четность полосами по всем дискам в vdev. Для каждого блока данных вычисляется контрольная сумма XOR, которая записывается на один из дисков. Нет фиксированного диска четности - блоки четности чередуются. Это исключает «горячую точку» при записи, характерную для некоторых аппаратных RAID-контроллеров.

При отказе одного диска ZFS восстанавливает недостающие данные на лету. Если читается блок с рабочим диском - он отдается сразу. Если блок находился на отказавшем диске - ZFS читает оставшиеся блоки данных и блок четности, вычисляя недостающее значение. Запись в RAID-Z1 медленнее, чем в зеркало, из-за необходимости вычислять четность для каждой операции. При случайной записи мелкими блоками накладные расходы возрастают, так как требуется чтение текущих данных и четности перед записью новых (read-modify-write).

Полезный объем RAID-Z1 рассчитывается по формуле: (N - 1) × размер диска, где N - количество дисков. Для трех дисков по 4 ТБ доступно 8 ТБ (66%). Для четырех - 12 ТБ (75%). Чем больше дисков в пуле, тем эффективнее используется пространство, но растет время восстановления.

Пошаговая настройка: создаем зеркало и RAID-Z1

Перед созданием пула выполните подготовку. Определите идентификаторы дисков командой lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL,SERIAL. Используйте симлинки из /dev/disk/by-id/ - они привязаны к серийным номерам и не меняются при перезагрузке или смене портов. Если вы настраиваете массив на готовой системе, изучите руководство по созданию ZFS-пулов и оптимизации для углубленной настройки сжатия и снапшотов.

Создание зеркального пула

Команда для создания зеркального пула из двух дисков:

zpool create -o ashift=12 -o autoexpand=on tank mirror \
  /dev/disk/by-id/ata-WDC_WD40EFZX-68AWUN0_WD-WX42D40H7K8E \
  /dev/disk/by-id/ata-WDC_WD40EFZX-68AWUN0_WD-WX42D40H7K9F

Параметр -o ashift=12 задает размер сектора 4 КБ. Это обязательно для современных дисков с физическим сектором 4096 байт. Без этого производительность случайной записи падает в разы. autoexpand=on позволяет пулу автоматически увидеть увеличение размера дисков после замены на более емкие. После создания проверьте статус:

zpool status tank

Вывод покажет конфигурацию mirror-0 и состояние ONLINE для обоих дисков.

Создание пула RAID-Z1

Для трех дисков команда выглядит так:

zpool create -o ashift=12 -o autoexpand=on tank raidz1 \
  /dev/disk/by-id/ata-WDC_WD40EFZX-68AWUN0_WD-WX42D40H7K8E \
  /dev/disk/by-id/ata-WDC_WD40EFZX-68AWUN0_WD-WX42D40H7K9F \
  /dev/disk/by-id/ata-WDC_WD40EFZX-68AWUN0_WD-WX42D40H7K0G

Для четырех дисков добавьте четвертый идентификатор в конец списка. Ключевое слово raidz1 указывает ZFS создать vdev типа RAID-Z1. Проверьте результат:

zpool status tank

В выводе будет секция raidz1-0 с перечислением всех дисков. Убедитесь, что все диски в состоянии ONLINE и нет ошибок чтения/записи/контрольных сумм в столбцах READ, WRITE, CKSUM.

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

Зеркало выигрывает в сценариях с интенсивной случайной записью. Отсутствие вычислений четности дает прирост IOPS на 30–50% по сравнению с RAID-Z1 на одинаковом количестве дисков. Для баз данных и виртуальных машин, где преобладают мелкие случайные операции, это критично. Последовательное чтение в обеих конфигурациях сопоставимо - данные читаются со всех дисков параллельно.

RAID-Z1 показывает хорошие результаты на последовательных нагрузках: запись больших файлов, потоковое видео, бэкапы. Здесь вычисление четности выполняется для крупных блоков и не становится узким горлышком. Пропускная способность последовательной записи для четырехдискового RAID-Z1 достигает 80–90% от суммарной скорости дисков. Случайная запись мелкими блоками (4K) в RAID-Z1 может быть в два-три раза медленнее, чем в зеркале.

ZFS активно использует оперативную память для кэширования (ARC). При достаточном объеме RAM разница в производительности чтения между конфигурациями нивелируется для повторяющихся запросов. Горячие данные обслуживаются из кэша, минуя диски. Это делает обе конфигурации приемлемыми для рабочих нагрузок с выраженной локальностью обращений.

Отказоустойчивость и восстановление: что нужно знать до аварии

Замена отказавшего диска выполняется командой:

zpool replace tank /dev/disk/by-id/old-disk /dev/disk/by-id/new-disk

В зеркале процесс восстановления - это простое копирование данных с рабочего диска на новый. Скорость ограничена только пропускной способностью дисков. Для пары 4 ТБ дисков resilver занимает 4–8 часов при типичной нагрузке. Нагрузка на оставшийся диск минимальна - только чтение.

В RAID-Z1 восстановление требует чтения всех оставшихся дисков для пересчета данных. Каждый блок на новом диске вычисляется из соответствующих блоков на рабочих дисках. Для пула из четырех дисков по 4 ТБ resilver может занять 24–48 часов. В это время все диски работают под максимальной нагрузкой, что повышает риск отказа еще одного диска.

Критичное предупреждение для RAID-Z1: при использовании дисков объемом более 2 ТБ вероятность неисправимой ошибки чтения (URE) во время восстановления становится значимой. Если во время resilver'а встретится нечитаемый сектор на одном из оставшихся дисков, данные в этом блоке будут потеряны. Для дисков 4 ТБ и более рассмотрите переход на RAID-Z2 (два диска четности) или используйте зеркала. Детальный разбор архитектуры и путей данных в разных конфигурациях vdev читайте в статье об архитектуре ZFS.

Какой вариант выбрать: сценарии использования

Домашний NAS для медиатеки (Plex, Jellyfin). Нагрузка - последовательное чтение больших файлов. Приоритет - объем. Рекомендация: RAID-Z1 из 3–4 дисков. Полезный объем 66–75%. Скорости чтения достаточно для нескольких одновременных потоков 4K.

Сервер виртуализации (Proxmox, VMware ESXi). Нагрузка - случайная запись мелкими блоками от множества виртуальных машин. Приоритет - IOPS. Рекомендация: зеркало из двух SSD или два зеркала из четырех SSD в одном пуле. Это дает максимальную производительность случайной записи.

Бэкап-сервер (Veeam, BorgBackup). Нагрузка - последовательная запись крупных архивов. Приоритет - объем и стоимость гигабайта. Рекомендация: RAID-Z1 из 4 дисков. Полезный объем 75%, скорость записи достаточна для nightly-бэкапов.

Базы данных (PostgreSQL, MySQL). Нагрузка - смешанная с преобладанием случайной записи. Приоритет - низкая задержка. Рекомендация: зеркало из двух SSD. Для дополнительной производительности добавьте отдельный SSD под ZIL/SLOG для ускорения синхронной записи.

Файловое хранилище общего назначения (SMB/NFS для офиса). Нагрузка - смешанная, непредсказуемая. Приоритет - баланс объема и производительности. Рекомендация: зеркало из двух пар дисков (4 диска, 50% объема). Быстрое восстановление снижает риск простоя.

Обслуживание пула: базовые операции

Регулярная проверка целостности данных (scrub) выявляет и исправляет битовые ошибки до того, как они станут проблемой. Запуск:

zpool scrub tank

Рекомендуемая периодичность - раз в месяц для домашних систем, раз в неделю для корпоративных. Процесс можно выполнять при работающей нагрузке, но он создает дополнительный ввод-вывод. Текущий статус scrub'а отображается в выводе zpool status.

Мониторинг состояния пула - ежедневная операция. Команда zpool status -x показывает только проблемные пулы. Для автоматизации настройте алертинг через zed (ZFS Event Daemon), который отправляет уведомления при деградации или ошибках.

Расширение пула имеет важное ограничение: вы не можете добавить один диск в существующий RAID-Z1 vdev. Единственный способ расширить пул - добавить новый vdev (зеркало или еще один RAID-Z1) той же конфигурации. Например, к пулу с raidz1 из трех дисков можно добавить второй raidz1 из трех дисков. ZFS будет распределять новые записи между обоими vdev. Зеркальный пул расширяется добавлением новой зеркальной пары.

Замена диска на более емкий выполняется поочередно для каждого диска в vdev. После замены всех дисков пул автоматически увидит увеличение доступного пространства, если установлен параметр autoexpand=on. Если вы проектируете крупное хранилище, обратитесь к руководству по проектированию дисковых массивов на 24 слота.

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

Поделиться:
Сохранить гайд? В закладки браузера