Файловые системы, страница 10
Описание файла
PDF-файл из архива "Файловые системы", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 10 страницы из PDF
Пример для каталога “catalog”:СтандартнаяинформацияИмяфайлаДескрипторзащиты“Catalog”VCN01F02F1Корень РазмещениеиндексаиндексаОтображениеVCN-LCNF4,F10,F153VCN8F39F11VCN45F66F8Битоваякарта10F12F1311F147F92.2.3. ВосстанавливаемостьОдно из наиболее важных свойств NTFS - это ее способность к восстановлениюпосле сбоев. Восстанавливаемость ФС гарантирует, что в случае отказа питанияили фатальной системной ошибки ни одна операция ФС не останетсянезавершенной, а структура дискового тома будет сохранена без использованияспециальной утилиты исправления диска. Способность к восстановлениюпридает NTFS дополнительную надежность, причем это достигается за счетлишь незначительного проигрыша в производительности.Восстанавливаемость ФС в NTFS обеспечивается при помощи техникипротоколированиятранзакций(transactionlogging).Впроцессепротоколирования, прежде чем выполнить над содержимым диска какую-либооперацию, изменяющую важные структуры файловой системы, NTFSзаписывает информацию о ней в файл журнала транзакций.
Тогда в случае сбоясистемы можно будет, используя этот журнал, отменить или повторить (еслиэто возможно) все незавершенные транзакции после перезагрузки машины.NTFS определяет транзакцию, как операцию ввода вывода, изменяющуюданные ФС или структуру каталогов тома, каждая из которых может состоять изнескольких подопераций.Средства протоколирования NTFS состоят из двух важных компонент: файла собственно журнала транзакций (log file) и набора системных процедур длядоступа к нему - сервиса журнала транзакций (log file service, LFS). Отделение44LFS от ФС позволит другим системным компонентам или приложениямсоздавать собственные журналы для реализации восстанавливаемости науровне прикладной программы, как это делается в системах обработкитранзакций (например в СУБД).
NTFS вызывает LFS и предает ему указательна открытый файловый объект - файл, который будет использоваться в качествежурнала транзакций. LFS, в свою очередь, либо инициализирует новый журнал,либо использует диспетчер кэша Windows NT для доступа к существующемужурналу.Сброс журналатранзакций надискСервис ЖурналатранзакцийПротоколированиетранзакцииЧтение/запись/сброс надиск журнла транзакцийДиспетчер КэшаДиспетчерввода-выводаДрайвер NTFS...Записьобновления томаВызов диспетчера виртуальнойпамяти для доступа кспроецированному файлуПри изменении структуры тома NTFS сначала записывает в кэшированныйжурнал транзакции, модифицирующие структуру тома, затем сбрасывает изкэша на диск журнал транзакций и толко потом записывает на диск из кэшасами изменения тома (т.е.
выполняет сами транзакции). Такаяпоследовательность действий гарантирует, что если не удастся выполнитьизменения ФС, то соответствующие транзакции можно будет считать изжурнала и либо повторить, либо отменить в процессе восстановления ФС(которое инициируется автоматически при первом обращении к тому послеперезагрузки машины).LFS делит файл журнала на две части: область рестарта (restart area) и“бесконечную” область протоколирования (logging area).
В области рестартаNTFS хранит информацию контекста, такую как позиция в областипротоколирования, с которой следует начать чтение при восстановлении. На тотслучай, если область рестарта будет разрушена или станет по каким-либопричинам недоступна, LFS создает ее копию. В области протоколированияхранятся записи транзакций, обеспечивающие восстановление ФС после сбоя.LFS создает иллюзию бесконечности журнала транзакций путем циклическогоповторного использования области протоколирования, однако при этомгарантируется, что нужная информация не будет затерта.
Для идентификациизаписей используются номера логической последовательности (logical sequencenumber, LSN), которые увеличиваются, несмотря на циклическое использованиежурнала. Однако максимально возможный LSN настолько велик, чтологический размер журнала можно считать практически бесконечным.Область рестартаКопия 1 Копия 2Область протоколированияЗаписи журнала45Прежде чем модифицировать том, NTFS обращается к LFS для регистрации вжурнале соответствующих транзакций, что отвечает технике опережающегопротоколирования (write-ahead logging).
NTFS использует два типа записей записи модификации (update record) и записи контрольной точки (check-pointrecord). Каждая запись модификации состоит из двух частей: Информация для повтора (redo information) - как вновь применить ктому подоперацию подтвержденной транзакции в случае, если сбойпроизошел до того, как транзакция была переписана из кэша на диск. Информация для отмены (undo information) - как устранитьизменения, вызванные подоперацией транзакции, которая на моментсбоя была запротоколирована лишь частично.После того, как все подоперации транзакции были запротоколированы спомощью записей модификации, NTFS выполняет транзакцию в кэше.
Поокончании обновления кэша в журнал помешается еще одна запись,означающая, что транзакция завершена - подтверждение транзакции (commit atransaction). NTFS гарантирует, что модификации тома подтвержденнойтранзакции будет выполнены даже в случае сбоя ОС.Для восстановления диска NTFS использует две таблицы, постоянноподдерживаемые в памяти - таблицу транзакций (transaction table),содержащую LSN всех неподтвержденных на данный момент транзакций, итаблицу измененных страниц (dirty page table), содержащую информацию отом, какие страницы кэша содержат не записанные на диск измененияструктуры ФС. Каждые 5 секунд NTFS обращается к LFS для сохранениятекущей копии этих таблиц в файле журнала транзакций. Затем в областьпротоколирования помещается запись контрольной точки, а в область рестартазаписывается LSN этой записи.
Таким образом, на момент сбоя в журналесохранены самые последние копии таблиц транзакций и измененных страниц,запись соответствующей им контрольной точки (причем ее LSN записан вобласти рестарта) и несколько записей модификации, внесенных в журнал ужепосле выставления контрольной точки.При восстановлении тома NTFS выполняет три прохода по журналутранзакций, загружая его в память на первом проходе, чтобы минимизироватьобъема дискового ввода-вывода.
Во время прохода анализа (analysis pass)журнал просматривается в прямом направлении, начиная с последней операцииконтрольной точки с тем, чтобы обновить таблицы транзакций и измененныхстраниц, используя сохраненные для этой контрольной точки копии. Крометого, производятся все модификации таблиц, соответствующие записямжурнала, помещенным туда уже после записи контрольной точки. При этом,если среди этих записей встречается запись “подтверждение транзакции”, тоэта транзакция удаляется из таблицы транзакций. Таким образом, проходанализа восстанавливает содержимое таблиц на момент сбоя.На проходе повтора (redo pass) NTFS сканирует журнал в прямом направлении,начиная от LSN последней не сохраненной на диск записи модификации(найденной на проходе анализа). Для всех найденных записей “обновлениестарницы”, содержащих модификацию тома, NTFS повторяет операции в кэше,для чего используется информация для повтора соответствующих записейжурнала. Когда NTFS достигает конца журнала, она уже обновила кэш всеминеобходимыми модификациями тома (выполнила все подтвержденныетранзакции).46Завершив проход повтора, NTFS начинает проходе отмены (undo pass),просматривая журнал в обратном направлении и отменяя все подоперациинеподтвержденных транзакций, LSN которых берется из уже восстановленнойтаблицы транзакций, для чего используется информация для отменысоответствующих записей журнала.Когда проход отмены завершен, целостность тома восстановлена.
В этотмомент NTFS сбрасывает на диск изменения кэша с тем, чтобы гарантироватьправильность содержания тома. После этого NTFS записывает пустую областьрестарта, указывающую, что том находится в нормальном состоянии и что вслучае нового сбоя восстановления не требуется.
Заметим, что NTFSгарантирует восстановление тома к некоторому существовавшему ранеецелостному состоянию, но не обязательно к тому, которое непосредственнопредшествовало сбою, т.к. сброс журнала транзакций из кэша на дисквыполняется не всякий раз при получении записи “транзакция завершена”, асразу для пакета из нескольких завершенных транзакций..