XFSпозволяет использовать различные размеры блоков - от 512 байт до 64 килобайт. Изменение размеров блоков может повлиять на фрагментацию. Файловые системы с большим количеством маленьких файлов обычно используют маленькие размеры блоков, чтобы избежать лишних трат свободного места в случаях, когда размер файла меньше, чем размер блока, а системы с большими файлами обычно делают противоположный выбор и используют большие размеры блоков, чтобы уменьшить фрагментацию файловой системы.
XFS- это комплексная разработка, основанная на IRIX, и она очень связана с IRIX, поэтому при портировании на Linuxвсе было полностью переработано и написано с нуля. Результат - модуль pagebufдля Linux, обеспечивающий интерфейс между XFSи подсистемой виртуальной памяти, а так же между XFSи Linuxblockdevicelayer.
XFSподдерживает ACL'bi(с помощью интеграции с сервером Samba), и transactionalquotes. В Linuxона поддерживает квотирование для группы, в отличии от IRIXквотирования для проекта, потому что именно так квотирование реализуется в файловых системах для Linux. (В Linuxнет концепции, эквивалентной "проектам" в IRIX). Более необычные функции XFSиз оригинальной версии для 1RIX, позволяющие оказывать специальные сервисы различным приложениям (например, обслуживание videoв реальном времени) еще не были перенесены в Linux-версию.
Нормальный режим работы для XFS- это использование асинхронно ведущегося логгирования. Из-за этого XFS приобретает 2 вещи:
1) Множественные обновления могут быть произведены одной операцией записи в лог. Это увеличивает эффективность ведения лога.
2) Быстродействие изменения meta-данных обычно делается независимым от скорости устройства, на котором записаны данные. Вообще-то, эта независимость ограничена количеством буферизации, используемой для ведения лога, но все равно - это намного лучше, чем синхронные обновления, используемые в старых файловых системах.
XFSтакже имеет большое количество инструментов для dump'HHra,восстановления, наращивания, использованияACL'obи дисковых квот, и т.д.
IBMв первый раз представила свою собственную журналируемую файловую систему для Unixв выпуске AJXверсии 3.1. Сейчас они предлагают более новую файловую систему для AIX-систем, названную JFS2, которая доступна в AIXверсии 5.0 и выше. Открытый вариант JFSсейчас отличается оттого, который сейчас распространяется с OS/2 WarpServer'oM.
JFSотличается высокой пропускной способностью и надежностью, удовлетворяющей требованиям серверов. В этой файловой системе используется адресная структура, базированная на расширениях (extent-based), и расположение блоков в кластерах, что позволяет создавать компактные, эффективные и масштабируемые структуры расположения файлов. Расширение - это несколько последовательно идущих блоков, относящихся к файлу, описываемых тремя параметрами - логическое удаление (offset), длина и физические параметры. Структура адресации - это В+Treeс описаниями расширений, расположенными в i-node.
JFSведет логи, в которых записывается информация об операциях над метаданными. Формат лога устанавливается утилитой создания файловой системы.
Особенность логов JFSв том, что когда операция изменения метаданных файловой системы возвращает успешный результат, эффекты этой операции уже записаны, и они останутся в логах даже тогда, когда сбой происходит сразу же после выполнения операции.
JFSподдерживает блоки размера 512, 1024, 2048 и 4096 байт. Небольшая величина блока уменьшает фрагментацию, но может увеличивать длину пути, потому что перераспределение блоков может происходить более часто, чем если бы были использованы большие блоки. Поэтому стандартный размер - 4096 байт.
JFSдинамически распределяет место для i-nodes, и освобождает место, когда они больше не
нужны. Эта файловая система поддерживает две различные организации директорий:
*
1) Используется для маленьких директорий. Оглавление директории хранится в ее i-node.
2) Для больших директорий. Каждая директория представляется, как В+Treeс ее именем. Это дает возможность быстрого поиска, вставки и удаления директорий.
JFSподдерживает и "разряженные" и "плотные" файлы. У первого типа файлов данные разбросаны по различным местам, и размер файла - это просто номер самого последнего записанного байта. А физическим расположением самих блоков занимается операция записи.
Ext3
Вообще-то, это Ext2 с файлом журнала. Ext3 - это всего лишь половина настоящей журналируемой системы, надстройка над Ext2. С одной стороны, она позволяет вести лог операций для более быстрого восстановления. Но эта файловая система унаследовала некоторые ограничения от Ext2 (например, она базируется на блоках и использует полный перебор при поиске файлов и директорий), и поэтому ее нельзя назвать чистой журналируемой файловой системой.
ext3 или 3-я расширенная файловая система — журналируемая файловая система, используемая в операционных системах на ядре Linux, является файловой системой по умолчанию во многих дистрибутивах. Основана на ФС ext2.
Основное отличие от ext2fsсостоит в том, что ext3 журналируема, то есть в ней предусмотрена запись некоторых данных, позволяющих восстановить файловую систему при сбоях в работе компьютера.
Стандартом предусмотрено три режима журналирования:
• writeback: в журнал записываются только метаданные файловой системы, то есть информация о её изменении. Не может гарантировать целостности данных, но уже заметно сокращает время проверки по сравнению с ext2;
• ordered: то же, что и writeback, но запись данных в файл производится гарантированно до записи информации о изменении этого файла. Немного снижает производительность, также не может гарантировать целостности данных (хотя и увеличивает вероятность их сохранности при дописывании в конец существующего файла);
• journal: полное журналирование как метаданных ФС, так и пользовательских данных. Самый медленный, но и самый безопасный режим; может гарантировать целостность данных при хранении журнала на отдельном разделе (а лучше -— на отдельном жёстком диске).
Указывается режим журналирования в строке параметров для программы mount, например: mount /dev/hda6 /mnt/disc-о data=<peжим>
либо в файле /etc/fstab.
Файловая система ext3 может поддерживать файлы размером до 1 ТБ. С Linux-ядром 2.4 объём файловой системы ограничен максимальным размер блочного устройства, что составляет 2 терабайта. В Linux2.6 (для 32-разрядных процессоров) максимальный размер блочных устройств составляет 16 ТБ, однако ext3 поддерживает только до 4 ТБ[1 ].
Главные преимущества:
• Ext3записывает изменения данных и метаданных. Поэтому, в отличии от предыдущих файловых систем, сохраняется и содержимое файлов. Уровень журналирования может контролироваться опцией командыmount.
• Разделы Ext3 не отличаются от Ext2 на уровне файловой структуры, поэтому можно портировать файлы со старой системы на новую, или делать backupна старую систему.
Ext3 резервирует одну из специальных Ext2 i-nodesдля хранения логов, но сам журнал может быть на любой i-nodeв любой файловой системе. Возможно иметь несколько файловых систем Ext3 с совместным журналом.
Работа файла журналирования - записывать состояние системных метаданных во время процесса совершения транзакций. В журнал пишется состояние трех типов данных: метаданные, блоки описания и Headerблоки.
Журналируемый блок метаданных всегда записывается полностью, даже если в файловой системе произошло очень маленькое изменение. Это делается относительно быстро, потому что журналируемые операции ввода/вывода могут быть объединены в большие кластеры и блоки могут быть записаны прямо из кэша с помощью использования структуры bufferhead.
Блоки описания описывают другие блоки метаданных, так что механизм восстановления может копировать метаданные назад в файловую систему. Они записываются перед изменением журнала метаданных.
Headerблоки описывают заголовок, окончание журнала, и порядок номеров - для того, чтобы гарантировать упорядоченную запись во время восстановления.
Сравнение быстродействия и выводы:
Различные тесты показали, что XFSи ReiserFSимеют очень хорошее быстродействие по сравнению с многократно тестированной и оптимизированной Ext2. Ext3 работает
39
медленнее, но приближается кExt2.(Ожидается, что ее быстродействие будет улучшаться). JF5' показала самые плохие результаты не тольког быстродействии, но и в стабильности.
XFS, ReiserFSи Ех13 доказали, что они - быстрые и надежные файловые системы. XFSимеет более высокое быстродействие в такой важной области, как работа с большими файлами. Сейчас ReiserFSполностью перечитывает дерево при записи каждого 4KB блока, и вставляет по одному указателю одновременно, и поэтому происходит повышение затрат на балансирование дерева.
При операциях с маленькими файлами, обычно между 100 и 10000 байт, ReiserFSпоказала лучшие результаты в том случае, когда эти файлы еще не находятся в кэше. А при чтении файлов из кэша разница почти незаметна для Ext2, Ext3, ReiserFSи XFS.
Среди всех файловых систем только ReiserFSбыла включена в ядро Linux, начиная с версии 2.4.1, и SuSEподдерживает ее уже более 2 лет. Ext3 собирается быть стандартной файловой системой для RedHat. aXFSиспользуется на больших серверах, особенно в Голливуде, потому что там большое влияние имеет SGI. AIBMнужно вложить много усилий в JFS. если они хотят сделать ее распространенной файловой системой, и альтернативой для перехода с А1Х и OS/2 на Linux.