4 min read

основы ZFS

ZFS, как файловая система, решает трехслойную проблему: резервное копирование (снэпшоты), целостность (чексуммы), а также Raid.

Вступление

RAID-Z1 заменяет RAID5 в традиционной настройке. Производительность примерно одинакова, но преимущество заключается в некоторых функциях. Вы получаете снэпшоты, предотвращает дегродацию данных ('Bit rot'), возможность использования смешанных дисков и пр. В дополнение, RAIDZ-2 (эквивалент RAID-6) работает лучше, чем любая традиционная установка RAID-6, которую автор использовал с эквивалентными дисками на аналогичной машине. (найти ссылку со сравнением)

💾
Важно понимать, что научившись администрировать ZFS — вы решаете трехслойную проблему: резервное копирование (снэпшоты), целостность (чексуммы), а также Raid. Традиционно, для каждой из этих задач, вам бы пришлось использовать отдельный софт. В случае с ZFS, эти фишки — являются неотъемлемой частью самой файловой системы.

Хорошие новости

ZFS (относительно) не сложен в администрировании. Да, на момент 2023 года, здесь только командная строка, но команды простые, которые имеют смысл:

  • Вы используете команду 'zpool' для работы с пулами (в основном это традиционные тома или разделы). После того, как вы настроите пул, вам в основном придется работать с 'zpool' для большинства повседневных задач.
  • Команду 'zfs' для работы с задачами более низкого уровня (например, управление файловыми системами, такими как mkfs, или монтирование и тому подобное). Команда 'zfs' полезна для отката снимков, создания снимков, включения или выключения параметров, монтирования и размонтирования томов и т. д.
💾
Изначально разница между определенными операциями под определенными командами может показаться произвольной. Однако, посмотрев на структуру ZFS, со временем, разделение между командами 'zpool' и 'zfs' приобретает достаточную логику.

Понятия

Для начала, давайте познакомимся с некоторыми основными концепциями ZFS:

  1. ZFS Pool: пул — это совокупность одного или нескольких виртуальных устройств.
  2. Виртуальное устройство, т.е. 'vdev': может представлять собой файл, диск, RAID-массив, свободный диск, лог или кэш.
  3. Write hole, "дыра записи": когда данные четности не совпадают с данными на других дисках, и вы не можете определить, на каком диске находятся правильные данные.
  4. RAID-Z: вариант Raid 5, реализованный ZFS, который может обеспечить атомарность записи (посредством «копирования при записи»), необходимую для предотвращения дыр в записи.
  5. Журнал намерений ZFS (ZIL): журнал упреждающей записи, используемый для регистрации операций на диске перед записью в пул. Если установлено vdev журнала, ZFS будет использовать его — поэтому имеет смысл использовать диск NVMe в качестве vdev журнала (также называемый SLOG — отдельный журнал намерений, просто причудливый термин).
  6. Кэш ZFS: ZFS использует ARC (адаптивный кэш замены) для ускорения чтения из оперативной памяти. Но у него также есть ARC уровня 2, в котором могут храниться данные, удаленные из ARC. Диск NVMe можно настроить в качестве кэша vdev, который будет использоваться для этой цели.
  7. Resilvering

8 ashift:

источник

База

ttps://jrs-s.net/2015/02/06/zfs-you-should-use-mirror-vdevs-not-raidz/

You can't add disks to a vdev. But you can add vdevs to a pool, and you can replace disks in a vdev. When all the disks in a vdev have more capacity, that vdev and the pool it is in will have more capacity. For me (home user), I use mirrored vdevs so I can add or replace 2 disks at a time as needed.

Физические диски являются частью vdev. Виртуальное устройство может представлять собой один диск, набор из двух или более зеркальных дисков или набор дисков в RAIDZ1/2/3. Вы можете добавлять или удалять диски в зеркало постфактум. Но после создания виртуального устройства RAIDZ1, RAIDZ2 или RAIDZ3 вы не сможете добавлять или удалять диски из этого виртуального устройства. Вся избыточность для защиты от сбоя диска находится на уровне vdev.

Пул оформляется одним или несколькими vdev. Запись в пул распределяется между всеми виртуальными устройствами в пуле. Если один из виртуальных устройств в пуле выйдет из строя, все данные в пуле будут потеряны.

Вы можете расширить пул, добавив в него еще одно виртуальное устройство; в этом случае рекомендуется сделать новое виртуальное устройство соответствующим типу других виртуальных устройств в пуле. Или вы можете заменить каждый диск в vdev по одному и повторно установить его. Как только все диски будут переведены на большую емкость, емкость этого виртуального устройства (и находящегося в нем пула) увеличивается.

В статье, на которую я ссылаюсь, рассказывается о способах расширения пула с течением времени, и в ней для большинства пользователей рекомендуется добавлять в пул два диска с зеркальным отображением за раз. Например, вы можете создать пул с одним зеркальным vdev'ом из двух дисков по 4тб, а затем скопировать на него данные. Как только диски 2T освободятся, вы можете добавить два из них в пул в качестве еще одного зеркального виртуального устройства 2 x 2T, что даст вам общую емкость около 6T. В результате у вас останется дополнительный диск 2T, с которым вам придется придумать, что делать. источик

FAQ

Как узнать, в каком режиме работает мой пул - raidz1, raidz3, или зеркало?

zpool status перечислит все диски и их расположение, включая уровень зеркала/RAID. Например, показание raidz1-0 означает, что вы используете RAIDZ1 и номер группы равен 0. ()

Конвертировать ZFS mirror в raidz1 возможно?

Полезные ссылки:

raidz-calculator.com

Видео посмотреть

https://dzen.ru/video/watch/60a35d18ccdc934b0fdea5b1

Книги почитать