Немного истории

Все началось с Solaris и новой “революционной” файловой системы ZFS в нем. Через какое-то время Solaris умер, а ZFS была перенесена в BSD и в Linux. Любители ZFS считают, что в BSD более правильная версия, чем в Linux.

В Linux сложилось поверье, что ZFS использует огромное количество памяти, но это не так: из-за кривой интеграции в ядро процесс ZFS виден отдельно от кеша файловой системы ядра, хотя он так же является кешем. Известно, что кеш файловой системы забирает всю свободную память, но так же и отдает ее при необходимости. В общем, просто не нужно на него обращать внимание. Реально память используется при включенной дедубликации, но это уже нужно решать – память или эта фича.

BTRFS появилась как переработка ext4 (основной файловой системы Linux) для добавления функций, аналогичных ZFS. BTRFS была долгое время в разработке, но сейчас уже говорят, что стабильна.

RedHat уже долго разрабатывают XFS и продвигают LVM. Они отказались включать ZFS в дистрибьютив из-за лицензии (при этом Ubuntu включили, а Debian включили, но со сборкой на компьютере пользователя). ZFS имеет открытую лицензию, но есть вопросы совместима ли она с лицензией ядра или нет. А BTRFS включили как эксперимент в CentOS 7 и выпилили его поддержку в CentOS 8. При этом сказали: да у нас уже практически все есть для этих новых потрясающих функций, нужно лишь пару “скриптов” только написать. Так появился Stratis – некая обертка над device-mapper, LUKS, XFS и Clevis, которая должна по функциям закрыть ZFS и BTRFS.

Какие дистрибьютивы что используют?

NAS:

  • TrueNAS SCALE использует ZFS, т.к. они пришли с BSD и там это единственный вариант.
  • OpenMediaVault использует Ext4, XFS, BTRFS и ZFS.
  • Unraid использует XFS и BTRFS.
  • EasyNAS использует BTRFS.
  • Rockstor использует BTRFS.
  • Synology используют BTRFS и рекомендуют ее по умолчанию.

Дистрибьютивы:

  • RHEL/CentOS/Rocky поддерживают только Stratis, но есть дополнительные репозитарии: как поставить ZFS и как поставить BTRFS (или так).
  • Fedora поддерживает BTRFS и Stratis.
  • Ubuntu поддерживает все (ZFS в пакетах по умолчанию, а утилы в universe – не поддерживается Canonical).
  • Debian поддерживает все, но ZFS поставляется как бы в исходниках, чтобы избежать потенциальных юридических проблем.

В итоге, Linux-native NAS все используют BTRFS. RH что-то опять чудит, остальным дистрибьютивам не принципиально, но коммерчески они все ZFS не поддерживают.

Какие такие потрясающие функции?

  • чек-суммы файлов и работы по проверке этих чек-сумм время от времени – перепроверяет, что файлы еще можно прочитать (и автоматически исправляет, если включен функционал raid)
  • снапшоты – их удобно бекапить и на них можно откатываться (как легкий вариант бекапов)
  • прозрачное управление железом: добавление дисков, зеркалирование (и прочие варианты raid)
  • “легкие” вложенные друг в друга “файловые системы”: позволяет менять настройки и делать снимки фактически отдельных папок, а не как изначально при установке системы было определено для всей файловой системы
  • прозрачное сжатие
  • прозрачное шифрование
  • дедубликация данных (экономия места, если файлы одинаковые или их части)
  • и все это из одной консольной утилы (для каждой ФС, естественно, она своя и немного другая)
  • что-то еще забыл?

Что выбрать?

Stratis имеет смысл выбирать только если есть платная подписка с ней, а BTRFS и ZFS в подписке нет. Уж больно это vendor lock и непопулярно (а значит с большей вероятностью возможны проблемы).

Корневую файловую систему (куда ставиться операционная система) я бы оставил по умолчанию, особого смысла менять нет.

Для NAS – BTRFS, тут виден консенсус. Да и работа со множеством дисков и снапшотами тут имеет значение.

При этом все равно ZFS нравится по 3м причинам:

  • она действительно уже давно разработана и особых проблем даже на Linux не было
  • в ней нет утилы проверки жесткого диска (в отличие от остальных систем), т.е. если уж записано, то оно консистентно (не испортится при записи)
  • на сайте проекта централизованно написано как ставить ее под практически любые ОС

В итоге, сейчас скорее приоритет для BTRFS, но он минимален.

У меня на серверах семейство RH, поэтому для данных – XFS, т.к. все эти новые фичи хороши, но не принципиальны обычно, а ставить вне дистрибьютива BTRFS/ZFS не хочется.

Естественно, это все в контексте домашнего использования. В организациях есть специально обученные люди, которые понимая специфику, принимают решения.