Назад | Перейти на главную страницу

Ext4 против XFS против Btrfs против ZFS для NAS

Мой вариант использования: у меня установлен Ubuntu Server 18.04 на SSD M.2. У меня есть жесткий диск емкостью 4 ТБ, который я хочу добавить в качестве хранилища. Поскольку это в основном для больших медиафайлов и резервных копий, он не будет записываться очень часто.

Какая файловая система, по вашему мнению, лучше всего подходит для этого варианта использования?

Мои главные кандидаты - Ext3 / 4, XFS, Btrfs и ZFS (не стесняйтесь выступать за другого).

Я не спрашиваю «Какая файловая система самая лучшая?» - не существует такого понятия, как «лучшая». Я просто спрашиваю людей, какая файловая система больше всего подходит для этого варианта использования. Пожалуйста, попробуйте включить:

Спасибо за ваш совет.

Обычно я использую одну из следующих двух файловых систем:

  • XFS для всего, что плохо работает с CoW (или для виртуальных машин, хранилище данных которых уже находится в файловой системе CoW) или когда требуется чрезвычайно быстрый прямой ввод-вывод;

  • ZFS ни для чего другого.

Для вашего варианта использования я бы использовал ZFS, особенно учитывая, что Ubuntu 18.04 уже поставляет его. Поскольку вы можете легко прикрепить другую ножку для зеркала к уже существующему устройству, ZFS очень хорошо отвечает этим требованиям. Например, позвольте назвать ваш диск nvme0p1:

  • zpool create tank /dev/nvme0p1 создайте единый пул vdev под названием «tank»;
  • zpool attach tank <newdev> /dev/nvme0p1 включает зеркальное отображение.

Если по каким-то причинам вы не используете / не можете использовать ZFS, то MDRAID и XFS - ваши друзья:

  • mdadm --create /dev/md200 -l raid1 -n 2 /dev/nvme0p1 missing создаст массив RAID1 с отсутствующей ногой (см. №1);
  • mdadm --manage /dev/md200 --add <newdev> прикрепляет новую ножку зеркала (образуя полный RAID1, см. №2)

После создания массива вы можете отформатировать его в XFS через mkfs.xfs

я делаю не предлагаем использовать BTRFS, так как производительность и устойчивость не на должном уровне. Например, из Вики Debian:

В настоящее время существует (07.07.2019, linux ≤ 5.1.16) ошибка, из-за которой профиль raid1 с двумя дисками навсегда становится доступным только для чтения, когда он второй раз монтируется в ухудшенном состоянии - например, из-за отсутствия / сбой / диск сброса ссылки SATA

Также обратите внимание, что коммерческие поставщики NAS, использующие BTRFS (читай: Synology), не используют собственную интегрированную функцию RAID; скорее они используют проверенный уровень Linux MDRAID.

РЕДАКТИРОВАТЬ: Хотя некоторые утверждают, что XFS подвержена потере данных, это просто неверно. Что ж, по сравнению с ext3, XFS (и другие файловые системы, поддерживающие отложенное размещение) могут потерять больше несинхронизированных данных в случае неконтролируемого отключения питания. Но синхронизированные данные (т.е. важные записи) на 100% безопасны. Более того, конкретная ошибка, усугубляющая потерю данных XFS исправлено более 10 лет назад. Эта ошибка отдельно, любой файловая система, готовая к отложенному распределению (включая ext4 и btrfs) воля потеря значительного количества или несинхронизированных данных в случае отключения питания неконтроллера.

По сравнению с ext4, XFS имеет неограниченное выделение inode, расширенные подсказки выделения (если вам это нужно) и, в последней версии, поддержку reflink (но они должны быть явно включены в Ubuntu 18.04, см. Справочная страница mkfs.xfs для дополнительной информации)


1: Пример /proc/mdstat файл с отсутствующим устройством:

Personalities : [raid1]
md200 : active raid1 loop0[0]
      65408 blocks super 1.2 [2/1] [U_]

unused devices: <none>

2: /proc/mdstat файл после добавления второго устройства

Personalities : [raid1]
md200 : active raid1 loop1[2] loop0[0]
      65408 blocks super 1.2 [2/2] [UU]

unused devices: <none>

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

Причина проста: значение по умолчанию - это тот, который, скорее всего, используется чаще всего, поэтому вероятность того, что какие-либо ошибки будут обнаружены и исправлены, является наибольшей. Различия между упомянутыми вами файловыми системами вряд ли будут иметь большое значение при повседневном использовании. Если производительность очень важна, рассмотрите возможность увеличения объема памяти, чтобы в вашей операционной системе было больше места для кэширования.

Тем не менее, если вы собираетесь использовать диск «в разных» операционных системах, я бы посоветовал получить два или, по крайней мере, разделить тот, который у вас есть, на два физических раздела, а затем использовать NTFS или exFAT на том, на котором у вас есть носитель.

Это больше похоже на вопрос для суперпользователь чем для serverfault, но некоторые идеи применимы и для этого сайта, поэтому я постараюсь ответить на некоторые вопросы:

  • XFS имеет репутацию не любителя потери мощности. С тех пор многое произошло, и RedHat, Oracle и подобные используют его в качестве файловой системы по умолчанию в настоящее время, поэтому я не удивлюсь, если сегодня это значительно меньшая проблема, чем раньше. Особенно, если у вас есть достойная политика резервного копирования, если ваш вариант использования такой, который дает выигрыш в скорости от этой файловой системы, это может стоить возможного риска.
  • ZFS без ECC RAM по-прежнему имеет очень хорошие функции, но вы рискуете не обнаружить некоторые экземпляры плохих данных. Я запускал ZFS без памяти ECC в течение нескольких лет в домашних условиях, подобных тем, которые вы описываете, и никогда не испытывал явной потери данных, но, опять же, я точно не сохранил важные данные на этом томе. С тех пор я перешел на подходящее серверное оборудование и теперь чувствую себя намного более комфортно, используя свое хранилище для важных вещей.
  • С ZFS вы должны просто иметь возможность добавить диск в однодисковый пул для создания зеркала. Я не пробовал это на практике, но при проверке получаю несколько успешных результатов поиска. утка. Я не уверен в других системах, но если у вас есть какой-то менеджер томов под вашей файловой системой, переход на RAID1 с одного диска должен быть тривиальным.
  • Файловые системы на основе CoW (zfs, btrfs) медленнее, чем системы с меньшим набором функций, и они больше зависят от наличия достаточно мощного оборудования, поддерживающего их.

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

Если вы заботитесь о целостности ваших данных в долгосрочной перспективе, я бы посоветовал zfs или btrfs.

Насколько я понимаю, эти двое - единственные, которые позволяют вам очищать данные, искать и потенциально исправлять гниль.

Я не так хорошо знаком с zfs, но использую btrfs около 5-6 лет. Я запускаю его на RAID1 и еженедельно выполняю чистку. (Примечание: если у вас нет зеркального отображения, очистка просто пометит эти поврежденные блоки, а не починит!)

Единственная проблема, с которой я столкнулся, - это ошибка, из-за которой экстенты не освобождались автоматически, поэтому диск заполнялся, но фактически не был заполнен.

Оба имеют сжатие и дедупликацию, но дедупликация btrfs отключена, что некоторые предпочитают.

Еще один ресурс, который стоит проверить, - это недавний пост, который попал в Хакерские новости: Пять лет BTRFS

Примечание. Похоже, что некоторые работы в сторону очистки XFS / ext4

Вы можете создать файловую систему в формате XFS на том, что является зеркалом mdadm, не имея реального зеркала.

Создайте перегородку как зеркало с тремя зеркалами, но двумя отсутствующими. Позже вы можете добавить два недостающих.