ZFS – это принципиально новая файловая система, кардинально меняющая принципы администрирования файловых систем с уникальными на сегодняшний день функциями и преимуществами. Система ZFS была разработана как надежный, масштабируемый и простой в администрировании инструмент.
Модель хранения данных по принципу пула в ZFS
Для управления физическим хранением в ZFS применяется принцип пулов устройств хранения данных. Исторически файловые системы строились на основе одного физического устройства. Для использования нескольких устройств и обеспечения избыточности данных была введена концепция диспетчера томов , обеспечивающая представление нескольких устройств в виде одного устройства, чтобы исключить необходимость изменения файловых систем. Эта разработка позволила перейти на новый уровень сложности и, в конечном счете, предшествовала определенным усовершенствованиям файловых систем, поскольку типичная файловая система не обеспечивала контроль над физическим размещением данных в виртуализированных томах.
ZFS полностью исключает процесс управления томами. Вместо принудительного создания виртуализированных томов ZFS объединяет устройства в пул устройств хранения данных. Пул устройств хранения данных описывает физические характеристики хранения (размещение устройств, избыточность данных и т.д.) и выступает в качестве хранилища данных для создания файловых систем. Файловые системы больше не ограничиваются отдельными устройствами, что позволяет им совместно использовать пространство в пуле. Предварительное определение размера файловой системы больше не требуется, поскольку файловые системы автоматически расширяются в рамках пространства, выделенного для пула устройств хранения данных. При добавлении нового хранилища все файловые системы в пуле могут немедленно начать использование дополнительного пространства без вмешательства администратора. Во многих отношениях пул устройств хранения данных выступает в качестве системы виртуальной памяти. При добавлении в систему модуля DIMM оперативной памяти операционная система не требует вызова определенных команд для настройки памяти и ее назначения отдельным процессам. Все процессы в системе автоматически используют дополнительную память.
Транзакционная семантика
ZFS – это транзакционная файловая система. Это означает, что ее состояние на диске всегда является непротиворечивым. Традиционные файловые системы перезаписывают данные на физическом носителе. Поэтому, например, при снижении производительности между временем выделения блока данных и его присвоением каталогу файловая система остается в противоречивом состоянии. Исторически эта проблема решалась с помощью команды fsck, которая использовалась для просмотра и проверки состояния файловой системы с попыткой устранения всех противоречий. Эта задача была особенно сложной для администраторов и всегда вызывала сопутствующие затруднения. Позже в файловые системы был введен принцип журналирования. В процессе журналирования операции регистрируются в отдельном журнале, который при необходимости может быть безопасно воспроизведен в случае полного отказа системы. Этот процесс влечет за собой дополнительные расходы, поскольку запись данных выполняется дважды и часто ведет к появлению новых проблем, например когда не удается корректно воспроизвести журнал.
В транзакционной файловой системе управление данными осуществляется с использованием семантики копирования при записи. Данные никогда не перезаписываются, и любая последовательность операций либо полностью выполняется, либо полностью игнорируется. Этот механизм обеспечивает невозможность повреждения файловой системы в результате непредвиденного отключения электропитания или полного отказа системы. Поэтому в этой системе эквивалент команды fsck отсутствует. Несмотря на то, что последние записанные элементы данных могут быть потеряны, сама файловая система всегда остается целостной. Кроме того, синхронные данные (записанные с использованием флага O_DSYNC) всегда гарантированно сохраняются перед возвратом и поэтому не могут быть утрачены.
Контрольные суммы и самовосстановление данных
В ZFS контроль сумм для всех данных и метаданных выполняется с помощью алгоритма, который может быть выбран пользователем. Традиционные файловые системы, действительно обеспечивающие вычисление контрольной суммы, выполняли эту процедуру поблочно, в силу необходимости на уровне управления томами и структуры традиционной файловой системы. Традиционная модель подразумевает, что определенные типы сбоя, такие как запись целого блока в ошибочное местоположение, могут привести к тому, что данные, по которым была правильно рассчитана контрольная сумма, фактически оказываются неверными. Контрольные суммы ZFS сохраняются таким образом, что эти сбои идентифицируются и могут быть корректно устранены. Все операции с контрольными суммами и восстановление данных осуществляются на уровне файловой системы и не сказываются на работе приложений.
Кроме того, ZFS предоставляет возможность самовосстановления данных. ZFS поддерживает пулы устройств хранения данных с различными уровнями избыточности данных, включая зеркальное отражение и варьирование на RAID-5. При обнаружении поврежденного блока данных ZFS переносит правильные данные из другой резервной копии и восстанавливает данные, заменяя их качественной копией.
Непревзойденная масштабируемость
Система ZFS была изначально разработана как самая масштабируемая файловая система. Это 128-разрядная файловая система с возможностью хранения данных в объеме 256 септильонов зеттабайт. Все метаданные распределяются динамически, и необходимость в предварительном распределении индексных дескрипторов или каких-либо иных ограничениях масштабируемости файловой системы при ее создании отсутствует. Все алгоритмы были разработаны с учетом масштабируемости. Каталоги могут содержать до 248 (256 триллионов) записей, при этом не существует ограничений по числу файловых систем или файлов, содержащихся в файловой системе.
Снимки ZFS
Снимок представляет собой копию файловой системы или тома, доступную только для чтения. Снимки создаются в рамках быстрой и простой процедуры. Изначально снимки не занимают дополнительного пространства пула.
По мере изменения данных в активном наборе данных снимок начинает занимать пространство из-за наличия ссылок на старые данные. В результате снимок предотвращает освобождение пространства в пуле.
Упрощенное администрирование
Что особенно важно, в ZFS предусмотрена существенно упрощенная модель администрирования. За счет иерархического размещения файловых систем, наследования свойств, автоматического управления точками монтирования и семантикой совместного использования NFS, технология ZFS упрощает создание и администрирование файловых систем, устраняя необходимость в выполнении большого количества команд или редактирования конфигурационных файлов. Настройка квот или резервируемого пространства, активация или деактивация сжатия или управление точками монтирования для нескольких файловых систем выполняются с помощью одной команды. Диагностика и исправление устройств могут осуществляться без использования специальных наборов команд диспетчера томов. Можно создавать неограниченное количество мгновенных снимков файловых систем. Можно выполнять резервное копирование и восстановление отдельных файловых систем.
ZFS осуществляет управление файловыми системами через иерархию, обеспечивающую упрощенное администрирование таких свойств, как квоты, резервируемое пространство, сжатие и точки монтирования. В этой модели центральной точкой администрирования становятся файловые системы. Сами файловые системы не являются дорогостоящими (по затратам эквивалентны новому каталогу), что позволяет создать файловую систему для каждого пользователя, проекта, рабочего стола и т.д. Благодаря такой структуре можно более точно определить отдельные точки администрирования.