В четвертом проходе e2fsck проверяет счетчики ссылок для каждого индексного дескриптора. Все неудаленные файлы с нулевым счетчиком ссылок также помещаются в каталог /lost+found.
В пятом проходе e2fsck проверяет соответствие всей информации о файловой системе. В этом проходе сравниваются карты битов блоков и дескрипторов, записанных на носителе информации, со значениями, полученными во время проверки файловой системы и, при необходимости, информация на диске корректируется.
Журналируемые файловые системы
Основная цель, которая преследуется при создании журналируемых файловых систем, состоит в том, чтобы обеспечить как можно большую вероятность быстрого восстановления системы после сбоев (например, после потери питания). Дело в том, что если происходит сбой, то часть информации о расположении файлов теряется, поскольку система не успевает записать все изменения из буфера на диск. После сбоя утилита fsck должна проверить все диски, которые не были корректно демонтированы, с целью восстановления потерянной информации. При современных объемах жестких дисков, исчисляемых десятками гигабайт, на проверку двух-трех таких дисков может уйти слишком много времени. Кроме того, нет гарантии, что все данные удастся восстановить.
В журналируемых файловых системах для решения этой проблемы применяют транзакции, которые хорошо известны всем программистам баз данных. Идея транзакции достаточно проста – существует набор связанных операций, называемых транзакцией, и эта группа операций является атомарной (неделимой). Таким образом, транзакция является успешной (завершенной) в том случае, если все операции, составляющие транзакцию, завершились успешно. Но это еще не все. Система ведет журнал, в котором отражаются все действия с данными и все изменения данных протоколируются. В случае сбоя на основании журнала можно вернуть систему в безошибочное состояние.
Основное отличие транзакций из области баз данных от транзакций, применяемых в журналируемых файловых системах, состоит в том, что в базах данных в журнале сохраняются изменяемые данные и вся управляющая информация, а в файловых системах – только мета-данные: индексные дескрипторы изменяемых файлов, битовые карты распределения свободных блоков и свободных индексных дескрипторов.
Файловая система Ext3
По большому счету, файловая система Ext3 не является новой файловой системой. Это похоже на ситуацию с файловой системой FAT 16/FAT 32 – они совместимы, но проблема решена экстенсивным путем. Было необходимо срочно создать журналируемую файловую систему. Если начинать с нуля – долго и накладно, тогда сделали для Ext2 несколько десятков специальных функций и назвали все это Ext3 – получился непонятный гибрид.
Вроде бы добавились журналирующие функции – но не в том объеме, в каком хотелось. И узкие места Ext2 остались: оптимизация использования дискового пространства, ограничение на размер файла и т. п. Пока же общественность (fido7.ru.linux) более склоняется к использованию других журналируемых файловых систем.
Файловая система ReiserFS
Кроме проблемы быстрого восстановления после сбоев, в файловой системе Ext2 имеется еще несколько нерешенных проблем. Из самых основных – нерациональное использование дискового пространства, ограничение на размер файла, неоптимальный поиск.
Поскольку в файловой системе используется простой связный список, то время поиска информации линейно зависит от длины списка. Таким образом, чем длиннее список (к примеру, файлов в каталоге), тем дольше идет поиск необходимого элемента.
В системе ReiserFS применяются так называемые "сбалансированные деревья" или "B+Trees", время поиска в которых пропорционально не количеству объектов, а логарифму этого числа. В сбалансированном дереве все ветви имеют одинаковую длину. ReiserFS использует сбалансированные деревья для хранения всех объектов файловой системы: файлов в каталогах, данных о свободных блоках и т. д. Это позволяет существенно повысить производительность обращения к дискам.
Кроме того, система ReiserFS является журналируемой, т. е. в ней решена проблема быстрого восстановления после сбоев. Решена в ReiserFS и проблема с ограничением на размер файла. По всей видимости, именно эта файловая журналируемая система в ближайшее время станет стандартом de-facto для многих дистрибутивов Linux.
Ссылки
• e2fsprogs.sourceforge.net – утилиты файловой системы Ext2.
• ftp.uk.linux.org/pub/linux/sct/fs/ji\'s/ – код и документация Ext3.
Читать дальше
Конец ознакомительного отрывка
Купить книгу