Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #73, ЯНВАРЬ 2005 г.

Журналирование в подробностях

Денис Колисниченко

Хакер, номер #073, стр. 073-096-2


Когда же чистый бит не может быть установлен? Обычно тому есть две причины: отключение питания компьютера или перезагрузка Reset’ом, что приравнивается к отключению питания, и сбой программы (это больше касается Windows) или даже ядра (тоже больше подходит для Windows, но может случиться с любой ОС) операционной системы, что приводит к зависанию компьютера.

Целостность файловой системы может быть нарушена, если программа или сама ОС записывала данные на диск и в этот момент произошло отключение питания. Хорошо, если отключение питания произошло во время записи программой какого-то файла, пусть и очень важного. Файл можно восстановить хотя бы частично. А вот если свет пропал, когда операционная система записывала метаданные файловой системы, то есть сведения про саму fs, то ты можешь не досчитаться не одного, а, скажем, ста файлов или даже больше.

Журналируемые файловые системы

Представим такую ситуацию. У нас есть жесткий диск на 80 Гб. Сегодня таким объемом никого не удивишь, не так ли? Мы поленились разбить его на разделы, и у нас есть один большой раздел на 80 Гб. В момент записи на диск произошло отключение питания. При загрузке операционная система запустит средство проверки диска. Представляешь, сколько времени займет такая проверка? Даже при условии, что ошибок будет мало или вообще не будет, придется ждать довольно долго. А если будет нарушена целостность, то ее восстановление займет еще несколько минут твоего драгоценного времени. Все это справедливо для обычной файловой системы.

А как же работает журналируемая файловая система? Если обычная fs просто выполняет запланированные команды, то журналируемая перед тем, как что-то сделать, записывает стратегический план действий, например скопировать файл file.txt в файл report.txt, а затем удалить файл file.txt. Записывается этот план в специальный файл, который называется журналом. Как только журналируемая файловая система убедится, что пункт ее плана полностью выполнен и данные успешно записаны на диск, она вычеркивает этот пункт из журнала. Если что-то она выполнить не успела, а ты, например, отключил питание, то при следующем запуске программа проверки файловой системы будет проверять не все данные на диске, а только те файлы, которые есть в журнале, - ведь остальные данные не причем, а ошибки если и будут, то в файлах, которые записаться не успели.

Почему ошибок может и не быть? Обрати внимание, что запись в журнал ведется ДО начала самой работы с диском. Операция, записанная в журнал, может еще и не начаться, а питание уже пропадет. Благодаря этому даже вероятность ошибок в файловой системе значительно снижается, хотя... Лучше, чем ИБП (UPS), средства от отключения питания пока никто не придумал.

Другими словами, журналируемая файловая система – это файловая система, устойчивая к сбоям. Основными журналируемыми файловыми системами на сегодняшний день являются XFS, ReiserFS, JFS и Ext3. Сначала я расскажу о первых трех, а о ext3 мы поговорим в последнюю очередь, поскольку она заслуживает особого внимания в силу того, что является стандартной файловой системой Linux.

Назад на стр. 073-096-1  Содержание  Вперед на стр. 073-096-3