На прошлой неделе один из разработчиков FreeBSD Matt Macy выдвинул предложение об использовании реализации ZFS от проекта ZFSonLinux. Таким образом все требуемые изменения для FreeBSD будут сразу интегрированы в кодовую базу ZFSonLinux. Предложением это не завершилось, уже создан форк, в котором производятся требуемые доработки, а также получено одобрение core разработчиков ZFSonLinux на включение доработок для FreeBSD в единую кодовую базу.
Положительная ли это новость? Конечно же да! Суть в концентрации всех причастных к проекту OpenZFS разработчиков в одном месте, в одной кодовой базе.
До настоящего момента OpenZFS предлагал в качестве опорного пункта репозиторий проекта Illumos, через который должен был происходить обмен кодом между всеми участниками коллаборации (ZFSonLinux, FreeBSD, Illumos, ZFSonOSX). Стоит отметить, что совместимость между реализациями поддерживалась на должном уровне. Но, к сожалению, портирование изменений при условии не 100% идентичности кода — операция весьма трудозатратная.
Основной же мотивацией является де факто полный переход ключевых разработчиков в проект ZFSonLinux. Ранее основной организацией, поддерживающей кодовую базу Illumos, была Delphix. Однако, в начале этого года ими было принято решение о миграции на Linux.
Основная жизнь происходит в (как ни странно) проекте ZFSonLinux. За несколько лет в нём появилось множество новых функций, основные:
- Встроенное шифрование (с возможностью проверки целостности без ключа!)
- Последовательный "scrub" — теперь проверка целостности данных проводится оптимальным способом
- Metadata allocation class — можно выделить на отдельные носители (SSD/NVME):
- Метаданные
- Данные дедупликации
- Блоки, размером меньше заданного (например, файлы размером до 4KB)
- Large dnodes — оптимизации для систем, генерируюих большое число метаданных (разработано специально для Lustre)
- Механизм кеширования ARC переработан с целью минимизации фрагментации (используется механизм scatter/gather)
- Векторизация кода RAIDZ, векторизация контрольных сумм
Стоит отметить, что наравне с новым функционалом, разработчики FreeBSD отметили включение многих правок по стабилизации и deadlock'ам в ZFSonLinux, которые также не были портированы в другие проекты.
Будем надеяться, что данный шаг позволит и дальше улучшать продукт, а также сконцентрирует все ресурсы в одной единой кодовой базе.
Ура, товарищи!
Комментарии (11)
nidalee
29.12.2018 11:25можно выделить на отдельные носители (SSD/NVME): Блоки, размером меньше заданного (например, файлы размером до 4KB)
Это интересно, надо посмотреть. На Ubuntu уже есть?gmelikov Автор
29.12.2018 12:49Эта функция будет в версии 0.8 (она уже в кодовой базе master ветки, в статусе rc).
nidalee
29.12.2018 13:08Там что-то поменяли, и теперь вроде как у пулов не версии, а флаги какие-то. Как и где мне своевременно узнать о том, что я теперь так могу? И в существующий пул можно будет такую функцию добавить?
gmelikov Автор
29.12.2018 14:30Верно, в OpenZFS теперь у пула всегда версия 5000 и набор флагов. Если хотя бы один флаг пула не поддерживается конкретной реализацией — он не импортируется (но есть и read-only флаги, то есть с ними пул можно примонтировать, но только в режиме чтения). Флаги можно активировать выборочно.
Самые актуальные новости — в описании релизов ZFSonLinux github.com/zfsonlinux/zfs/releases. Описания флагов —man zpool-features
nidalee
29.12.2018 14:55А по второму вопросу можете ответить? С существующим пулом такое можно сделать?
gmelikov Автор
29.12.2018 16:49В рамках поддерживаемых запущенным кодом флагов — можете любые активировать, а некоторые — даже отключать.
zpool set feature@multi_vdev_crash_dump=enabled tank1
nidalee
29.12.2018 17:07И после установки флага все файлы размером 4кб и меньше начнут копироваться на SSD? Этот диск добавляется в пул отдельно по аналогии с ARC?
gmelikov Автор
30.12.2018 18:34Не копироваться, а именно храниться. Сначала добавляете SSD в пул для хранения нужного класса данных (в этот момент флаг сам активируется), далее донастраиваете по желанию размер файлов для хранения на SSD
special_small_blocks
. Рекомендую обратиться к документации github.com/zfsonlinux/zfs/blob/master/man/man8/zpool.8#L541 github.com/zfsonlinux/zfs/pull/5182 github.com/zfsonlinux/zfs/blob/master/man/man8/zfs.8#L1525
Dorogonov_DA
А никто не подскажет — это будет полноценное портирование кода и поддержка на уровне ядра, или очередная прослойка вроде linuxkpi?
gmelikov Автор
Нет, это будет не прослойка. Архитектурно для FreeBSD ничего не поменяется, просто в части ZFS будет использоваться общая кодовая база с Linux, с OS-specific кусками lists.freebsd.org/pipermail/freebsd-current/2018-December/072463.html.
BasilioCat
ZFS нативен для соляриса, под FreeBSD работает через слой совместимости — модуль ядра opensolaris.ko.