| |
![]() |
Daniel Robbins (drobbins@gentoo.org)
President/CEO,
Gentoo Technologies, Inc.
January 2002
С выходом релиза 2.4 Linux появилась возможность использования filesystem с новыми свойствами, таких как Reiserfs, XFS, GFS и других. Эти filesystems еще не достаточно опробованы и имеются вопросы, что именно они могут делать, насколько они хороши и насколько оправдано их использование в промышленной Linux среде. Daniel Robbins отвечает на эти вопросы по ходу пояснения инсталляции этих новых продвинутых filesystems под Linux 2.4. В этой статье Daniel представляет XFS, SGI's free enterprise-class файловую систему, ставшую доступной для Linux.
В этой статье мы познакомимся с XFS, SGI's free, 64-bit, высокопроизводительной файловой системой для Linux. Сначала будет проведено сравнение XFS с ext3 и ReiserFS и описаны некоторые из технологий, которые используют внутренние структуры XFS. В следующей статье будет описан процесс инсталляции XFS на вашей системе и даны несколько советов по настройке XFS и ее полезных features, например ACL (access control lists) и поддержки extended attribute.
Недавно мной было проведено тестирование с целью сравнения XFS, ReiserFS и ext3 в отношении raw performance. Но, прежде всего я замечу, что результаты отражают только общую тенденцию зависимости производительности файловых систем от нагрузки на однопроцессорной системе. Тесты, не претендуя на "абсолютную" истинность результатов, тем не менее, могут помочь в ответе на вопрос: для какой специфической задачи какой файловой системе следует отдавать предпочтение. И еще раз, результаты моего тестирования не рассматривайте как заключительные. В любом случае, для ответственного выбора следует проводить тестирование на конкретных приложениях.
В других тестах производительность XFS была близка к таковой у ReiserFS и
всегда превосходила ext3. Приятная особенность XFS - она не генерит (впрочем,
как и ReiserFS) излишнюю дисковую активность. XFS пытается кэшировать как можно
больше данных и "основанием" для сброса на диск является заполнение памяти,
а не интервал времени. Когда происходит сброс данных на диск, это не оказывает
заметного влияния на другие IO операции. Как противоположность - в ext3 (режим
"data=ordered
") периодический сброс данных на диск порождает
проблемы с интерактивностью и, при высокой интенсивности операций IO, даже
disk thrashing.
Следующие тесты на производительность и адаптацию к внешним факторам
сосредоточились вокруг распаковки kernel source tarball на RAM disk и
последующее рекурсивное копирование source tree в новый каталог на той же
файловой системе. XFS справлялась с такой задачей хорошо, но проигрывала ReiserFS.
Однако, после повторного mkfs.xfs
и игры с опциями mount
,
XFS смогла немного "обойти" по скорости ReiserFS даже при обработке
файлов среднего размера, характерных для kernel source tree. Словом, преимущество
почти во всем, кроме маленькой детали - удаления старых файлов, "неудобной"
для XFS операции (ReiserFS и ext3 удаляют файлы быстрее, чем XFS).
data=journal
" показывает сравнительно неплохую производительность
с учетом гарантии целостности данных (а не только метаданных). Однако дать по
настоящему высокую оценку ext3 мешают проблемы при сбросе данных на диск.
allocation group
". Уникальность allocation group в том, что каждая
группа управляет своими собственными inodes и free space, что превращает группы
в своего рода автономные sub-filesystem, сосуществующие в рамках общей XFS.
В XFS очень эффективно организовано управление inodes. Каждая allocation group ассигнует inodes как ей это удобно в группы по 64. Каждая allocation group хранит свои inodes, используя B+ tree, и каждый конкретный inode number может быть быстро найден на диске. Можно сказать, что XFS использует B+ trees где это только возможно, что и способствует повышению производительности.
Как и ReiserFS, XFS журналирует только метаданные и не делает это для самих данных. Из этого следует, что в XFS (как и в ReiserFS) возможна потеря данных, измененных перед аварийной перезагрузкой. Но, у журнала XFS имеется два свойства, снижающих вероятность потери данных по сравнению с ReiserFS.
В ReiserFS неожиданная перезагрузка может иметь результатом попадание в изменяемый файл фрагмента из когда-то удаленного файла. Помимо очевидной потери данных, гипотетически это может иметь более серьезные последствия. В XFS имеется гарантия, что любые "недозаписанные" блоки заполнены нулями. Так как блоки с нулевыми байтами в системных файлах игнорируются, устраняется лазейка в безопасности.
Теперь непосредственно о проблеме потери данных. Такая проблема в XFS минимизируется вследствие того, что операция сброса на диск ожидающих обработки модификаций метаданных в XFS происходит чаще, чем это происходит в ReiserFS (особенно при высокой интенсивности операций IO). Как следствие, после аварии в XFS потерь будет меньше, чем при тех же условиях в ReiserFS. Заметьте, сама по себе более частая запись метаданных не "купирует" проблему, а лишь провоцирует более частый сброс на диск и самих данных.
XFS выполняет allocation, разделяя, казалось бы, неделимый процесс на два шага. Сначала, когда XFS получает данные для записи, выполняется запись ждущей транзакции [pending transaction] в RAM и просто резервируется соответствующее количество пространства на основной файловой системе. При этом, резервируя "количество пространства" для новых данных, XFS не решает, какие именно блоки файловой системы эту информацию будут хранить. XFS откладывает принятие окончательного решения до самого последнего момента, когда данные фактически сбрасываются на диск.
Через delaying allocation файловая система XFS получает дополнительные возможности оптимизации скорости. Когда наступает момент фактического сброса данных на диск, XFS может быстро и интеллектуально ассигновать free space под оптимизацию производительности. В частности, если новые данные добавляются в конец одного файла, XFS может ассигновать смежные region на диске. Если бы XFS не задерживала "до последнего" принятие решения по ассигнованию физических блоков, возможно, данные были бы "размазаны" по множеству несмежных участков. Благодаря задержке "физического" ассигнования, XFS способна делать запись одной операцией, повышая производительность и снижая фрагментацию.
Delayed allocation имеет еще один положительный эффект. Если создается много временных файлов с "маленьким временем жизни", XFS вообще не будет сбрасывать их на диск (ну и что, не только XFS). А теперь внимание, поскольку физические блоки не allocated, отсутствует необходимость в их последующей deallocate. Иначе, не пишутся на диск не только данные, но и не изменяются метаданные файловой системы (а вот это уже кое-то, по сравнению с другими FS).
About the author![]() |
Перевод: Vladimir Kholmanov
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |