Релиз OpenZFS 2.0, реализации ZFS для Linux и FreeBSD
После полутора лет разработки состоялся релиз проекта OpenZFS 2.0, развивающего реализацию файловой системы ZFS для Linux и FreeBSD. Проект получил известность как «ZFS on Linux» и ранее ограничивался разработкой модуля для ядра Linux, но после переноса поддержки FreeBSD был признан основной реализацией OpenZFS и был избавлен от упоминания Linux в названии. Вся активность по разработке ZFS для Linux и BSD-систем теперь сосредоточена в одном проекте и развивается в общем репозитории.
OpenZFS уже используется в основной ветке FreeBSD (HEAD) и входит в состав дистрибутивов Debian, Ubuntu, Gentoo, Sabayon Linux и ALT Linux. Пакеты с новой версией в ближайшее время будут подготовлены для основных дистрибутивов Linux, включая Debian, Ubuntu, Fedora, RHEL/CentOS. Во FreeBSD код синхронизирован с актуальной кодовой базой OpenZFS. Работа OpenZFS проверена с ядрами Linux c 3.10 по 5.9 (в прошлом выпуске поддерживались ядра, начиная с 2.6.32) и ветками FreeBSD 12.2, stable/12 и 13.0 (HEAD).
OpenZFS предоставляет реализацию компонентов ZFS, связанных как с работой файловой системы, так и с функционированием менеджера томов. В частности, реализованы компоненты: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) и ZPL (ZFS POSIX Layer). Дополнительно проектом обеспечена возможность использования ZFS в качестве бэкенда для кластерной файловой системы Lustre. Наработки проекта основаны на оригинальном коде ZFS, импортированном из проекта OpenSolaris и расширенном улучшениями и исправлениями от сообщества Illumos. Проект развивается при участии сотрудников Ливерморской национальной лаборатории по контракту с Министерством энергетики США.
Код распространяется под свободной лицензией CDDL, которая несовместима с GPLv2, что не позволяет добиться интеграции OpenZFS в состав основной ветки ядра Linux, так как смешивание кода под лицензиями GPLv2 и CDDL недопустимо. Для обхода данной лицензионной несовместимости было решено распространять продукт целиком под лицензией CDDL в виде отдельно загружаемого модуля, который поставляется отдельно от ядра. Стабильность кодовой базы OpenZFS оценивается как сопоставимая с другими ФС для Linux.
Основные изменения:
- Добавлена поддержка платформы FreeBSD, а кодовая база унифицирована для поддержки разных операционных систем. Разработка всех связанных с FreeBSD изменений теперь ведётся в основном репозитории OpenZFS и данный проект рассматривается как основная реализация ZFS для будущих выпусков FreeBSD. Переход FreeBSD на OpenZFS позволил устранить многие проблемы, связанные с состоянием гонки и блокировками, а также перенести новые возможности, такие как расширенная система квот, шифрование наборов данных, раздельный выбор классов распределения блоков (allocation classes), использование векторных процессорных инструкций для ускорения реализация RAIDZ и вычисления контрольных сумм, поддержка алгоритма сжатия ZSTD, режим multihost (MMP, Multi Modifier Protection) и улучшенный инструментарий командной строки.
- Реализован режим последовательного выполнения команды «resilver» (sequential resilver), осуществляющей перестроение распределения данных с учётом изменения конфигурации накопителей. Новый режим позволяет перестроить отказавшее зеркало vdev значительно быстрее, чем традиционный resilver — вначале как можно быстрее восстанавливается потерянная избыточность в массиве, после чего автоматически запускается операция «scrub» для проверки всех контрольных сумм данных. Новый режим запускается при добавлении или замене накопителя командами «zpool replace|attach» при указании опции »-s».
- Реализован постоянный кэш второго уровня (L2ARC), в котором данные на подключённом для кэширования устройстве сохраняются между перезагрузками системы, т.е. кэш после запуска остаётся «тёплым» и производительность сразу выходит на номинальные показатели, минуя фазу начального заполнения кэша.
- Добавлена поддержка алгоритма сжатия zstd (Zstandard), который демонстрирует в 3–5 раз более высокую скорость сжатия по сравнению с zlib/Deflate и в два раза более быструю распаковку, при улучшении уровня сжатия на 10–15%. Предоставлено несколько уровней сжатия, предлагающих разный баланс между эффективностью сжатия и производительностью.
- Добавлен выборочный режим работы команд zfs send/receive, применяемых для переноса данных из одного пула в другой. Предложенный режим позволяет настроить отправку на другую систему лишь подмножества данных, отбросив для экономии дискового пространства неважную информацию, такую как логи, или исключив конфиденциальные данные, такие как ключи доступа. Режим включается при помощи команд «zfs redact» или «zfs send --redact».
- Добавлена поддержка системного вызова fallocate для упреждающего резервирования места.
- На платформе Linux по умолчанию включён сервис systemd zfs-mount-generator.
- Добавлен PAM-модуль для автоматической загрузки ключей шифрования для домашних каталогов.
- Улучшена поддержка загрузчиков.
- Добавлена подсветка вывода команды «zpool status».
- Новые команды и опции:
- «zfs wait», «zpool wait» — ожидает завершения фоновых работ (resilver, scrub, trim и т.п.).
- «zfs send --saved» — позволяет сохранить не полностью полученный набор данных.
- «zfs jail», «zfs unjail» — прикрепляет и открепляет ZFS из jail-окружений FreeBSD.
- «zfs rename -u» — переименовывает ФС без перемонтирования.
- «zfs umount -u» — выгружает ключи шифрования в момент размонтирования ФС.
- «zfs bookmark fs#target fs#newbookmark» — создаёт копию закладки с новым именем.
- Представлены оптимизации производительности:
- Ускорен процесс удаления клонов и фоновой очистки при выполнении команды «zfs destroy».
- Повышена производительность команд zfs send / zfs receive при обработке записей небольшого размера.
- Повышена масштабируемость команды «zfs share».
- Повышена эффективность кэша адаптивной замены ARC и управления памятью.
- Повышена скорость записи в сильно фрагментированных пулах.
- Оптимизирован режим шифрования AES-GCM.
- Добавлены оптимизации с использование векторных процессорных инструкций SIMD.
- Объявлена устаревшей поддержка дедупликации данных при отправке потоков командой «zfs send -D». Также объявлен устаревшим параметр пула dedupditto и прекращена запись новых блоков dedupditto (дополнительный механизм создания избыточности, при котором создаются дополнительные копии дедуплицированных данных, повторяющихся более 100 раз).
Источник: http://www.opennet.ru/opennews/art.shtml? num=54172
© OpenNet