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

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

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

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

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

  • Добавлена возможность делегирования непривилегированному пользователю прав на администрирование файловых системам ZFS. Управление правами осуществляется при помощи команд «zfs allow» и «zfs unallow»;
  • Непривилегированные пользователи теперь могут выполнять команды «zpool list», «zpool iostat», «zpool status», «zpool get», «zfs list», «zfs get» без необходимости добавления в /etc/sudoers;
  • Поддержка аккаунтинга и квот для объектов отдельных пользователей и групп. Для установки лимитов и просмотра состояния предлагается использовать команды «zfs userspace» и «zfs groupspace»;
  • Поддержка хранения контрольных сумм с использованием более надёжных криптографических хэшей SHA-512, Skein и Edon-R;
  • Поддержка прерывания работы команд zfs send/receive (например, из-за сетевого сбоя или проблем на удалённой системе) c последующим возобновлением выполнения операции;
  • Возможность переноса сжатых данных из одного пула в другой при помощи команд zfs send/receive (данные напрямую обрабатываются в сжатом виде без промежуточной распаковки). Для включения сжатия представлена опция »-c»;
  • Обеспечена защита операций импорта пула в отказоусточивых конфигурациях — совместно используемый пул теперь одновременно не может быть импортирован на разные хосты (перед началом операции импорта теперь выполняется проверка, не запущен ли уже импорт на другой хост);
  • Возможность настройки параметров, отображаемых в столбцах со статистикой, выводимой командами «zpool iostat» и «zpool status». Например, в вывод теперь можно включить данные мониторинга SMART, параметры датчиков температуры, статус индикаторов и т.п.
  • В команду «zpool iostat» добавлены опции »-l»,»-w» и »-r», позволяющие наглядно оценить задержки и размер обрабатываемых в данный момент запросов в привязке к отдельным дискам;
  • В команду «zpool scrub» добавлена опция »-p», позволяющая приостановить выполнение проверки целостности без её полной отмены (для возмобновления проверки нужно ещё раз запустить «zpool scrub -p»);
  • Поддержка больших dnode, позволяющих увеличит производительность работы с метаданными за счёт сохранения внутри dnode расширенных атрибутов, ACL и символических ссылок, связанных с длинными именами файлов. Выигрыш особенно ощутим в системах с SELinux и распределёнными ФС, такими как Lustre и Ceph;
  • Новые возможности режима JBOD (представление нескольких дисков как одного целого с резервированием): автоматический перевод новых дисков в режим online; автоматическая замена выведенного из пула диска на новый диск; автоматическое подключение дисков для горячей замены в случая сбоя; индикация сбоев при помощи светодиодов; мониторинг проблем и автоматический перевод диска в состояние сбоя при превышении порога несоответствия контрольных сумм; возможность ручной пометки диска сбойным (zpool offline -f); режим multipath;
  • Порция оптимизаций:
    • Новый метод выделения буферов ARC, минимизирующий фрагментацию структур в оперативной памяти;
    • По умолчанию хранение данных в кэше с использование сжатия с распаковкой налету; задействование векторных SIMD-инструкций CPU (sse2, ssse3, avx2, avx512f, avx512bw, neon, neonx2) в реализации RAIDZ и в коде расчёта контрольных сумм;
    • Возможность применения аппаратного ускорения GZIP-сжатия (QAT);
    • Ускорение работы с метаданными за счёт более активного использования многопоточности, пакетного выполнения операций и упреждающего запроса данных;
    • Ускорение процесса восстановления избыточности в RAIDZ — теперь проверяется только целостность секций, подлежащих перестроению;
    • Число фоновых обработчиков теперь выбирается динамически в зависимости от нагрузки, рабочие потоки создаются и отключаются по мере возникновения необходимости;
  • Добавлено 42 новых параметра для тонкой настройки работы модуля ядра.

© OpenNet