|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Сервис журнала транзакцийХотя LFS разработан, чтобы обеспечить средства протоколирования и восстановления более чем для одного клиента, первоначально он доступен только для ФС через интерфейсы режима ядра (kernel-mode interfaces). Вызывающая программа, в данном случае NTFS, передает LFS указатель на открытый файловый объект — файл, который будет использоваться как журнал транзакций. LFS либо инициализирует новый журнал, либо вызывает диспетчер КЭШа Windows NT для доступа к существующему журналу через кэш, как показано на рис. 4-1.
Рис. 4-1. Журнал транзакций.
LFS делит файл журнала на две части: область рестарта (restart area) и "бесконечную" область протоколирования (logging area), как показано на рис. 4-2. NTFS вызывает LFS для чтения и записи области рестарта. В этой области NTFS хранит информацию контекста, такую как позиция в области протоколирования, откуда она будет начинать чтение при восстановлении после сбоя системы. На тот случай, что область рестарта будет разрушена или станет по каким-либо причинам недоступной, LFS создает ее копию. Остальная часть журнала транзакций — это область протоколирования, в которой находятся записи транзакций, обеспечивающие NTFS восстановление тома после сбоя. LFS создает иллюзию бесконечности журнала транзакций путем его циклического повторного использования (в то же время, гарантируя, что нужная информация не будет затерта). Для идентификации записей, помещенных в журнал, LFS использует номера логической последовательности (logical sequence number, LSN). Циклически используя журнал, LFS увеличивает значения LSN. Число возможных LSN настолько велико, что практически может считаться бесконечным. NTFS никогда не выполняет чтение-запись транзакций в журнал напрямую. LSN обеспечивает сервисы, которые NTFS вызывает для открытия файла журнала, помещения в журнал записей, считывания записей из журнала в прямом и в обратном порядке, сброса записей журнала до заданного LSN или продвижения логического начала журнала на больший LSN. В процессе восстановления NTFS вызывает LSN для чтения записей журнала в прямом направлении, чтобы повторить все транзакции, которые были запротоколированы в журнале, но не записаны на диск к моменту сбоя. NTFS также обращается к LSN для чтения записей в обратном направлении, чтобы отменить (или откатить) все транзакции, которые не были полностью запротоколированы перед аварией системы, Рис. 4-2. Журнал транзакций.
Кроме того, NTFS вызывает LSN для продвижения логического начала журнала на запись с большим LSN, когда ей становятся не нужны старые записи журнала. Система обеспечивает восстановление тома следующим образом: 1. Сначала NTFS вызывает LFS для записи в (кэшированный) файл журнала любых транзакций, модифицирующих структуру тома. 2. NTFS модифицирует том (также в кэше). 3. Диспетчер кэша вызывает LFS для уведомления о необходимости сбросить журнал транзакций на диск (этот сброс реализуется LFS при помощи обратного вызова диспетчера кэша с указанием страниц памяти, подлежащих выводу на диск; см. последовательность вызовов на рис. 4-1). 4. Сбросив на диск журнал транзакций, диспетчер кэша записывает на диск изменения тома (сами транзакции). Эта последовательность действий гарантирует, что если не удастся выполнить изменения ФС, то соответствующие транзакции можно будет считать из журнала и либо повторить, либо отменить в процессе восстановления ФС. Восстановление ФС начинается автоматически при первом обращении к тому после перезагрузки машины. NTFS проверяет, применялись ли к тому транзакции, запротоколированные в журнале до сбоя, и если нет, то повторяет их. NTFS гарантирует также отме1ту тех транзакций, которые не были полностью запротоколированы до сбоя, так что вызванные ими изменения не появятся на томе. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |