После почти двух лет разработки выпущена ZFS на Linux 0.8.0., который представляет собой реализацию файловой системы ZFS, разработанную как модуль для ядра Linux.
В рамках ZFS на Linux подготовлена реализация компонентов ZFS которые относятся как к работе файловой системы, так и к работе диспетчера томов. В частности, реализованы следующие компоненты: SPA (распределитель пула хранения), DMU (блок управления данными), ZVOL (эмулируемый том ZFS) и ZPL (уровень ZFS POSIX).
Кроме того, Проект предоставил возможность использовать ZFS в качестве бэкэнда для файловой системы кластера Lustre.
В основе проекта лежит исходный код ZFS, импортированный из проекта OpenSolaris и дополненный улучшениями и исправлениями сообщества Illumos. Проект разрабатывается при участии сотрудников Ливерморской национальной лаборатории по контракту с Министерством энергетики США.
Код распространяется под бесплатной лицензией CDDL, что несовместимо с GPLv2, которая не позволяет интегрировать ZFS в Linux в основное ядро Linux, поскольку сочетание кодов под лицензиями GPLv2 и CDDL недопустимо.
Чтобы избежать несовместимости лицензий, было решено распространять продукт полностью под лицензией CDDL как отдельный загружаемый модуль, поставляемый отдельно от ядра. Стабильность кодовой базы ZFS в Linux оценивается как сопоставимая с другими файловыми системами для Linux.
Модуль протестирован с ядрами Linux от 2.6.32 до 5.1.. Готовые установочные пакеты скоро будут подготовлены для основных дистрибутивов Linux, включая Debian, Ubuntu, Fedora, RHEL / CentOS.
Главные новости
В рамках изменений, добавленных в этот выпуск, вы можете найти встроенная поддержка шифрования данных, хранящихся на уровне раздела и файловой системы. Алгоритм шифрования по умолчанию - aes-256-ccm. Для загрузки ключей шифрования предлагается команда «zfs load-key».
также возможность передачи зашифрованных данных реализована путем выполнения команд «Zfs send» и «zfs receive».
Когда указана опция »-w«, данные, уже зашифрованные в группе, передаются в другую группу как есть, без промежуточного дешифрования, что позволяет использовать этот режим для резервного копирования ненадежных систем (в случае согласия получателя, без ключа , злоумышленник не сможет получить доступ к данным).
также добавлена поддержка параллельных операций назначения блоков через выполнение отдельных процессов «распределителя» для каждого набора метаслаб.
В обычных системах прирост производительности 5-10%, но в больших (8,128 ГБ SSD, 24 ядра NUMA, 256 ГБ RAM) увеличение операций выделения блоков может достигать 25%.
Еще одна новинка, которую стоит выделить: возможность создавать сценарии Lua для автоматизации различных работ с ZFS. Скрипты запускаются в специальных «песочницах» с помощью команды «zpool program».
Вместе с этим появилась поддержка учета и квот на уровне проекта, дополняющая квоты, ранее доступные на уровне пользователей и групп.
По сути, проекты - это отдельное объектное пространство, связанное с отдельным идентификатором (ID проекта).
Наконец, выделяются и другие изменения: представлена оптимизация производительности:
- Команды scrub и resilver ускорены за счет разделения на две фазы (отдельная фаза назначается для сканирования метаданных и определения местоположения блоков с данными на диске, что позволяет проводить дальнейшую проверку путем последовательного чтения данных).
- Поддержка классов распределения данных (классов распределения), которые позволяют включать в пул относительно небольшие твердотельные накопители и использовать их для хранения только определенных типов часто используемых блоков, таких как метаданные, данные DDT и небольшие блоки с файлами.
- Производительность таких команд администрирования, как «zfs list» и «zfs get» была улучшена за счет кэширования метаданных, необходимых для их работы.