Jump to content

XFS

XFS
Разработчик(и)
Полное имя XFS
Представлено 1994 год ; 30 лет назад ( 1994 ) с IRIX 5.3
Идентификаторы разделов
  • MBR : 0x83: файловая система Linux.
  • GPT : 0FC63DAF-8483-4772-8E79-3D69D8477DE4: файловая система Linux. [1]
Структуры
Содержимое каталога B+ деревья
Распределение файлов B+ деревья
Пределы
Максимальный размер тома 8 эксбибайт − 1 байт
Максимальный размер файла 8 эксбибайт − 1 байт
Макс нет. файлов 2 64 [2]
Максимальная длина имени файла 255 байт
Разрешенное имя файла
персонажи
Все, кроме NUL и "/"
Функции
Даты записи время, время, время, [3] версия 5: crtime [4]
Диапазон дат 13 декабря 1901 г. - 2 июля 2486 г. [5]
Разрешение даты 1 нс
Атрибуты Да
Файловая система
разрешения
Да
Прозрачный
сжатие
Нет
Прозрачный
шифрование
Нет (предоставляется на уровне блочного устройства)
Дедупликация данных Экспериментальная версия, только Linux [6]
Другой
Поддерживается
операционные системы

XFS — это высокопроизводительная 64-битная журналируемая файловая система, созданная компанией Silicon Graphics, Inc (SGI) в 1993 году. [7] Это была файловая система по умолчанию в операционной системе SGI IRIX , начиная с версии 5.3. XFS была портирована на ядро ​​Linux в 2001 году; по состоянию на июнь 2014 года XFS поддерживается большинством дистрибутивов Linux ; Red Hat Enterprise Linux использует ее в качестве файловой системы по умолчанию.

XFS превосходно выполняет операции параллельного ввода-вывода (I/O) благодаря своей конструкции, основанной на группах размещения (тип подразделения физических томов, в которых используется XFS, также сокращенно до AG ). Благодаря этому XFS обеспечивает исключительную масштабируемость потоков ввода-вывода, пропускной способности файловой системы, а также размера файлов и самой файловой системы при охвате нескольких физических устройств хранения. XFS обеспечивает согласованность данных, используя метаданных журналирование и поддерживая барьеры записи . Распределение пространства осуществляется посредством экстентов со структурами данных, хранящимися в деревьях B+ , что повышает общую производительность файловой системы, особенно при работе с большими файлами. Отложенное выделение помогает предотвратить фрагментацию файловой системы; онлайн- дефрагментация Также поддерживается .

Silicon Graphics начала разработку XFS [8] («X» предполагалось заполнить позже, но так и не было) в 1993 году.

Файловая система была выпущена под лицензией GNU General Public License (GPL) в мае 1999 года. [9] Команда под руководством Стива Лорда из SGI портировала его на Linux. [10] а первая поддержка в дистрибутиве Linux появилась в 2001 году. Постепенно эта поддержка стала доступна почти во всех дистрибутивах Linux. [ нужна ссылка ]

Первоначальная поддержка XFS в ядре Linux появилась благодаря патчам от SGI. Он был объединен с основной веткой ядра Linux для серии 2.6 и отдельно объединен в феврале 2004 года с серией 2.4 в версии 2.4.25. [11] делает XFS практически повсеместно доступным в системах Linux. [12] Gentoo Linux стал первым дистрибутивом Linux , в котором в середине 2002 года была реализована опция XFS в качестве файловой системы по умолчанию. [13]

В декабре 2005 года FreeBSD добавила поддержку XFS только для чтения , а в июне 2006 года представила экспериментальную поддержку записи. Однако это было задумано только как помощь при переходе с Linux, а не как «основная» файловая система. В FreeBSD 10 удалена поддержка XFS. [14]

В 2009 году версия 5.4 64-битного дистрибутива Red Hat Enterprise Linux (RHEL) Linux содержала необходимую поддержку ядра для создания и использования файловых систем XFS, но не имела соответствующих инструментов командной строки. Для этой цели могут использоваться инструменты, доступные в CentOS , и Red Hat также предоставляет их клиентам RHEL по запросу. [15] RHEL 6.0, выпущенный в 2010 году, включает платную поддержку XFS как часть «надстройки масштабируемой файловой системы» Red Hat. [16] Oracle Linux 6, выпущенный в 2011 году, также включает возможность использования XFS. [17]

RHEL 7.0, выпущенный в июне 2014 года, использует XFS в качестве файловой системы по умолчанию. [18] включая поддержку использования XFS для /boot раздел, что раньше было нецелесообразно из-за ошибок в загрузчике GRUB . [19]

Ядро Linux 4.8 в августе 2016 года добавило новую функцию «обратное сопоставление». Это основа для большого набора запланированных функций: моментальные снимки , копирование данных при записи (COW), дедупликация данных онлайн-данных и метаданных , копии реферальных ссылок, очистка , высокоточные отчеты о потере данных или поврежденных секторах, а также значительно улучшенная реконструкция. поврежденных файловых систем. Эта работа потребовала изменений в дисковом формате XFS. [20] [21]

Ядро Linux 5.10, выпущенное в декабре 2020 года, представило «bigtime» для хранения временных меток индексных дескрипторов в виде 64-битного наносекундного счетчика вместо традиционного 32-битного счетчика секунд. Это откладывает решение предыдущей проблемы 2038 года до 2486 года. [5]

Gentoo Handbook, официальное руководство по установке Gentoo Linux , рекомендует XFS как «универсальную общеплатформенную файловую систему» ​​с 28 июня 2023 года, пришедшую на смену Ext4 . [22]

XFS — 64-битная файловая система. [23] и поддерживает максимальный размер файловой системы 8 эксбибайт минус один байт (2 63 − 1 байт), но ограничения, налагаемые операционной системой хоста, могут уменьшить этот предел. 32-битные системы Linux ограничивают размер файла и файловой системы 16 терабайтами .

Ведение журнала

[ редактировать ]

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

Журнал XFS может храниться в разделе данных файловой системы (как внутренний журнал) или на отдельном устройстве, чтобы минимизировать конфликты на диске.

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

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

Группы распределения

[ редактировать ]

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

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

Полосатое распределение

[ редактировать ]

Если файловая система XFS должна быть создана в чередующемся RAID- массиве, чередования единицу можно указать при создании файловой системы. Это максимизирует пропускную способность, гарантируя, что распределение данных, распределение индексных дескрипторов и внутренний журнал (журнал) согласованы с блоком чередования.

Распределение на основе экстента

[ редактировать ]

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

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

Переменные размеры блоков

[ редактировать ]

Размер блока файловой системы представляет собой минимальную единицу выделения. XFS позволяет создавать файловые системы с размерами блоков от 512 байт до 64 КБ, что позволяет настраивать файловую систему на ожидаемую степень использования. Когда ожидается много небольших файлов, небольшой размер блока обычно максимизирует емкость, но для системы, работающей в основном с большими файлами, больший размер блока может обеспечить преимущество в эффективности производительности.

Отложенное размещение

[ редактировать ]

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

Разреженные файлы

[ редактировать ]

XFS предоставляет 64-битное разреженное адресное пространство для каждого файла, что позволяет использовать как очень большие размеры файлов, так и «дыры» внутри файлов, в которых не выделяется дисковое пространство. Поскольку файловая система использует карту экстентов для каждого файла, размер карты размещения файлов остается небольшим. Если размер карты распределения слишком велик для ее хранения в индексном дескрипторе, карта перемещается в дерево B+, которое обеспечивает быстрый доступ к данным в любом месте 64-битного адресного пространства, предусмотренного для файла.

Расширенные атрибуты

[ редактировать ]

XFS предоставляет несколько потоков данных для файлов; это стало возможным благодаря реализации расширенных атрибутов . Они позволяют хранить несколько пар имя/значение, прикрепленных к файлу. Имена представляют собой строки печатаемых символов, завершающиеся нулем, длиной до 256 байт, а связанные с ними значения могут содержать до 64 КБ двоичных данных.

Далее они подразделяются на два пространства имен: root и user. Расширенные атрибуты, хранящиеся в корневом пространстве имен, могут быть изменены только суперпользователем, тогда как атрибуты в пространстве имен пользователя могут быть изменены любым пользователем, имеющим разрешение на запись в файл.

Расширенные атрибуты могут быть прикреплены к любому индексному дескриптору XFS, включая символические ссылки, узлы устройств, каталоги и т. д. attr Утилита может использоваться для управления расширенными атрибутами из командной строки, а xfsdump и xfsrestore утилиты знают о расширенных атрибутах и ​​выполняют резервное копирование и восстановление их содержимого. Многие другие системы резервного копирования не поддерживают работу с расширенными атрибутами.

Прямой ввод-вывод

[ редактировать ]

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

XFS еще нет [24] обеспечить прямую поддержку снимков, поскольку в настоящее время ожидается, что процесс создания снимков будет реализован менеджером томов. Создание снимка файловой системы XFS предполагает временную остановку ввода-вывода в файловую систему с помощью команды xfs_freeze утилита, позволяющая диспетчеру томов выполнить фактический снимок, а затем возобновить ввод-вывод для продолжения обычных операций. Затем снимок можно смонтировать только для чтения в целях резервного копирования.

Релизы XFS в IRIX включали интегрированный менеджер томов под названием XLV. Этот менеджер томов не был портирован на Linux, и вместо этого XFS работает со стандартным LVM в системах Linux.

В последних ядрах Linux xfs_freeze функциональность реализована на уровне VFS и выполняется автоматически при вызове функции моментального снимка диспетчера томов. Когда-то это было ценным преимуществом, поскольку файловую систему ext3 нельзя было приостановить. [25] и диспетчер томов не смог создать согласованный «горячий» снимок для резервного копирования сильно загруженной базы данных. [26] К счастью, это уже не так. Начиная с Linux 2.6.29, файловые системы ext3, ext4 , GFS2 и JFS также имеют функцию заморозки. [27]

Онлайн-дефрагментация

[ редактировать ]

Хотя основанная на экстентах природа XFS и используемая ею стратегия отложенного выделения значительно повышают устойчивость файловой системы к проблемам фрагментации, XFS предоставляет утилиту дефрагментации файловой системы ( xfs_fsr, сокращение от реорганизатора файловой системы XFS), который может дефрагментировать файлы в смонтированной и активной файловой системе XFS. [28]

Онлайн-рост

[ редактировать ]

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

Функции только для IRIX

[ редактировать ]

В XFS реализован интерфейс DMAPI для поддержки управления иерархическим хранилищем в IRIX. По состоянию на октябрь 2010 года реализация XFS в Linux поддерживала необходимые метаданные на диске для реализации DMAPI, но, как сообщается, поддержка ядра была недоступна. В течение некоторого времени в SGI размещалось дерево ядра, включающее перехватчики DMAPI, но эта поддержка не поддерживалась должным образом, хотя разработчики ядра заявили о намерении обновить эту поддержку. [29]

Гарантированная скорость ввода-вывода

[ редактировать ]

Система ввода-вывода с гарантированной скоростью XFS предоставляет API, который позволяет приложениям резервировать полосу пропускания для файловой системы. XFS динамически рассчитывает доступную производительность базовых устройств хранения и резервирует полосу пропускания, достаточную для обеспечения требуемой производительности в течение определенного времени. Это уникальная функция файловой системы XFS. Гарантированные ставки могут быть «жесткими» или «мягкими», представляя собой компромисс между надежностью и производительностью; однако XFS допускает «жесткие» гарантии только в том случае, если базовая подсистема хранения поддерживает их. Эта возможность используется в основном для приложений реального времени, таких как потоковое видео.

Ввод-вывод с гарантированной скоростью поддерживался только в IRIX и для этой цели требовалось специальное оборудование. [30]

Недостатки

[ редактировать ]
  • Файловые системы XFS не могут (по состоянию на декабрь 2023 г.) ) сжиматься на месте, [31] хотя обсуждалось несколько возможных обходных путей. [32]
  • Журналирование нельзя отключить. Однако вместо этого XFS может записывать во внешний журнал на отдельном блочном устройстве. [33]

Исторические недостатки

[ редактировать ]
  • Операции с метаданными в XFS были медленнее по сравнению с журналируемыми файловыми системами, реализованными позже и предназначенными для работы с журналами гораздо большего размера, что приводило, например, к снижению производительности при таких операциях, как удаление большого количества файлов. Однако новая функция XFS, реализованная Джоном Нельсоном и называемая отложенным журналированием , доступная начиная с версии 2.6.39 основной ветки ядра Linux, как сообщается, решает эту проблему; [34] Тесты производительности, проведенные разработчиком в 2010 году, показали, что уровни производительности аналогичны ext4 при малом количестве потоков и выше при большом количестве потоков. [35]

См. также

[ редактировать ]
  1. ^ «GPT fdisk — ArchWiki» .
  2. ^ «Каково максимальное количество индексных дескрипторов в файловых системах Linux?» . 17 июня 2014 г.
  3. ^ «Структура файловой системы XFS, 2-е издание, редакция 1» (PDF) . п. 25. Архивировано из оригинала (PDF) 31 октября 2017 г.
  4. ^ «ondisk_inode.asciidoc\XFS_Filesystem_Structure\design — xfs/xfs-documentation.git — Дерево документации XFS AsciiDoc» . git.kernel.org .
  5. ^ Перейти обратно: а б Дэррик Дж. Вонг (10 августа 2020 г.). «xfs: расширить временные метки для работы с y2038» .
  6. ^ «Дуперемув» . Гитхаб . Архивировано из оригинала 6 марта 2016 года . Проверено 21 августа 2016 г.
  7. ^ «xFS: расширение EFS — «x» означает «подлежит определению» (но имя застряло)» . XFS.org . Архивировано из оригинала 14 июля 2014 г.
  8. ^ Смит, Родерик В. (2007). Умный администратор Linux: практическое руководство по навыкам сертификации Linux . Серия «Уличная хитрость». Джон Уайли и сыновья. п. 204. ИСБН  9780470116746 . Архивировано из оригинала 21 августа 2016 г. Проверено 21 марта 2016 г. Silicon Graphics (SGI) создала файловую систему Extents (XFS) для своей ОС IRIX, а затем [...] передала код Linux.
  9. ^ «XFS с открытым исходным кодом SGI» . slashdot.org . 19 мая 1999 г. Проверено 12 апреля 2023 г.
  10. ^ «Портирование XFS в Linux» . Olstrans.SourceForge.net . 21 июля 2000 г. Архивировано из оригинала 25 февраля 2013 г. Проверено 29 апреля 2013 г.
  11. ^ «Журнал изменений ядра Linux 2.4.25» . ядро.орг . 18 февраля 2004 г. Архивировано из оригинала 19 августа 2014 г. Проверено 14 августа 2014 г.
  12. ^ Дэниел Роббинс (1 января 2002 г.). «Общие темы: Руководство для разработчиков расширенной файловой системы, Часть 9, Знакомство с XFS» . Разработчик работает . ИБМ. Архивировано из оригинала 4 сентября 2015 года . Проверено 6 ноября 2011 г.
  13. ^ Дэниел Роббинс (1 апреля 2002 г.). «Общие темы: Руководство для разработчиков расширенной файловой системы, Часть 10, Развертывание XFS» . Разработчик работает . ИБМ. Архивировано из оригинала 24 декабря 2011 года . Проверено 6 ноября 2011 г.
  14. ^ «Во FreeBSD 10 прекращена поддержка XFS?» . Lists.freebsd.org . 27 октября 2013 г. Архивировано из оригинала 30 марта 2014 г. Проверено 30 марта 2014 г.
  15. ^ «Ошибка 521173 -xfsprogs отсутствует в RHEL-5.4» . RedHat.com . 24 мая 2010. Архивировано из оригинала 10 июля 2012 года . Проверено 6 ноября 2011 г.
  16. ^ «Дополнение масштабируемой файловой системы Red Hat Enterprise Linux» . RedHat.com . Архивировано из оригинала 29 мая 2014 г. Проверено 22 мая 2014 г.
  17. ^ «Примечания к выпуску Oracle Linux 6» . Корпорация Оракл. Февраль 2011 г. Архивировано из оригинала 28 марта 2012 г. Проверено 7 апреля 2013 г. Oracle Linux 6 включает множество новых функций, включая [...] XFS [:] Oracle Linux 6 включает XFS в качестве дополнительной файловой системы.
  18. ^ «Red Hat представляет Red Hat Enterprise Linux 7, переосмысливая корпоративную операционную систему» ​​. Красная шляпа . 10 июня 2014 г. Архивировано из оригинала 13 июня 2014 г. Проверено 10 июня 2014 г.
  19. ^ «Ошибка 250843 -grub-install зависает на xfs» . Redhat.com . 4 мая 2009 года. Архивировано из оригинала 10 июля 2012 года . Проверено 6 ноября 2011 г.
  20. ^ «kernel/git/torvalds/linux.git — дерево исходного кода ядра Linux» . git.kernel.org .
  21. ^ «Linux_4.8 — новички в ядре Linux» . Архивировано из оригинала 19 октября 2018 г. Проверено 19 октября 2018 г.
  22. ^ «Разница между редакциями «Руководства: Детали/Установка/Диски» — Gentoo wiki» . wiki.gentoo.org . Проверено 25 апреля 2024 г.
  23. ^ «Обзор XFS» . Silicon Graphics International Corp. 2 июля 2013 г. Архивировано из оригинала 6 июня 2013 г. Проверено 2 июля 2013 г.
  24. ^ «XFS: Туда и обратно… и снова туда? [LWN.net]» . lwn.net . Архивировано из оригинала 27 октября 2016 г. Проверено 27 октября 2016 г.
  25. ^ «Как заморозить файловую систему ext3» . www.linuxquestions.org . Архивировано из оригинала 28 апреля 2011 г. Проверено 24 августа 2011 г.
  26. ^ «Снимки LVM: как использовать?» . www.linuxquestions.org . Архивировано из оригинала 17 января 2011 г. Проверено 17 апреля 2010 г.
  27. ^ «kernel/git/torvalds/linux.git — дерево исходного кода ядра Linux» . git.kernel.org .
  28. Bitubique.com. Архивировано 1 апреля 2009 г., на Wayback Machine.
  29. ^ Кристоф Хеллвиг (3 октября 2010 г.). «Re: Linux и DMAPI» . Список рассылки XFS (Список рассылки). СГИ. Архивировано из оригинала 27 сентября 2011 года . Проверено 6 ноября 2011 г.
  30. ^ Джон Нельсон (30 июля 2012 г.). «Re: Re: ошибки в разделе реального времени все еще существуют» . Список рассылки XFS (Список рассылки). СГИ. Архивировано из оригинала 14 апреля 2014 года . Проверено 13 апреля 2014 г.
  31. ^ XFS.org. Архивировано 5 января 2009 г. на Wayback Machine , FAQ.
  32. ^ Эрик Сандин (18 января 2002 г.). «Re: Сжать файловую систему XFS? (LVM)» . Список рассылки XFS (Список рассылки). СГИ. Архивировано из оригинала 3 февраля 2016 г.
  33. ^ «О внешних журналах XFS» . oracle.com . Проверено 16 ноября 2022 г.
  34. ^ Нельсон, Джон (23 декабря 2010 г.). «Повышение производительности метаданных за счет сокращения накладных расходов на журнал» . XFS.org вики . Архивировано из оригинала 6 октября 2011 года . Проверено 6 ноября 2011 г.
  35. ^ Нельсон, Джон (24 мая 2010 г.). «Re: PATCH 0/12 xfs: задержка регистрации V6» ​​. Сообщение списка рассылки XFS (список рассылки). Архивировано из оригинала 5 декабря 2011 года . Проверено 6 ноября 2011 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e0eade6910c9ed54ba774784e8f75c8a__1720768200
URL1:https://arc.ask3.ru/arc/aa/e0/8a/e0eade6910c9ed54ba774784e8f75c8a.html
Заголовок, (Title) документа по адресу, URL1:
XFS - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)