Ext4 против Btrfs: почему мы делаем переход [Linux]

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

Используемая конфигурация оборудования

Для реализации задачи мы будем использовать VM из облака NetPoint, Вы же можете использовать то, что Вам больше нравится. Самое важное — планирование системы хранения данных VM. Мы будем использовать SSD-диск размером 10GB для СУБД и точек восстановления (за последние 24 часа) и SATA-диск 120GB для хранения бэкапов СУБД за последний месяц и копии точек восстановления за последние сутки для быстрого восстановления в случае если BTRFS сломается. Наша задача — иметь возможность восстановления работоспособности MySQL в последней точке восстановления в случае полной аварии BTRFS за 5-10 минут.

NB: BTRFS чувствительна к ограничением дискового пространства. Не допускайте, чтобы на файловой системе с BTRFS закончилось место.

Возможности

Считается, что Btrfs имеет ряд решений, впервые появившихся в ReiserFS[9], при этом не поддерживает некоторые базовые функции. Список возможностей системы по состоянию на 2011 год[10]:

  • Проверка целостности без размонтирования;
  • Доступные для записи снимки (writeable snapshots);
  • Динамическое выделение индексных дескрипторов inode (нет ограничения на максимальное количество файлов в файловой системе);
  • Добавление и удаление устройств хранения при смонтированной файловой системе (накопители и разделы легко подключаются в Btrfs и заменяются или удаляются при необходимости);
  • Поддержка сложных многодисковых конфигураций — уровней 0, 1, 5, 6 и 10 (реализовано, но 5 и 6 пока не считаются стабильными), а также реализация различных политик избыточности на уровне объектов файловой системы — то есть возможно назначить, к примеру, зеркалирование для какого-либо каталога или файла (в планах).
  • Сжатие (LZO, zlib, zstd — реализовано, предлагались патчи для LZ4 и Snappy)[11][12];
  • Подтома (subvolumes);
  • Эффективное клонирование файловой системы и создание инкрементальных архивов;
  • Дефрагментация смонтированной файловой системы.
  • Журналирование с копированием при записи.
  • Лимиты (отдельно для каждого подтома или группы подтомов, по фактически занимаемому месту или по «официальному»)
  • Контроль целостности блоков данных и метаданных с помощью контрольных сумм.
  • Зеркалирование метаданных даже в конфигурации с одним накопителем (отключается на SSD).
  • Полностью распределённое блокирование.
  • Поддержка ACL.
  • Защита от потери данных.
  • Выбор хеш-алгоритма для контроля целостности данных и метаданных (CRC-32). Начиная с версии 5.5 реализованы[13]: xxHash[en], SHA256, BLAKE2B.
  • Поддержка NFS (пока неполная).
  • Флаги совместимости, необходимые для изменения дискового формата в новых версиях Btrfs с сохранением совместимости со старыми.
  • Резервные копии суперблока, по крайней мере по одной на устройство.
  • Гибридные пулы (в планах) — btrfs старается перемещать наиболее используемые данные на самое быстрое устройство, вытесняя с него «залежавшиеся» блоки, эта политика хорошо согласуется с моделью использования SSD-накопителей совместно с дисковыми.
  • Балансировка данных между устройствами в Btrfs возможна сразу после добавления диска к пулу, отдельной командой, а не только постепенно, в процессе использования (как это реализовано в ZFS).
  • Диски для горячей замены, поддержка которых появилась и в ZFS (в планах).
  • Офлайн-дедупликация (в примонтированном виде, но после окончания записи — ядро и новее), в перспективе — дедупликация будет осуществляться во время записи файла.
Читайте также:  Как сбросить root-пароль Linux-сервера в облаке

Несмотря на то, что Btrfs изначально не способна вести себя как распределённая (сетевая) файловая система, компания Oracle принялась за реализацию сетевого протокола файловой системы CRFS[14], который спроектирован и оптимизирован как раз под Btrfs.

В ранних версиях поддерживалась миграция с файловых систем ext3 и ext4 и обратно (до момента обновления), но начиная с версии ядра 4.0 использование функции не рекомендовано в связи с потенциальной опасностью[15].

Создание файла подкачки в Btrfs возможно с марта 2019 года (Linux kernel 5.0), файл при этом создается с флагом nocow и должен располагаться на одном накопителе[16].

Зачем переключать файловые системы?

ext4 стало еще одним улучшением файловой системы ext3, которое было улучшением по сравнению с файловой системой ext2. Хотя ext4 — очень надежная файловая система, которая была выбранной по умолчанию почти для всех дистрибутивов в течение последних нескольких лет, она сделана из устаревшей кодовой базы. Кроме того, пользователи Linux ищут много новых функций в файловых системах, которые ext4 не обрабатывает самостоятельно.

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

BtrFS

BtrFS от Oracle Corp – это новый тип файловой системы, которая была создана для уменьшения проблем, повышения производительности системы и упрощения восстановления.

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

Отсутствие ведения журнала позволяет сэкономить на пространстве записи (которое ограничено для твердотельных накопителей).

BtrFS

Кроме того, он имеет более современную архитектуру, что делает его довольно быстрым при доступе к данным.

Читайте также:  Очень неожиданно: Вышла iOS 12.4.6 для старых устройств

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

Кроме того, BtrFS также имеет надежную функцию моментальных снимков, которая позволяет пользователям мгновенно создавать (и выполнять откат) изменения в системе.

Как сжимать файлы с помощью NTFS-накопителя

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

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

Чтобы включить сжатие NTFS на жестком диске, выполните следующие действия.

  1. Откройте Проводник.
  2. Нажмите на Этот компьютер на левой панели.
  3. В разделе «Устройства и диски» щелкните правой кнопкой мыши хранилище, которое вы хотите сжать, и выберите параметр Свойства.
  4. Установите флажок Сжать этот диск, чтобы сэкономить место на диске .
  5. Нажмите кнопку Применить.
  6. В диалоговом окне «Подтверждение изменений атрибутов» выберите Применить изменения к диску (буква диска), подпапкам и файлам.
  7. Нажмите кнопку ОК.

После выполнения этих действий NTFS включит сжатие всех файлов на накопителе.

Вы можете использовать сжатие на диске с файлами или без файлов, но если диск не пустой, NTFS потребуется выполнить процесс уменьшения файлов, что может занять много времени. (Обычно рекомендуется включать сжатие на пустом диске перед перемещением на него файлов.)

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

Изменение размера файловой системы и разделов

Для btrfs доступно онлайн (на лету) изменение размера файловой системы. Для начала нужно примонтировать нужный раздел:

Читайте также:  Apple.com/bill – что это, сняли деньги с карты Сбербанка

Добавление 2Гб:

Уменьшение на 4Гб:

Задать размер в 20Гб файловой системе:

Использование всего свободного места:

Вышеперечисленные команды справедливы только для файловой системы. Чтобы изменить размер раздела, надо воспользоваеться еще другими утилитами, например fdisk. Рассмотрим пример для уменьшения раздела на 4Гб. Монтируем и уменьшаем раздел:

Теперь отмонтируем раздел и используем fdisk:

Никто из нас не застрахован от ошибок. Иногда синдром кривых рук приводит к весьма печальным последствиям. Иногда очень сложно удержаться и не провести «антинаучные» эксперименты с системой или запустить скрипт/приложение, скачанное из непроверенного источника. И здесь на помощь приходят различные средства для запуска приложений в изолированной среде и расширенные возможности файловой системы.