Выпуск ZFS on Linux 0.8.0, реализации ZFS для ядра Linux

После почти двух лет разработки представлен релиз ZFS on Linux 0.8.0, реализации файловой системы ZFS, оформленной в виде модуля для ядра Linux. Работа модуля проверена с ядрами Linux c 2.6.32 по 5.1. Готовые установочные пакеты подготовлены для основных дистрибутивов Linux, включая Debian, Ubuntu, Fedora, RHEL/CentOS. Кроме того, модуль ZFS on Linux уже входит в состав дистрибутивов Debian, Ubuntu, Gentoo, Sabayon Linux и ALT Linux.

В рамках ZFS on Linux подготовлена реализация компонентов ZFS, связанных как с работой файловой системы, так и с функционированием менеджера томов. В частности, реализованы компоненты: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) и ZPL (ZFS POSIX Layer). Дополнительно проектом обеспечена возможность использования ZFS в качестве бэкенда для кластерной файловой системы Lustre. Наработки проекта основаны на оригинальном коде ZFS, импортированном из проекта OpenSolaris и расширенном улучшениями и исправлениями от сообщества Illumos. Проект развивается при участии сотрудников Ливерморской национальной лаборатории по контракту с Министерством энергетики США.

Код распространяется под свободной лицензией CDDL, которая несовместима с GPLv2, что не позволяет добиться интеграции ZFS on Linux в состав основной ветки ядра Linux, так как смешивание кода под лицензиями GPLv2 и CDDL недопустимо. Для обхода данной лицензионной несовместимости было решено распространять продукт целиком под лицензией CDDL в виде отдельно загружаемого модуля, который поставляется отдельно от ядра. Стабильность кодовой базы ZFS on Linux оценивается как сопоставимая с другими ФС для Linux.

Основные изменения:

  • Добавлена встроенная поддержка шифрования хранимых данных на уровне файловой системы и разделов. По умолчанию для шифрования используется алгоритм aes-256-ccm. Для загрузки ключей шифрования предложена команда «zfs load-key»;
  • Реализована возможность передачи шифрованных данных при выполнении команд «zfs send» и «zfs receive’. При указании опции «-w» уже зашифрованные в пуле данные передаются в другой пул как есть, без промежуточной дешифровки. При подобном копировании данные остаются защищены ключом отправляющей стороны, что позволяет использовать данный режим для резервного копирования на не заслуживающие доверия системы (в случае компрометации получателя, без ключа атакующий не сможет получить доступ к данным);
  • Добавлена поддержка удаления первичных накопителей из пула хранения, подсоединённых как по отдельности, так и в составе зеркала. Удаление осуществляется командой «zpool remove». В процессе удаления данные с исключаемого накопителя копируются на остающиеся в пуле первичные накопители;
  • Добавлена команда «zpool checkpoint» для сохранения текущего состояния пула с возможностью отката дальнейших изменений на сохранённый момент времени (создаётся снапшот всего пула). Представленная возможность может оказаться полезной в процессе выполнения потенциально опасных сложных административных работ, в обычных условиях приводящих к необратимым изменениям (например, активация флагов новой функциональности ZFS или очистка данных);
  • Добавлена команда «zpool trim», позволяющая информировать используемые в пуле накопители о секторах, которые больше не используются. Применение операции TRIM даёт возможность повысить эффективность работы SSD-накопителей и предотвратить деградацию их производительности. Для включения непрерывного фонового процесса передачи команд TRIM предложено новое свойство «autotrim»;
  • Добавлена команда «zpool initialize» для инициализации всего нераспределённого дискового пространства, что позволяет обеспечить его мгновенную готовность к использованию, без снижения производительности при первом доступе (например, при размещении виртуализированных хранилищ, таких как VMware VMDK);
  • Добавлена поддержка аккаунтинга и квот на уровне проекта, дополняющих ранее доступных квоты на уровне пользователя и группы. По сути проекты — это отдельное пространство объектов, связанных с отдельным идентификатором (project ID). Привязка определяется через операцию ‘chattr -p’ или через наследование атрибутов. Для управления проектами представлены команды «zfs project» и «zfs projectspace», позволяющие управлять созданием проектов и задавать для них лимиты дискового пространства;
  • Добавлена возможность создания Lua-скриптов для автоматизации различных работ с ZFS. Скрипты запускаются в специальных изолированных окружениях при помощи команды «zpool program»;
  • Реализована новая библиотека pyzfs, предоставляющая стабильный API для администрирования ZFS из приложений на языке Python. Библиотека является обвязкой над libzfs_core и предоставляет идентичный набор функций, но применяет более близкие для Python типы;
  • Обеспечена совместимость утилит arcstat, arcsummary и dbufstat с Python 3;
  • Добавлена поддержка интерфейса ядра Linux для прямого Direct IO ( O_DIRECT), позволяющий обращаться к данным без буферизации и в обход кэша;

Источник: http://www.opennet.ru/opennews/art.shtml?num=50730