Мой вариант использования: у меня установлен 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, но некоторые идеи применимы и для этого сайта, поэтому я постараюсь ответить на некоторые вопросы:
Как и в корпоративной среде, я определенно потратил бы время, чтобы запустить тесты с ожидаемой нагрузкой, чтобы из первых рук получить представление о производительности и функциях.
Если вы заботитесь о целостности ваших данных в долгосрочной перспективе, я бы посоветовал zfs или btrfs.
Насколько я понимаю, эти двое - единственные, которые позволяют вам очищать данные, искать и потенциально исправлять гниль.
Я не так хорошо знаком с zfs, но использую btrfs около 5-6 лет. Я запускаю его на RAID1 и еженедельно выполняю чистку. (Примечание: если у вас нет зеркального отображения, очистка просто пометит эти поврежденные блоки, а не починит!)
Единственная проблема, с которой я столкнулся, - это ошибка, из-за которой экстенты не освобождались автоматически, поэтому диск заполнялся, но фактически не был заполнен.
Оба имеют сжатие и дедупликацию, но дедупликация btrfs отключена, что некоторые предпочитают.
Еще один ресурс, который стоит проверить, - это недавний пост, который попал в Хакерские новости: Пять лет BTRFS
Примечание. Похоже, что некоторые работы в сторону очистки XFS / ext4
Вы можете создать файловую систему в формате XFS на том, что является зеркалом mdadm, не имея реального зеркала.
Создайте перегородку как зеркало с тремя зеркалами, но двумя отсутствующими. Позже вы можете добавить два недостающих.