| |
Основная цель, которая преследуется при создании журналируемых файловых
систем, насколько я понял, состоит в том, чтобы обеспечить быстрое
восстановление системы после сбоев (например, после потери питания).  Дело
в том, что если произойдет такой сбой, то часть информации о расположении
файлов теряется, поскольку не все изменения сразу записываются на диск.
После этого программа fsck вынуждена просматривать весь диск блок
за блоком (пользуясь битовыми матрицами занятых блоков и индексных
дескрипторов) с целью восстановления потерянных связей.  При увеличении
размера дисков вдвое, вдвое увеличивается и время, необходимое для
просмотра всего диска.  А при тех объемах, которых достигают современные
диски, особенно на серверах, время, необходимое для того, чтобы
просмотреть весь диск, стало недопустимо велико: оно стало достигать часов
и даже суток.  А сервер в это время не отзывается!  Кроме того, нет
гарантии, что все связи удастся восстановить.
В журналируемых файловых системах для решения этой проблемы применяют технику транзакций, развитую в теории баз данных. Суть этой техники в том, что действие не считается завершенным, пока все изменения не сохранены на диске. А чтобы сбои, происходящие в течение времени, необходимого для завершения всех операций, не приводили к необратимым последствиям, все действия и все изменяемые данные протоколируются. Если сбой все-таки произойдет, то по этому протоколу можно вернуть систему в безошибочное состояние.
Главное отличие в технике транзакций, применяемой в базах данных, от аналогичной техники, применяемой в журналируемых файловых системах, состоит в том, что в базах данных сохраняются в протоколе как сами изменяемые данные, так и вся управляющая информация, в то время как понятие транзакции в файловых системах подразумевает сохранение только мета-данных: индексных дескрипторов изменяемого файла, битовых карт распределения свободных блоков и свободных индексных дескрипторов. Дело в том, что если сохранять все изменяемые данные, то теряется смысл кеширования записи на диск и уменьшается скорость дисковых операций. Мета-данные же, во-первых, меньше по размеру, а, во- вторых, сохраняются в специально выделенной области диска, что позволяет избежать чрезмерных затрат времени на ведение протокола.
Файловые системы ext3fs и JFS являются журналируемыми.  Надо
отметить, что ext3fs не является совершенно новой разработкой, а
является просто надстройкой над ext2fs, обеспечивающей ведение
журнала и организацию транзакций.  Файловые системы XFS и JFS являются
открытыми версиями коммерческих файловых систем.
| 
Закладки на сайте Проследить за страницей  | 
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру  |