Файловая система Linux: XFS

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

Файловая система Linux: XFS

Содержание

  1. Что такое файловая система XFS?
  2. Структура файловой системы XFS
  3. Суперблок
  4. Информация о свободных блоках
  5. Информация о свободных и выделенных узлах информации
  6. B+ деревья
  7. Архитектурные особенности
  8. 64-битная файловая система
  9. Отложенное выделение.
  10. Изменение размера "на лету" (только расширение).
  11. Дефрагментация в реальном времени выполняется с помощью следующих инструментов:
  12. Создание и изменение размера в XFS
  13. Монтирование XFS
  14. Изменение размера XFS
  15. Преимущества XFS
  16. Проверка степени фрагментации в XFS
  17. Журналирование XFS
  18. Сравнение производительности XFS с другими файловыми системами.
  19. Недостатки файловой системы XFS
  20. Доступ к разделам XFS из Windows
  21. Установка XFS на SSD-накопитель
  22. Преимущества использования XFS на SSD
  23. Недостатки использования XFS на SSD

Что такое файловая система XFS?

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

XFS считается расширенной файловой системой. Это высокопроизводительная файловая система с 64-битными журналами. Поддержка XFS была включена в ядро Linux примерно в 2002 году. XFS поддерживает максимальный размер файловой системы в 8 эксабайт для 64-битной файловой системы.

Однако у XFS есть некоторые ограничения. Например, раздел этой файловой системы нельзя уменьшить, и производительность при работе с большим количеством файлов низкая. RHEL 7.0 использует XFS в качестве файловой системы по умолчанию.

Структура файловой системы XFS

Вся файловая система XFS разделена на так называемые Группы выделения, аналогичные Группам блоков в Ext2FS.

Размер/количество и другие описания Групп выделения находятся в суперблоке, который находится в начале каждой из Групп выделения (то есть это то же самое, что и в Ext2FS), поэтому перейдем сразу к описанию его структуры.

По крайней мере, первые 0x800 байт (2048 байт, 2 Кб) каждой Группы выделения имеют одинаковый формат. И нулевая (все необходимо читать с нуля) Группа выделения (и с ней нулевой суперблок) находится прямо в начале устройства. Вот важное отличие от абсолютного числа других файловых систем: когда файловая система XFS была разработана для платформы IRIX, разработчики даже не думали о загрузчиках в начале диска, поэтому нет смысла пытаться установить загрузчик на раздел XFS.

Группа выделения разделена на четыре других структуры:

  • Суперблок
  • Информация о свободных блоках
  • Информация о выделенных и свободных узлах информации
  • Блоки, выделенные для расширения B-дерева

Суперблок

Суперблок находится в начале группы выделения. Описание структуры struct xfs_sb, описывающей его, можно найти в файле /usr/include/xfs/xfs_sb.h

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

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

Мы будем использовать 5 полей для описания структуры:

  • Смещение от начала структуры (в шестнадцатеричной системе счисления)
  • Размер поля в битах
  • Название элемента в структуре
  • Некоторое типичное значение (которое было получено после форматирования некоторого тестового образа)
  • Комментарий

Информация о свободных блоках

Информация о свободных блоках группы выделения находится в ней по смещению 0x0200.

Определение структуры xfs_agf находится в файле /usr/include/xfs/xfs_ag.h.

Было решено хранить список свободных блоков не в битовой карте, а в B-дереве с элементами «Начальный блок свободных блоков фрагмента»/»Размер фрагмента», и не в одном B-дереве, а в двух дубликатах: один элемент сортируется по номеру начального блока фрагмента, а второй — по размеру этих свободных фрагментов.

Это позволяет быстро найти группу свободных блоков наиболее подходящего размера.

Информация о свободных и выделенных узлах информации

Аналогично свободным блокам, свободные и выделенные узлы информации групп выделения описываются в структуре xfs_agi (см. также /usr/include/xfs/xfs_ag.h для определения) по смещению 0x400.

Узлы информации выделяются группами по 64 штуки. Информация о занятости/свободности узлов информации этой группы хранится в том же битовом массиве (64-разрядное число).

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

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

B+ деревья

XFS использует B+ деревья повсюду. Они используются для индексирования пакетов инодов, списков свободных областей, элементов каталогов и записей файловых карт.

B+ деревья XFS имеют довольно традиционную структуру: во внутренних узлах хранятся только ключи и указатели на потомков, а в листьях содержатся ключи и данные.

Поскольку в XFS есть несколько типов деревьев, общий код обрабатывает только стандартные заголовки блоков (xfs_btree.h).

После заголовка идут массивы данных. Для внутренних узлов это:

  • Два списка — ключи и указатели на потомков, растущие в середине. Для листьев это массив записей, отсортированных по возрастанию.
  • Формат ключа и записей соответственно определяются типом дерева.

Архитектурные особенности

Как уже упоминалось выше, XFS состоит из секций данных (содержит метаданные и может содержать журналы), журнала и секции реального времени.

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

Размер блока в Linux составляет 4 КБ. Выделение пространства осуществляется с помощью экстентов (до 8 ГБ).

Ранее XFS не была подходящей для хранения большого количества маленьких файлов (например, почтового сервера), так как она медленно обрабатывает метаданные, но постепенно улучшается. Например:

  • файлы, открытые во время внезапного выключения компьютера, будут заполнены нулями (исправлено);
  • мгновенное создание и расширение файловой системы без дополнительных затрат (ext4 имеет 1,5%, т.е. 269 ГБ для 16 ТБ) и примерно такие же накладные расходы, как у ext4, для хранения файлов (на 0,07% меньше для набора из 10 ТБ из 10 миллионов файлов);
  • 64-битные номера инодов для файловой системы размером 2 ТБ и более, не все 32-битные программы смогут справиться с этим (исправлено);

64-битная файловая система

Выделение пространства с помощью extent’ов (Extent — указатель на начало и количество последовательных блоков). В extent’ах выделяется пространство для хранения файлов и свободных блоков. B-деревья активно используются для хранения различных данных файловой системы: для списка блоков с сериями inode, списка extent’ов с содержимым файлов, файловых каталогов, списков свободных блоков extent’ов (свободные блоки индексируются как по размеру блока, так и по его расположению). Однако использование B-деревьев не является догмой — небольшой файл или каталог могут быть размещены непосредственно внутри inode.

Отложенное выделение.

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

Изменение размера «на лету» (только расширение).

Размещение в нескольких линейных областях (по умолчанию 4) так называемых «групп выделения» (повышает производительность путем выравнивания активности запросов к разным дискам на массивах RAID-типа «строка», а также при асинхронном доступе к файловой системе на обычном диске).

Дефрагментация в реальном времени выполняется с помощью следующих инструментов:

  • API для ввода-вывода в реальном времени (для жестких или мягких приложений в реальном времени, таких как потоковое видео).
  • Интерфейс (DMAPI) для поддержки иерархического управления носителями информации (HSM).
  • Инструменты для резервного копирования и восстановления (xfsdump и xfsrestore).
  • Индексные блоки inode выделяются динамически (по мере необходимости), и неиспользуемые inode могут быть освобождены (освобождение места для хранения).
  • Маленькие «накладные расходы» — размер структур служебных данных. На новой файловой системе XFS тратится примерно 0,54% на служебные нужды. Это достигается за счет небольшого количества заголовков для групп (групп выделения) и динамического выделения inode.

Создание и изменение размера в XFS

Предположим, что у вас уже есть готовый раздел для создания файловой системы. Если нет, вы можете создать его с помощью утилиты Gparted или fdisk. Предположим, что раздел, на котором вы хотите создать файловую систему XFS, это /dev/sda11, вы можете сделать это с помощью стандартной утилиты mkfs. Команда выглядит так:

$ sudo mkfs.xfs /dev/sda11

Если файловая система уже существует на указанном разделе, вы должны использовать опцию -f, чтобы перезаписать ее:

$ sudo mkfs.xfs -f /dev/sda11

Во время создания утилита будет отображать текущую информацию о файловой системе и таблице метаданных.

Монтирование XFS

Теперь нам нужно примонтировать только что созданный раздел. Вы можете создать отдельную папку для монтирования или примонтировать раздел в /mnt. Например, мы можем создать папку /mnt/db. Затем вы можете примонтировать раздел, как и все остальные файловые системы, с помощью команды mount:

$ sudo mkdir /mnt/da11
$ sudo mount /dev/sda11 /mnt/db
$ sudo mount | grep sda11

Теперь вы можете записывать файлы в этот раздел. Большинство параметров файловой системы устанавливаются с помощью mount. Давайте рассмотрим основные параметры монтирования, специфичные для XFS:

  • inode64 — если у вас есть устройство размером более 2 Тб, вам нужно использовать этот параметр монтирования для улучшения файловой системы;
  • nobarrier — XFS имеет барьер записи данных, чтобы важные данные не потерялись при неожиданной перезагрузке. Если вы уверены, что ваше оборудование полностью надежно, то барьер следует отключить для повышения производительности;
  • logdev — позволяет журналировать файловую систему во внешний файл;
  • sunit — устанавливает размер одного блока данных для массивов RAID. Размер по умолчанию — 512 байт;
  • norecovery — по умолчанию каждый раз, когда файловая система монтируется, она проверяется и исправляется, если она не была правильно смонтирована. Этот параметр отключает эту процедуру;
  • quota — включает поддержку дисковых квот для пользователей.

Вы можете использовать любой из этих параметров для настройки вашей файловой системы

После монтирования вы можете просмотреть информацию о метаданных файловой системы:

$ sudo xfs_info /dev/sda11

Если вы хотите, чтобы этот раздел монтировался автоматически, вам необходимо настроить xfs fstab для монтирования. Все, что вам нужно сделать, это добавить строку:

$ sudo vi /etc/fstab/dev/sda11 /mnt/db xfs defaults 0 0

Изменение размера XFS

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

$ df –h

Затем размер XFS увеличивается в два этапа. Есть одна вещь, связанная с расширением размера онлайн — вам нужно увеличить размер раздела в таблице разделов, и единственный способ сделать это без размонтирования — это использование LVM. В других конфигурациях вам все равно придется размонтировать. Сначала измените размер раздела с помощью Gparted, например, а затем увеличьте размер файловой системы. Вы можете сделать это даже если файловая система смонтирована. Выполните команду:

$ xfs_growfs /mnt/db

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

$ df –h

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

Преимущества XFS

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

Для переорганизации расположения файлов (дефрагментации) используется команда xfs_fsr. Ее можно использовать как для всего раздела, так и для отдельного файла. Для выполнения дефрагментации необходимо иметь достаточно свободного места на разделе для копирования любого файла. По завершении операции каждый файл будет занимать один extent.

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

xfs_fsr -v /dev/

Дефрагментация отдельного файла выполняется с помощью команды:

xfs_fsr -v 

Опция -v отображает дополнительную информацию.

Проверка степени фрагментации в XFS

Вы можете получить информацию о степени фрагментации раздела с помощью команды:

xfs_db -r -c frag /dev/

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

Результат выглядит следующим образом:

Файловая система XFS

Журналирование XFS

Как и большинство современных файловых систем, XFS поддерживает журналирование метаданных для быстрого восстановления в случае аварийной перезагрузки. Как и ReiserFS, XFS использует логическое журналирование. Однако, в отличие от ext3, журналирование в XFS не происходит по блокам файлов, а в эффективном дисковом формате, где изменяются только метаданные. Для XFS особенно рекомендуется использование логического журналирования. На высокопроизводительном оборудовании (которое обычно используется для XFS) журналирование является наиболее спорным ресурсом. Использование экономичного логического журналирования позволяет минимизировать непродуктивное потребление ресурсов. Кроме того, XFS позволяет хранить журнал на другом блочном устройстве (разделе, «дешевом» диске). Эта функция позволяет экономить дорогостоящие ресурсы и еще больше увеличивает скорость XFS.

Как и в ReiserFS, XFS журналирует только метаданные, а не данные сами по себе. Это означает, что в XFS (как и в ReiserFS) может быть потеряны данные, которые были изменены перед аварийной перезагрузкой. Однако, у XFS есть два свойства журнала, которые снижают вероятность потери данных по сравнению с ReiserFS.

XFS гарантирует, что любые «незаписанные» блоки заполняются нулями. Поскольку блоки с нулевыми байтами в системных файлах игнорируются, устраняется уязвимость безопасности.

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

Сравнение производительности XFS с другими файловыми системами.

До недавнего времени выбор файловой системы для Linux был невелик. Те, кто предпочитал высокую производительность, выбирали ReiserFS, а те, кому важна целостность данных, предпочитали ext3. С появлением поддержки XFS для Linux выбор стал не таким простым. Возник вопрос, является ли ReiserFS лидером по производительности во всех условиях?

Недавно наши эксперты провели сравнение производительности XFS, ReiserFS и ext3. Но, прежде всего, следует отметить, что результаты показывают только общую динамику зависимости производительности файловой системы от нагрузки на систему с одним процессором.

Тестирование показало, что XFS — это очень быстрая файловая система. XFS является постоянным лидером в тестах с манипуляцией больших файлов. Этот результат вполне предсказуем, так как она была разработана именно для этой цели. Также была замечена относительно медленная операция удаления файлов. В этом плане она уступает как ReiserFS, так и ext3.

В других тестах производительность XFS была близка к производительности ReiserFS и всегда превосходила ext3. Приятной особенностью XFS является то, что она не генерирует избыточную активность на диске. XFS пытается кэшировать как можно больше данных, и «причиной» сброса на диск является заполнение памяти, а не временной интервал. Когда данные записываются на диск, это не оказывает значительного влияния на другие операции ввода-вывода. В отличие от этого, в ext3 (режим «data=ordered») периодические сбросы данных на диск вызывают проблемы с интерактивностью и даже диск-трэшингом при высоких операциях ввода-вывода.

Недостатки файловой системы XFS

К сожалению, у файловой системы XFS есть и недостатки. Среди наиболее значимых можно выделить следующие:

  • Невозможно уменьшить размер существующей файловой системы. Если раздел на диске заполнен XFS, его нельзя уменьшить до меньшего размера (это важно учитывать при разбиении диска).
  • Восстановление удаленных файлов в XFS является очень сложным процессом, поэтому на данный момент существует всего несколько программных продуктов для этой цели, например, «RS Partition Recovery».
  • Возможна потеря данных при записи в случае сбоя питания, поскольку большое количество буферов данных хранится в памяти, в то время как метаданные журналируются (на диске) оперативно. Это также относится к другим файловым системам с журналированием метаданных.
  • Относительно медленное создание и удаление каталогов (недостаток, который можно значительно сократить правильной настройкой файловой системы).

Доступ к разделам XFS из Windows

К сожалению, операционная система Windows не имеет встроенной утилиты для открытия файловых систем, отличных от NTFS или FAT. Поэтому, например, для открытия флеш-накопителя вам придется использовать стороннее программное обеспечение или установить Linux на виртуальную машину. Второй вариант менее удобен, поэтому мы рассмотрим приложение Linux File Systems for Windows от Paragon Software. С помощью этой программы вы сможете просматривать, редактировать, копировать и удалять файлы на вашем разделе XFS. Приложение существует в двух версиях: платной и бесплатной. Бесплатная версия дает пользователю 10 дней для тестирования программы.

Вы также можете использовать приложение XFS Explorer. Есть как бесплатные, так и платные версии. В бесплатной версии вы можете просматривать файлы размером до 3 МБ. Если вам нужно работать с большими файлами, вам придется приобрести платную версию.

Установка XFS на SSD-накопитель

XFS может работать с большими объемами данных лучше, чем любая другая файловая система, и делает это надежно. Именно поэтому XFS может быть отличным вариантом для установки на SSD-накопители. С развитием современных вычислительных систем файлы данных становятся все более требовательными. Поэтому имеет смысл рассмотреть установку этой файловой системы на SSD-накопитель.

XFS, подобно Ext4, является журналируемой файловой системой. Но в отличие от Extended 4, невозможно отключить журналирование, поэтому оно может создавать большую нагрузку на диск. Однако XFS поддерживает стандартные функции SSD и даже дефрагментацию.

Преимущества использования XFS на SSD

  • XFS хорошо известен своей способностью легко управлять большими объемами данных. Используя XFS на вашем SSD, вы можете быть уверены, что ваши файлы защищены.
  • Преимущества производительности XFS на SSD означают, что вы можете передавать и получать файлы и данные гораздо быстрее, чем с другими файловыми системами.
  • XFS имеет функцию дефрагментации SSD, которая очень полезна и поможет сохранить работоспособность вашего диска на долгое время.

Недостатки использования XFS на SSD

  • XFS — файловая система с журналированием, и эта функция не может быть отключена. Невозможность отключения журналирования — это что-то, чего стоит опасаться, если вам важны ограничения на чтение/запись SSD.
  • Кроме того, при использовании файловой системы XFS увеличивается износ SSD. Поэтому вам придется принять решение — быстрая работа с большими файлами или более длительный срок службы SSD.

Часто задаваемые вопросы

XFS - это высокопроизводительная файловая система, разработанная компанией Silicon Graphics International для использования в системах на базе Unix. Она является файловой системой с журналированием, что означает, что она отслеживает изменения в файловой системе в журнале перед их записью на диск. XFS отличается от других файловых систем Linux своей способностью работать с большими файлами и файловыми системами, а также поддержкой продвинутых функций, таких как онлайн-дефрагментация и динамическое выделение инодов. RS Partition Recovery - это программное обеспечение для восстановления данных, которое может восстанавливать данные из файловых систем XFS.
XFS - это высокопроизводительная файловая система, разработанная для масштабируемости и надежности. Она поддерживает большие файловые системы и файлы, а также способна обрабатывать большое количество операций ввода-вывода. XFS также имеет продвинутые функции, такие как журналирование, онлайн изменение размера и поддержка расширенных атрибутов. Кроме того, XFS поддерживается многими операционными системами, включая Linux, и может быть легко восстановлена с помощью программного обеспечения для восстановления данных, такого как RS Partition Recovery.
Да, XFS может быть использован на всех дистрибутивах Linux. Это высокопроизводительная файловая система, которая поддерживается большинством дистрибутивов Linux, включая Red Hat, CentOS, Debian, Ubuntu и другие. Если вы случайно удалили или потеряли данные на файловой системе XFS, вы можете использовать программное обеспечение для восстановления данных, такое как RS Partition Recovery, чтобы восстановить потерянные файлы.
Оставить комментарий

Похожие публикации

Как разбить жесткий диск на разделы в Windows
Как разбить жесткий диск на разделы в Windows
Появилась необходимость разделить HDD и SSD жесткие диски на разделы? Ниже мы подберем лучшие способы и варианты разделения для уже установленной операционной системы Windows.
Восстановление данных с жесткого диска после падения системы
Восстановление данных с жесткого диска после падения системы
Восстановить данные с жесткого диска после сбоя системы легко может любой желающий. Причем для этого вовсе не обязательно быть компьютерным гением. Достаточно просто иметь специальные программы по восстановлению данных с поврежденного жесткого диска и уметь ими пользоваться. А поскольку с … Продолжить чтение
Восстановление данных с удаленных разделов диска
Восстановление данных с удаленных разделов диска
На практике не так часто приходится иметь дело с перераспределенными по разделам дисками. Однако, когда мы с этим сталкиваемся, слышим всегда одну и ту же историю в вариациях… Как можно случайно перераспределить жесткий диск, и что делать, чтобы вернуть файлы? … Продолжить чтение
Восстановление файлов предыдущей версии Windows (Windows.old)
Восстановление файлов предыдущей версии Windows (Windows.old)
Сегодня мы разберем: как вернуть предыдущую версию Windows, если была установлена Windows 8/10, зачем нужна папка Windows.old, почему она занимает много места и как её можно удалить.
Online Chat with Recovery Software