345f1bf5

Режим data=journal


Режим data=journal обеспечивает полное журналирование и метаданных, и самих данных. Все новые данные сначала пишутся в журнал и только после этого переносятся на свое постоянное место. В случае аварийного отказа журнал можно повторно перечитать, приведя данные и метаданные в непротиворечивое состояние.

Теоретически, режим data=journal самый медленный из всех режимов журналирования, так как данные записываются на диск два раза. Однако было доказано, что в отдельных случаях режим data=journal показывает неплохие результаты. Эндрю Мортон, после знакомства с отчетами LKML о том, что в ext3 data=journal иногда неожиданно выдает высокую производительность, решил провести небольшое тестирование. Сначала он написал простой сценарий оболочки, предназначенный для записи данных на тестируемую файловую систему с максимально возможной скоростью:

Быстрая запись.

while true do dd if=/dev/zero of=largefile bs=16384 count=131072 done

Одновременно с записью данных на тестируемую файловую систему, он попытался прочесть 16Mb данных с другой ext2 файловой системы того же диска, подсчитав результаты:

Чтение 16Mb файла.

time cat 16-meg-file > /dev/null

Результат оказался поразительным. Режим data=journal позволил прочесть 16Mb файл в 9 - 13 раз быстрее, чем при других ext3 режимах, ReiserFS и даже ext2 (в которой журналирование вообще отсутствует):

Written-to-filesystem

16-meg-read-time (seconds)

ext2

78

ReiserFS

67

ext3 data=ordered

93

ext3 data=writeback

74

ext3 data=journal

7

Эндрю повторил тестирование, изменив условия. Чтение 16Mb файла происходило с тестируемой файловой системы. Результат оказался аналогичным. Что из этого следует? Так или иначе, но режим data=journal очень хорошо подходит для случаев, когда данные должны одновременно читаться и записываться. Поэтому режим data=journal, который теоретически считался самым медленным, оказывается, имеет преимущество в среде, сильно нагруженной интерактивными операциями ввода/вывода. По крайней мере, режим data=journal не настолько вял, как казалось бы!

Эндрю еще не нашел объяснений, почему так происходит. Возможно, ответ на этот вопрос поможет в совершенствовании ext3 так, чтобы режимы data=writeback и data=ordered стали более производительными.



Содержание раздела