Хабрахабр

ZFSonLinux 0.8: фичи, стабилизация, интриги. Ну и trim

Буквально на днях релизнули свежую stable версию ZFSonLinux, проекта, который теперь является центральным в мире разработки OpenZFS. Прощай, OpenSolaris, здравствуй свирепый GPL-CDDL несовместимый мир Linux.

image

Под катом обзор самых интересных вещей (ещё бы, 2200 коммитов!), а на десерт — немного интриг.

Новые фишки

Конечно же, самая ожидаемая — нативное шифрование. Теперь можно зашифровать только нужные датасеты встроенным в ZFS шифрованием, и (по моему — главное) — вы можете отправлять зашифрованные данные через zfs send и БЕЗ расшифровки проверять целостность данных встроенными средствами, все возможности по сохранению целостности данных ZFS будут при вас!

Да, он очень долго добирался до продакшена. Далее по важности стоит упомянуть давно ожидаемый TRIM. Но теперь мы все спокойны - zpool trim спасёт наши нежные флешки. Отчасти потому, что для CoW файловых систем не так критична проблема с износом SSD.

Полезная мелочь. Теперь можно удалять случайно добавленные vdev массивы из пула (но только, если это sparse или mirror).

Кратко — снапшоты для всего состояния пула, НО дающие возможность откатить изменения не только данных, но и включенных на пуле features и изменений в структуре. Далее в нашем хит-параде — pool checkpoints. Ещё одна возможность обезопаситься.

Полезно для работы в средах с thin provisioned дисками для явного выделения пространства и исключения неожиданных просадок по производительности в дальнейшем. Pool initialization — заполнение нижележащего хранилища нулями.

Project accounting and quota — в уже имеющемся механизме квот теперь возможно использовать разделение на проекты.

Есть лимиты на время выполнения и память. Channel programs — возможность выполнять административные задачи атомарно с помощью Lua скриптов. Если вы занимаетесь автоматизацией — то это для вас.

Direct IO — для простоты прокинули работу Direct IO, внутри ничего не поменялось (просто вызовы идут максимально мимо кеша), зато теперь желающее работать в данном режиме ПО не будет горевать.

Теперь есть больше средств для управления из питона (ну и будет спокойнее за поддержку модуля). Проект Pyzfs влит в основной репозиторий и взят под крыло проекта ZFSonLinux. Также многие python скрипты адаптированы под python3.

А теперь вкусное — производительность

Теперь при scrub и resilver операциях сначала вычитываются метаданные, и только потом в максимально последовательном виде — данные. Тем самым восстановление массива и проверка целостности проходят на максимальной скорости.

Больше скорости богу скорости! Allocation classes — у vdev массивов появился тип носителей, теперь можно вынести хранение метаданных/таблиц дедупликации(DDT)/блоков данных менее Х Кбайт на отдельный vdev массив из более производительных дисков. (а по делу — эта возможность очень пригодится в грядущем DRAID).

Многие административные команды теперь работают быстрее за счёт точечного кеширования метаданных (к примеру, zfs list, zfs get).

С NVME конечно всё не выжмется, но станет лучше. Процесс аллокации данных параллелизован, теперь для каждого раздела свободного пространства (metaslab) создаётся несколько аллокаторов.

Тем самым уменьшится и влияние на производительность, и время пересборки. Отложенное восстановление целостности массива позволит не нагружать массив одновременной пересборкой нескольких дисков, а будет делать это последовательно.

При импорте пулов с большим количеством volumes увеличена скорость их регистрации в системе.

Также QAT теперь позволяет выгрузить на него расчёт шифрования и контрольных сумм.

Плюс куча мелких изменений (всё таки 2000+ коммитов в релизе!).

Ну и на десерт — интриги

Хотя ZFSonLinux оперативно добавляет поддержку свежих ядер Linux (сейчас поддерживаются версии 2.6.32 — 5.1*), мейнтейнеры ядра проявляют явную незаинтересованность в помощи сторонним модулям ("...we do not care at all about
external kernel modules... — greg k-h"). Так, требуемые для эффективной работы вызовы ядра в ветке 5.0 были изменены на GPL-only . В ядрах с этим патчем производительность ZFS будет значительно хуже. Спасает то, что данную функциональность можно реализовать на стороне модуля, что скорее всего и будет сделано. А пока можете брать пример с NixOS — они просто откатили патч в ядре 🙂

Но мы устояли 🙂 Также у проекта тоже появился Code of Conduct, что породило волну холиваров.

Всем рабочих бекапов и стабильных релизов!

Полезные ссылки:
— релиз на Github
— моя вводная в ZFS

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть