XFS

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:08, 29 ноября 2016.
XFS
Xfs.jpg
Разработчики: Silicon Graphics
Выпущена: 1994
Постоянный выпуск: IRIX 5.3
Операционная система: IRIX, Linux, FreeBSD
Размер дистрибутива:
  • max filename size = 255 байт
  • max volume size = 16 эксбибайт
  • max file size = 8 эксбибайт - 1 байт
Веб-сайт oss.sgi.com/projects/xfs/

XFS - это 64-битовая высокопроизводительная журналируемая файловая система, созданная компанией Silicon Graphics, полностью основанная на уже проверенной временем технологии B-деревьев для собственной операционной системы IRIX. 1 мая 2001 года Silicon Graphics выпустила XFS под GNU General Public License.[1]

XFS отличается от других файловых систем тем, что она изначально была рассчитана для использования на дисках большого объёма (более 2 терабайт, см. например, RAID-массивы). Поддержка XFS была включена в ядро Linux версий 2.4 (начиная с 2.4.25, когда Марчело Тозатти (Marcelo Tosatti) посчитал её достаточно стабильной) и 2.6, и, таким образом, она стала довольно универсальной для Linux-систем. Инсталляторы дистрибутивов openSUSE, Gentoo, Mandriva, Slackware, Ubuntu, Fedora и Debian предлагают XFS как вариант файловой системы для установки. FreeBSD стала поддерживать XFS в режиме чтения в декабре 2005 года, с июня 2006 была представлена экспериментальная поддержка записи. Несмотря на это, её предполагалось использовать только для облегчения миграции с Linux, но не основной файловой системы. Поддержка XFS была удалена в FreeBSD 10. Дополнительным условием эффективности XFS является наличие качественного питания (внезапные отключения достаточно неприятны для неё) и больших объемов оперативной памяти на сервере, что позволяет раскрыть весь потенциал механизма отложенного размещения и прочих «ленивых» техник обильно реализованных в XFS. Сильная многопользовательская нагрузка на хранилище — позволяет продемонстрировать XFS свой инновационный механизм параллельной записи и низкую ресурсоемкость.

При этом важно понимать, что идеала не существует, и узким местом именно этой ФС являются операции над большим количество мелких файлов или удаление развесистых деревьев каталогов, — в этом случае, вы вряд ли увидите ту производительность, на которую рассчитывали. Что касается конкретных реализаций, то XFS прекрасно чувствует себя как на Linux, так и на FreeBSD, поэтому выбрать платформу для хранилища здесь есть из чего.[2]

Особенности XFS

  • 64-битная файловая система.
  • Журналирование только метаданных (если не задать иное параметрами).
  • Выделение места экстентами (Extent — указатель на начало и число последовательных блоков). В экстентах выделяется место для хранения файлов, а также экстентами хранятся свободные блоки.
  • B-tree индексы активно используются для хранения различных данных файловой системы: для списка блоков с inode-ами, списка экстентов с содержимым файла, каталогов файлов, списков экстентов свободных блоков (свободные блоки проиндексированы и по размеру блока, и по расположению). Однако использование b-tree индексов не догма — небольшой файл или каталог может быть размещен прямо внутри inode.
  • Отложенное выделение места (Delayed allocation). При записи файла для него выделяется место в памяти, а на диске выделяется место только при записи файла на диск. Таким образом под файл оптимально выделяется место на диске, что уменьшает фрагментацию.
  • Изменение размера «на лету» (только увеличение).
  • Размещение в нескольких линейных областях (по умолчанию — 4 шт.) т. н. «allocation groups» (увеличивает производительность путём выравнивания активности запросов как к разным дискам на RAID-массивах типа «stripe», так и при асинхронном обращении к файловой системе на обычном диске.)
  • Дефрагментация «на лету».
  • API ввода-вывода реального времени (для приложений жёсткого или мягкого реального времени, например, для работы с потоковым видео).
  • Интерфейс (DMAPI) для поддержки иерархического управления носителями (HSM).
  • Инструменты резервного копирования и восстановления (xfsdump и xfsrestore).
  • «Индексные блоки» inode выделяются динамически (по мере надобности) и неиспользуемые inode могут освобождаться (высвобождая место для хранения данных).
  • Малые «накладные расходы» — размер служебных структур данных. На вновь созданной файловой системе XFS на служебные нужды тратится порядка 0,54 %. Это достигается малым количеством заголовков для групп (allocation groups), а также за счет динамического выделения inode.
ZFS XFS file systems

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

  • Реализована поддержка очень больших файлов;
  • Не смотря на то, что официально XFS везде позиционируется как настоящая 64-битная ФС, стратегия дискового драйвера реализована так, что он везде, где это только возможно, избегает использования 64-битного режима адресации, используя обычную 32-битную адресацию, для чего активно используются AGs (allocation group, AG);
  • XFS официально — журналируемая файловая система, — но опять же, с той лишь оговоркой, что фиксируются лишь изменения метаданных, включая операции с суперблоком, AGs, inodes, каталогами и свободным пространством. При этом XFS вообще никак не журналирует пользовательские данные;
  • Нужно отметить ярко выраженное следствие применения механизма отложенного размещения, о котором мы упомянули выше: его эффективность прямо пропорциональна имеющейся величине оперативной памяти (RAM), что опять-таки очень выгодно при современных тенденциях серверного оборудования;

Недостатки

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

Создание файловой системы XFS

Чтобы создать файловую систему XFS, используйте команду <mkfs.xfs/Dev/device>. Все параметры по умолчанию являются оптимальными для общего пользования. При использовании <mkfs.xfs> на блочном устройстве, содержащем существующую файловую систему, используйте опцию <-f>, чтобы принудительно перезаписать файловую систему.После того, как создана файловая система XFS, её размер уже не может быть уменьшен. Тем не менее, он может быть увеличен с помощью команды xfs_growfs ⁠ Пример 6.1. <mkfs.xfs> команда вывода Ниже приведен пример команды <mkfs.xfs>:

<meta-data   = /dev/device            isize=256        agcount=4,   agsize=3277258 blks  sectsz=512     attr=2
data         = bsize=4096             blocks=13109032, imaxpct=25   sunit=0              swidth=0 blks
naming       = version 2              bsize=4096       ascii-ci=0
log          = internal log           bsize=4096       blocks=6400, version=2            sectsz=512     sunit=0 blks, lazy-count=1
realtime     = none                   extsz=4096       blocks=0,    rtextents=0>

Ссылки

  1. The XSF File System: [Электронный ресурс]:Chapter 6 / Дата обращения 28.11.2016 — Режим доступа: [1]
  2. Файловые системы ближайшего будущего : [Электронный ресурс]: XFS / Дата обращения: 28.11.2016. — Режим доступа: [2]