Релиз OpenZFS 2.0, реализации ZFS для Linux и FreeBSD
1 декабря 2020 года
После полутора лет разработки состоялся релиз проекта 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 раз).
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.