XFS

Материал из OpenWiki
Перейти к: навигация, поиск

XFS — высокопроизводительная журналируемая файловая система, созданная компанией Silicon Graphics для собственной операционной системы IRIX. 1 мая 2001 года Silicon Graphics выпустила XFS под GNU General Public License. XFS отличается от других ФС тем, что она изначально была рассчитана для использования на дисках большого объема (более 2 Терабайт, см. например, RAID-массивы).

Поддержка XFS была включена в ядро Linux версий 2.4 (начиная с 2.4.25, когда Марсело Тосатти (Marcelo Tosatti) посчитал её достаточно стабильной) и 2.6, и, таким образом, она стала довольно универсальной для Linux-систем. Инсталляторы дистрибутивов SuSE, Gentoo, Mandriva, Slackware, Ubuntu, Fedora и Debian предлагают XFS как вариант файловой системы для установки. FreeBSD стала поддерживать XFS в режиме чтения в декабре 2005 года.

Особенности

   * 64-битная файловая система
   * Журналирование только метаданных
   * Изменение размера «на лету» (только увеличение)
   * Размещение в нескольких разных линейных областях — т. н. «allocation groups» 
     (увеличивает производительность путём выравнивания активности запросов к разным дискам на RAID-массивах типа «stripe»)
   * Дефрагментация «на лету»
   * API ввода/вывода реального времени (для приложений жёсткого или мягкого реального времени, например, для работы с потоковым видео)
   * Запись на диск производится только при нехватке памяти. Это позволяет уменьшить фрагментацию, а также снизить активность запросов к диску. Тем не менее, современные версии XFS как правило производят запись с определенным интервалом автоматически (возможность называется write barriers и является отключаемой), чтобы минимизировать потери данных при аварийных ситуациях (например, внезапное пропадание питания).
   * Интерфейс (DMAPI) для поддержки иерархического управления хранением (HSM (англ.) )
   * Инструменты резервного копирования и восстановления (xfsdump and xfsrestore)
   * Реальный размер файла на файловой системе, в отличие от кратного размеру блока.
   * Очень большое количество «индексных блоков» inode.

Недостатки

   * Невозможно уменьшить размер существующей файловой системы.
   * Старые версии XFS страдали от опасности беспорядочной записи, которые могли привести к возникновению таких проблем как 
     — файлы приложений во время краха/ошибки/аварии ФС или приложения набирали хвост из мусора к следующему монтированию ФС. Также была возможна ситуация когда файл после аварийного прерывания работы заполнялся нулями по соображениям безопасности(чтобы избежать заполнения файла данными потенциально принадлежавшими другому файлу).В современных версиях ФС данные явления минимизированы.
   * Версии загрузчика GRUB до 0.91 не поддерживают XFS.
   * Восстановление удалённых файлов в XFS практически невозможно.
   * Возможность потери данных во время записи при сбое питания, так как большое количество буферов хранится в памяти. Примечание: современные версии XFS по умолчанию обычно используют барьеры (write barriers), сильно повышающие надежность работы данной ФС. Суть работы барьеров сводится к тому что данные периодически с некоторым интервалом записываются на диск, невзирая на то что буфферов еще достаточно. Это немного снижает способность к борьбе с фрагментацией за счет длительного удержания данных в дисковых буфферах и вытекающих отсюда возможностей по оптимизации их записи но зато значительно повышается надежность т.к. гарантированно что данные находятся в буфферах не более чем определенное время и объем этих данных ограничен, что минимизирует последствия в случае аварийных ситуаций.  
   * Относительно высокая нагрузка на центральный процессор
   * Вплоть до последних версий на 32-разрядных системах индексные блоки могут размещаться только в начальных 2-Терабайтах на диске. 
     Поэтому, если вдруг при создании файла на XFS-диске с размером более 2 Терабайта 
     выдается ошибка «невозможно создать файл» — 
     попробуйте удалить какой-либо файл, который размещается на диске в начальных 2-Терабайтах, чтобы освободить место для новых 
     индексных блоков.