О чём пойдёт речь
Хочу вкратце затронуть, что такое ZFS, за что я её люблю и почему советую данную ФС всем. Каждый подзаголовок – это новая причина, в отрыве от других. Так что читать можно в любом порядке или по кусочкам. Все причины перечислены в произвольном порядке, без сортировки по важности.
Простота бэкапов
Бывало ли у вас такое, что вам требовалось бэкапить файлы, которые могут измениться, удалиться, добавиться?
Например, когда делается бэкап домашней директории вашего Linux окружения.
ZFS позволяет сделать снимок, который в одно мгновение зафиксирует состояние файловой системы (полностью или только кусочка).
Фактически это read-only файловая система.
Состояние файлов в которой не изменяется.
Файлы не удаляются, не добавляются, не изменяются.
Это идеальное состояние для создания бэкапа.
Я использую restic, но вы можете использовать любой инструмент, совместимый с вашей ОС.
Ещё есть встроенная возможность отправлять целую ФС по сети, через команду вида zfs send | zfs receive
.
Однако я ей не пользовался (не было необходимости) и не могу рассказать подробнее про неё.
Расширяемость
Если строить примитивные RAID массивы дисков, то всё легко расширяется. Например stripe по зеркалам я могу масштабировать добавляя новые VDEV (в терминологии ZFS: виртуальное устройство) в страйп для увеличения доступного объёма и скорости чтения и записи. Или могу добавить диск/диски в существующие зеркала для увеличения надежности и скорости чтения. С недавнего времени есть возможность расширения и RAIDZ* массивов. Однако для меня классические RAID массивы были понятнее в настройке. Поэтому использую их. В моей конфигурации домашнего сервера 4 диска, в такой конфигурации:
zroot
mirror-0
sdd
sdb
mirror-1
sda
sde
Так я получаю 1.36ТБ места из 2-ух дисков по ~500ГБ и 2-ух по ~1000ГБ, которые нашёл где-то в шкафу. И могу расшириться ещё на любое, необходимое мне кол-во места.
Удобство
ZFS позволяет использовать 1 пул из нескольких дисков как единое пространство. Однако, мы можем выделять так называемые dataset’ы. Это фактически аналог разделов диска, только легко расширяемый. Это позволяет делить пространство на логически блоки: music, videos, backup и так далее. И по каждому из них смотреть занятое и доступное место.
Сохранность данных
В ZFS к каждому кусочку данных прикрепляется хэш-сумма, которой можно проверить правильно ли данные были считаны с диска. Благодаря этому решается проблема “bit rot”, то есть “гниение бита”, оно же деградация данных. Если естественная порча данных на диске произойдёт под управлением ext2/3/4, NTFS, FAT32 и прочих, то вам вернётся испорченный файл. А ZFS попытается либо исправить данные, пере-сохранив повреждённый участок памяти в исправленные секторы диска. Или же, если ZFS сама не может произвести исправление (то есть данные повреждены, а другое место откуда ZFS может получить фрагмент отсутствует), то файловая система об этом сообщит.
Компрессия данных
ZFS умеет прозрачно для пользователя сжимать и разжимать данные, которые она пишет на диски. За счёт этого можно получить очёнь хорошее ускорение к общей вместимости и пропускной способности системы, уменьшив время IO за счёт небольшого кол-ва CPU.
Устойчивость
С ZFS на вы можете отключать и подключать диски не выключая систему и не прекращая операции с файлами. Если отключать диски из VDEV, которые могут понести потерю N дисков (в зеркале это 1 диск, в RAIDZ1 – 1, RAIDZ2 – 2, RAIDZ3 – 3). Как пример, можно отключать диски по одному и менять их на диски большего объёма для расширения. При этом не нарушая работу всей системы и не нарушая сохранности данных
Дальнейшие рекомендации
Если вас заинтересовала ZFS:
- ZFS for Newbies. Этот ролик даёт прекрасные вводные для начинающих. Начинать лучше именно с него
- What Is ZFS?: A Brief Primer. Более глубокое введение в файловую систему.
- Документация по ZFS EN или RU. Фактически это полноценный мануал по использованию. При возникновении любых проблем и/или вопросов – идите туда.
- Для сборки своего первого пула необязательно использовать отдельные диски или даже разделы дисков. Можно взять пустые файлы и использовать их как “виртуальные диски”. Инструкция для создания этих виртуальных дисков.