После почти двух лет разработки состоялся релиз ZFS on Linux 0.7.0, реализации файловой системы ZFS, оформленной в виде модуля для ядра Linux. Работа модуля проверена с ядрами Linux c 2.6.32 по 4.12. Готовые установочные пакеты подготовлены для основных дистрибутивов 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. Реализованная в ZFS on Linux версия пула и файловой системы совместима с ZFS из состава Illumos и FreeBSD. Проект развивается при участии сотрудников Ливерморской национальной лаборатории по контракту с Министерством энергетики США.

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


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