XFS - XFS

XFS
Разработчики)
Полное имяXFS
Введено1994; 26 лет назад (1994) с IRIX  5.3
Идентификатор раздела0x83 (Главная загрузочная запись )
Структуры
Содержимое каталогаB + деревья
Размещение файловB + деревья
Пределы
Максимум. размер томаexbibytes - 1 байт
Максимум. размер файлаexbibytes - 1 байт
Максимум. количество файлов264[1]
Максимум. длина имени файла255 байты
Допустимые символы в именах файловВсе, кроме NULL и "/"
Функции
Даты записанывремя, время, время, время,[2] версия 5: crtime[3]
Диапазон дат14 декабря 1901 - 18 января 2038[2], предлагается: 8-битная эпоха[4]
Разрешение даты1 нс
Атрибутыда
Разрешения файловой системыда
Прозрачное сжатиеНет
Прозрачное шифрованиеНет (предоставляется на уровне блочного устройства)
Дедупликация данныхЭкспериментально, только Linux[5]
Другой
Поддерживается операционные системы
  • IRIX
  • Linux
  • FreeBSD (только чтение, экспериментальная поддержка записи, удалено[6])

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

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

История

Силиконовая Графика начал разработку XFS[8] ('X' должно было быть заполнено позже, но этого не произошло) в 1993 году.

Файловая система была выпущена под Стандартная общественная лицензия GNU (GPL) в мае 2000 года. Команда под руководством Стива Лорда из SGI перенесла его на Linux,[9] и первая поддержка Дистрибутив Linux появилась в 2001 году. Эта поддержка постепенно стала доступна почти во всех дистрибутивах Linux.[нужна цитата ]

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

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

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

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

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

Функции

Емкость

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

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

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

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

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

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

Группы размещения

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

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

Полосатое выделение

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

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

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

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

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

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

Отложенное распределение

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

Редкие файлы

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

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

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

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

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

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

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

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

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

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

DMAPI

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

Снимки

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

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

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

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

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

Изменение размера онлайн

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

Недостатки

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

Смотрите также

Рекомендации

  1. ^ "Какое максимальное количество inodes в файловых системах Linux?". 2014-06-17.
  2. ^ а б «Структура файловой системы XFS, 2-е издание, редакция 1» (PDF). п. 25. Архивировано из оригинал (PDF) на 2017-10-31.
  3. ^ "ondisk_inode.asciidocXFS_Filesystem_Structuredesign - xfs / xfs-documentation.git - Дерево документации XFS AsciiDoc". git.kernel.org.
  4. ^ Джон Нельсон (2 июня 2014 г.). "Re: [RFC 11/32] xfs: преобразовать в struct inode_time". Список рассылки ядра Linux. В архиве из оригинала 28 июля 2018 г.. Получено 27 июля 2018.
  5. ^ "Duperemove". GitHub. В архиве из оригинала от 6 марта 2016 г.. Получено 21 августа 2016.
  6. ^ а б «Неужели FreeBSD 10 перестала поддерживать XFS?». Lists.freebsd.org. 2013-10-27. В архиве из оригинала 30.03.2014. Получено 2014-03-30.
  7. ^ «xFS: расширение EFS -« x »для определения будущего (но название застряло)». XFS.org. Архивировано из оригинал 14 июля 2014 г.
  8. ^ Смит, Родерик В. (2007). Администратор Linux Street Smarts: настоящее руководство по навыкам сертификации Linux. Серия уличных умов. Джон Вили и сыновья. п. 204. ISBN  9780470116746. В архиве из оригинала от 21.08.2016. Получено 2016-03-21. Silicon Graphics (SGI) создала свой Файловая система экстентов (XFS) для своей ОС IRIX и [...] позже пожертвовал код Linux.
  9. ^ «Перенос XFS на Linux». Olstrans.SourceForge.net. 2000-07-21. В архиве из оригинала от 25.02.2013. Получено 2013-04-29.
  10. ^ "Журнал изменений ядра Linux 2.4.25". kernel.org. 2004-02-18. В архиве из оригинала на 2014-08-19. Получено 2014-08-14.
  11. ^ Дэниел Роббинс (1 января 2002 г.). «Общие темы: Расширенное руководство разработчика файловой системы, часть 9, Введение в XFS». Разработчик Работает. IBM. Архивировано из оригинал 4 сентября 2015 г.. Получено 6 ноября, 2011.
  12. ^ Дэниел Роббинс (1 апреля 2002 г.). "Общие темы: Расширенное руководство разработчика файловой системы, Часть 10, Развертывание XFS". Разработчик Работает. IBM. В архиве с оригинала 24 декабря 2011 г.. Получено 6 ноября, 2011.
  13. ^ "Ошибка 521173 -xfsprogs отсутствует в RHEL-5.4". RedHat.com. 24 мая 2010 г. В архиве из оригинала 10 июля 2012 г.. Получено 6 ноября, 2011.
  14. ^ "Надстройка масштабируемой файловой системы Red Hat Enterprise Linux". RedHat.com. В архиве из оригинала от 29.05.2014. Получено 2014-05-22.
  15. ^ «Примечания к выпуску Oracle Linux 6». Корпорация Oracle. Февраль 2011 г. В архиве из оригинала от 28.03.2012. Получено 2013-04-07. Oracle Linux 6 включает множество новых функций, в том числе [...] XFS [:] Oracle Linux 6 включает XFS в качестве дополнительной файловой системы.
  16. ^ «Red Hat представляет Red Hat Enterprise Linux 7, переопределяя операционную систему предприятия». Красная шляпа. 2014-06-10. В архиве из оригинала от 13.06.2014. Получено 2014-06-10.
  17. ^ "Ошибка 250843 -grub-install зависает на xfs". Redhat.com. 4 мая 2009 г. В архиве из оригинала 10 июля 2012 г.. Получено 6 ноября, 2011.
  18. ^ "kernel / git / torvalds / linux.git - дерево исходных текстов ядра Linux". git.kernel.org.
  19. ^ "Linux_4.8 - новички в ядре Linux". В архиве из оригинала на 2018-10-19. Получено 2018-10-19.
  20. ^ «Обзор XFS». Silicon Graphics International Corp. 2 июля 2013 г. Архивировано из оригинал на 2013-06-06. Получено 2013-07-02.
  21. ^ Джон Нельсон (30 июля 2012 г.). "Re: Re: ошибки раздела реального времени все еще существуют". Список рассылки XFS (Список рассылки). SGI. В архиве из оригинала 14 апреля 2014 г.. Получено 13 апреля, 2014.
  22. ^ Кристоф Хеллвиг (3 октября 2010 г.). «Re: Linux и DMAPI». Список рассылки XFS (Список рассылки). SGI. Архивировано из оригинал 27 сентября 2011 г.. Получено 6 ноября, 2011.
  23. ^ «XFS: Туда и обратно ... и снова там? [LWN.net]». lwn.net. В архиве из оригинала от 27.10.2016. Получено 2016-10-27.
  24. ^ "Как заморозить файловую систему ext3". www.linuxquestions.org. В архиве из оригинала 2011-04-28. Получено 2011-08-24.
  25. ^ "Снимки LVM: как пользоваться?". www.linuxquestions.org. В архиве из оригинала от 17.01.2011. Получено 2010-04-17.
  26. ^ "kernel / git / torvalds / linux.git - дерево исходных текстов ядра Linux". git.kernel.org.
  27. ^ Bitubique.com В архиве 1 апреля 2009 г. Wayback Machine
  28. ^ XFS.org В архиве 2009-01-05 в Wayback Machine, ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
  29. ^ Эрик Сандин (18 января 2002 г.). "Re: сжать файловую систему XFS? (LVM)". Список рассылки XFS (Список рассылки). SGI. Архивировано из оригинал на 03.02.2016.
  30. ^ Нельсон, Джон (23 декабря 2010 г.). «Повышение производительности метаданных за счет снижения накладных расходов на журнал». XFS.org вики. В архиве из оригинала 6 октября 2011 г.. Получено 6 ноября, 2011.
  31. ^ Нельсон, Джон (24 мая 2010 г.). "Re: PATCH 0/12 xfs: отложенное ведение журнала V6". Сообщение списка рассылки XFS (Список рассылки). В архиве с оригинала 5 декабря 2011 г.. Получено 6 ноября, 2011.

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

внешняя ссылка