Немного истории
Все началось с 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 не хочется.
Естественно, это все в контексте домашнего использования. В организациях есть специально обученные люди, которые понимая специфику, принимают решения.