Автор работы: Пользователь скрыл имя, 16 Апреля 2012 в 17:15, реферат
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-систем. Инсталляторы дистрибутивов openSUSE, Gentoo, Mandriva, Slackware, Ubuntu, Fedora и Debian предлагают XFS как вариант файловой системы для установки. FreeBSD стала поддерживать XFS в режиме чтения в декабре 2005 года.
Содержание:1
Описание2
Структура3
Особенности4
Достоинства5
Недостатки
Приложение.
- Поддержка много поточности
Другая проблема на пути достижения высокой производительности состоит в том, что многие UNIX-ФС позволяют одному потоку (thread) блокировать inode при работе с файлом. Эта блокировка гарантирует, что только один процесс может выполнять ввод-вывод на данном файле в конкретный момент времени.
XFS использует
более гибкую схему
Реализация параллельного доступа к файлу может дать существенный прирост в производительности ввода-вывода. В случае, если процесс обмена данными между приложением и файлом тормозит процессор, осуществляющий копирование данных в файловый кэш, механизм распараллеливания доступа к файлу позволяет привлечь к копированию несколько процессоров. При использовании direct I/O на большом дисковом массиве распараллеливание доступа позволяет одновременно направлять несколько запросов нескольким дискам. Эта возможность особенно важна для систем, подбных IRIX, осуществляющих асинхронный ввод-вывод с использование потоков. Без параллельного доступак файлам асинхронные запросы выполнялись бы фактически последовательно (из-за блокировки inode), не давая никакого выигрыша в производительности.
Еще один аспект
производительности файловой системы
– это процедуры
- Журналирование транзакций
Проблема, актуальная для традиционных
UNIX-ФС – использование ими
XFS использует упреждающую запись в журнал транзакций, что бы собрать все изменения метаданных и записи о них в журнале в один дисковый запрос и записать их асинхронно, не заставляя процессор ждать завершения дисковой операции. Были предложены и другие схемы для решения этой проблемы, например журнально-структурированные файловые системы (log structured file systems), shadow paging, soft updates (до сих пор применяется с FFS во всех BSD-системах (пер.)) и пр., однако мы считаем, что журналирование является оптимальным сочетанием гибкости, производительности и надежности, т.к. оно обеспечивает нас быстрым и эффективным механизмом обновления и восстановления метаданных без необходимости отказа от способности выдерживать рабочие нагрузки синхронной записи (необходимой, к примеру, для NFS-сервера) и не лишая нас возможности поддерживать большие непрерывные файлы. Глубокий же анализ указанных схем выходит за рамки этого документа.
- Асинхронное журналирование транзакций
Традиционные схемы упреждающего журналирования пишут в лог синхронно, до объявления о завершении транзакции и разблокирования ресурсов. Конечно, эта схема гарантирует непрерывность обновления метаданных, однако она ограничивает скорость внесения изменений в файловую систему скоростью, с которой та способна записывать транзакции в журнал. Не смотря на то, что что XFS обеспечивает возможность последовательного внесения изменений в файловую систему, например, когда ее данные экспортируются через NFS, нормальный режим ее работы предусматривает асинхронную запись в журнал. Естественно мы гарантируем, что данные не могут быть сброшены на диск, пока запись о запрашиваемых изменениях не будет внесена в дисковый (on-disk) журнал. Однако всесто того, что бы удерживать измененные ресурсы заблокированными до завершения записи транзакции, мы разблокируем ресурсы и “запираем” их в памяти до тех пор, пока все необходимые записи не будут внесены в дисковый журнал (в “запертые” таким образом структуры можно вносить изменения, но на диске они отразиться только по завершении транзакции (пер.)). Ресурсы разблокируются, как только транзакция будет записана в журнальный буфер в памяти – это позволяет сохранить порядок внесения изменений без ущерба для производительности.
Асинхронное журналирование имеет 2 выгодные черты . Первая – множество изменений может быть сгруппировано и записано на диск одной операцией. Это увеличивает эффективность записей в журнал на системах с дисковыми массивами. Вторая – скорость обновлений метаданных обычно не зависит от производительности конкретного оборудования. Конечно, эта независимость ограничена количеством памяти, выделяемой под буферизацию журнала, однако она все равно намного быстрее синхронных обновлений в старых ФС.
- Использование отдельного устройства для журнала
При высокой
интенсивности внесения изменений
в метаданные производительность этих
изменений все еще будет
- Применение параллелизма
XFS построена для применения на больших производительных многопроцессорных системах с разделяемой памятью. Поддержка параллелизма на таких машинах упирается только в один централизованный ресурс – журнал транзакций. Все другие ресурсы файловой системы сделаны независимыми либо на уровне allocating groups, либо на уровне отдельных inode. Это позволяет inodes и блокам быть размещенными и освобожденными параллельно в любом месте файловой системы.
Журнал транзакций является самым оспариваемым ресурсом в XFS, т.к. через него проходят все изменения метаданных файловй системы. Однако задачи менеджера транзакций очень просты: выделение памяти под буфер, в который транзакции копируют свои обновления, запись этих изменений на диск и уведомление транзакций о завершении записи. Если процесс сброса журнала на диск не отстает от внесения изменений в журнальный буфер, централизованность этой структуры не является проблемой. Однако при больших непрерывных нагрузках на механизм журналирования (например, когда программы постоянно создают и удаляют файлы, не делая ничего другого) скорость обновления метаданных все еще будет ограничена произврдительностью дискового ввода-вывода.
Приложение