На прошлой неделе один из разработчиков FreeBSD Matt Macy выдвинул предложение об использовании реализации ZFS от проекта ZFSonLinux. Таким образом все требуемые изменения для FreeBSD будут сразу интегрированы в кодовую базу ZFSonLinux. Предложением это не завершилось, уже создан форк, в котором производятся требуемые доработки, а также получено одобрение core разработчиков ZFSonLinux на включение доработок для FreeBSD в единую кодовую базу.


image

Положительная ли это новость? Конечно же да! Суть в концентрации всех причастных к проекту 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, которые также не были портированы в другие проекты.


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


Ура, товарищи!


P.S. Почему вам может быть интересен ZFS.

Комментарии (11)


  1. Dorogonov_DA
    28.12.2018 15:05

    А никто не подскажет — это будет полноценное портирование кода и поддержка на уровне ядра, или очередная прослойка вроде linuxkpi?


    1. gmelikov Автор
      28.12.2018 15:09
      +1

      Нет, это будет не прослойка. Архитектурно для FreeBSD ничего не поменяется, просто в части ZFS будет использоваться общая кодовая база с Linux, с OS-specific кусками lists.freebsd.org/pipermail/freebsd-current/2018-December/072463.html.


    1. BasilioCat
      28.12.2018 15:13
      +1

      ZFS нативен для соляриса, под FreeBSD работает через слой совместимости — модуль ядра opensolaris.ko.


  1. nidalee
    29.12.2018 11:25

    можно выделить на отдельные носители (SSD/NVME): Блоки, размером меньше заданного (например, файлы размером до 4KB)
    Это интересно, надо посмотреть. На Ubuntu уже есть?


    1. gmelikov Автор
      29.12.2018 12:49

      Эта функция будет в версии 0.8 (она уже в кодовой базе master ветки, в статусе rc).


      1. nidalee
        29.12.2018 13:08

        Там что-то поменяли, и теперь вроде как у пулов не версии, а флаги какие-то. Как и где мне своевременно узнать о том, что я теперь так могу? И в существующий пул можно будет такую функцию добавить?


        1. gmelikov Автор
          29.12.2018 14:30

          Верно, в OpenZFS теперь у пула всегда версия 5000 и набор флагов. Если хотя бы один флаг пула не поддерживается конкретной реализацией — он не импортируется (но есть и read-only флаги, то есть с ними пул можно примонтировать, но только в режиме чтения). Флаги можно активировать выборочно.

          Самые актуальные новости — в описании релизов ZFSonLinux github.com/zfsonlinux/zfs/releases. Описания флагов — man zpool-features


          1. nidalee
            29.12.2018 14:55

            А по второму вопросу можете ответить? С существующим пулом такое можно сделать?


            1. gmelikov Автор
              29.12.2018 16:49

              В рамках поддерживаемых запущенным кодом флагов — можете любые активировать, а некоторые — даже отключать.


              zpool set feature@multi_vdev_crash_dump=enabled tank1


              1. nidalee
                29.12.2018 17:07

                И после установки флага все файлы размером 4кб и меньше начнут копироваться на SSD? Этот диск добавляется в пул отдельно по аналогии с ARC?


                1. 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