ZFS – это революционная файловая система и менеджер логических томов, которые в корне изменяют способ администрирования файловых систем, с функциями и преимуществами, которых нет ни в одной другой доступной на сегодня файловой системе. ZFS надёжная, масштабируемая и простая в администрировании. Она обеспечивает больше места для файлов, значительно улучшенное администрирование и значительно улучшенную целостность данных. ZFS использует 128-битную схему адресации и может хранить до 275 миллиардов ТБ на пул хранения. Пределы емкости ZFS настолько большие, что даже невообразимы.
Пул хранения
ZFS отказывается от концепции дисковых томов, разделов и предоставления дисковых ресурсов, внедряя хранилище в пуле, где все доступные жёсткие диски в системе по существу объединены. Для ZFS доступна объединенная полоса пропускания объединенных устройств, что эффективно максимизирует пространство для хранения, скорость и доступность.
ZFS берёт доступные накопители и объединяет их в один ресурс, который называется «zpool». Это может быть оптимизировано для ёмкости, производительности ввода-вывода или избыточности, используя чередование, зеркалирование или некоторую форму RAID. Если требуется больше объёма, тогда в zpool можно просто добавить больше дисков. ZFS видит новую ёмкость и начинает использовать её автоматически, балансируя ввод-вывод и максимизируя пропускную способность.
Вместо предварительного выделения метаданных, как в других файловых системах, ZFS использует динамически распределяемые метаданные по мере необходимости, при этом не требуется начальное пространство при инициализации и нет ограничений на файлы или каталоги, поддерживаемые файловой системой.
Файловая система больше не ограничена отдельными устройствами, что позволяет ей совместно использовать дисковое пространство со всеми файловыми системами в пуле. Вам больше не нужно заранее определять размер файловой системы, поскольку файловые системы автоматически растут в пределах дискового пространства, выделенного для пула хранения. При добавлении нового хранилища все файловые системы в пуле могут немедленно использовать дополнительное дисковое пространство без дополнительной работы.
Целостность данных
Одна из основных особенностей, которая отличает ZFS от других файловых систем, заключается в том, что ZFS разработана с упором на целостность данных. Таким образом, она предназначена для защиты данных на диске от повреждения данных, вызванного повреждёнными битами, скачками тока, ошибками в микропрограмме диска, фантомными записями, ошибочными операциями чтения/записи, ошибками чётности памяти между массивом и памятью сервера, ошибками драйверов и случайного перезаписывания.
ZFS обеспечивает постоянную согласованность данных на диске с помощью ряда методов, включая копирование при записи. Это означает, что при изменении данных они не перезаписываются – они всегда записываются в новый блок и проверяются до того, как указатели на данные будут изменены. Старые данные могут быть сохранены, создавая моментальные снимки данных по мере внесения изменений. Запись файлов с использованием ZFS является транзакционной – либо всё, либо ничего не записывается на диск.
Очистка
Можно запланировать, что ZFS выполнила «очистку» всех данных в пуле хранения, проверив каждую часть данных с помощью соответствующей контрольной суммы, чтобы проверить её целостность, обнаружить любое повреждение данных и по возможности исправить любые ошибки.
Когда данные хранятся в избыточном виде – в зеркальном массиве или массиве типа RAID – они могут автоматически восстанавливаться без вмешательства администратора. Поскольку повреждение данных регистрируется, ZFS может выявить дефекты модулей памяти (или другого оборудования), которые приводят к неправильному хранению данных на жёстких дисках.
Очистка имеет низкий приоритет ввода/вывода, поэтому она оказывает минимальное влияние на производительность системы и может работать, когда используется пул хранения.
Моментальные снимки
Преимущество копирования при записи заключается в том, что когда ZFS записывает новые данные, блоки, содержащие старые данные, могут быть сохранены, что позволяет сохранить версию снимка файловой системы. Снимки ZFS создаются очень быстро, так как все данные, составляющие снимок, уже сохранены.
Они также занимают мало места, поскольку любые неизмененные данные распределяются между файловой системой и её снимками.
Первоначально снимки не занимают дополнительного дискового пространства в пуле. При изменении данных в активном наборе данных снимок занимает место на диске, продолжая ссылаться на старые данные. В результате моментальный снимок предотвращает освобождение данных обратно в пул.
Клоны
Также можно создавать записываемые снимки («клоны»), в результате чего получаются две независимые файловые системы, которые совместно используют набор блоков. По мере внесения изменений в любую из файловых систем клонов создаются новые блоки данных, отражающие эти изменения, но любые неизменённые блоки продолжают совместно использоваться независимо от того, сколько существует клонов. Это возможно благодаря дизайну копирования при записи.
Отправка и получение снимков
Снимки файловых систем и томов ZFS можно отправлять на удаленные узлы по сети. Этот поток данных может быть всей файловой системой или томом, или это могут быть изменения с момента последней отправки. При отправке только измененный размер потока зависит от количества блоков, измененных между снимками. Это обеспечивает очень эффективную стратегию синхронизации резервных копий.
Кэширование ARC и L2ARC
ARC – это «кэш адаптивной замены». ARC – это очень быстрый кэш блочного уровня, расположенный в системной памяти. Любые запросы на чтение данных в кеше могут обслуживаться непосредственно из кеша ARC-памяти, а не с гораздо более медленных жёстких дисков. Это создаёт заметное увеличение производительности для данных, к которым часто обращаются.
Как правило, вы захотите установить на сервер как можно больше оперативной памяти, чтобы сделать ARC как можно большим. В какой-то момент добавление дополнительной памяти становится чрезмерно дорогостоящим, и именно поэтому L2ARC становится важным. L2ARC – это кэш адаптивной замены второго уровня. L2ARC часто называют «накопители кеша» в системах ZFS. Алгоритмы, управляющие заполнением L2ARC, являются автоматическими и интеллектуальными.
Когда накопители кеша присутствуют в пуле ZFS, накопители кеша будут кэшировать часто используемые данные, которые не помещаются в ARC. Когда запросы на чтение поступают в систему, ZFS пытается обработать эти запросы от ARC. Если данные не находятся в ARC, ZFS попытается обслужить запросы от L2ARC. Доступ к жёстким дискам возможен только в том случае, если данные не существуют ни в ARC, ни в L2ARC. Это означает, что жёсткие диски получают гораздо меньше запросов, что может существенно повысить производительность операций IOP.
ZIL
ZIL – это «Журнал намерений ZFS», который действует как механизм ведения журнала для хранения синхронных записей, пока они не будут безопасно записаны в основную структуру данных в пуле хранения. Скорость, с которой данные могут быть записаны в ZIL, определяет скорость, с которой могут выполняться синхронные запросы на запись. Используя быстрые диски в качестве ZIL, вы ускоряете ZIL и повышаете производительность синхронной записи. Как и L2ARC, ZFS автоматически и интеллектуально управляется ZFS.
SSD диски
Высокопроизводительные твердотельные накопители могут быть добавлены в пул хранения для создания гибридного пула хранения. Диски SSD могут быть добавлены в пул ZFS в качестве дисков «кэша» (для L2ARC) или в качестве дисков «журнала» (для ZIL). Добавление дисков для L2ARC и ZIL ускоряет чтение и запись данных.
Другие преимущества
Дедупликация на уровне блоков
ZFS может использовать дедупликацию на уровне блоков, то есть обнаруживать идентичные блоки и просто сохранять одну копию данных. Это может значительно сократить распределение памяти. Дедупликация – это встроенный процесс, происходящий при записи данных.
Сжатие
ZFS предлагает собственное сжатие. Новый алгоритм LZ4 предлагает очень быстрое сжатие и распаковку. Сжатие полностью прозрачное.