Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Общая файловая система журнала (CLFS) — это служба ведения журнала общего назначения, используемая клиентами программного обеспечения, работающими в пользовательском режиме или в режиме ядра. В этой документации рассматривается интерфейс CLFS для клиентов в режиме ядра. Сведения об интерфейсе пользовательского режима см. в статье Common Log File System in the Microsoft Windows SDK.
CLFS инкапсулирует все функциональные возможности алгоритма восстановления и изоляции семантики эксплойтов (ARIES). Однако интерфейс драйвера устройств CLFS (DDI) не ограничен поддержкой ARIES; Он хорошо подходит для различных сценариев ведения журнала.
Основная задача любого высокопроизводительного журнала транзакций заключается в том, чтобы клиенты могли точно повторять историю. CLFS делает это путем маршалирования записей журнала клиента в буферы памяти, принудительного их сохранения в стабильном хранилище и чтения записей обратно по запросу. Важно отметить, что после того как запись помещена в стабильное хранилище и носитель данных остается невредимым, CLFS сможет считывать запись даже при системных сбоях.
CLFS поддерживает выделенные журналы и мультиплексированные журналы. Выделенный журнал содержит один поток записей журналов, используемых всеми клиентами журнала. Мультиплексный журнал (также называемый общим журналом) содержит несколько потоков. Каждый поток имеет собственных клиентов и собственные буферы памяти для упаковки записей журнала, но записи из всех этих буферов мультиплексируются в одну очередь и сбрасываются в один журнал в стабильном хранилище. Мультиплексирование позволяет объединять операции ввода-вывода нескольких потоков.
Когда клиент записывает запись в поток, он возвращает номер последовательности журнала (LSN), который идентифицирует запись журнала для будущей ссылки. LSN, назначенные записям, которые записываются в определенный поток, формируют возрастающую последовательность. То есть LSN, назначенный записи, записываемой в поток, всегда больше, чем LSN, назначенный предыдущей записи, записанной в тот же поток.
CLFS предоставляет несколько сервисов в дополнение к маршализации, очистке и получению записей журналов. В следующем списке описаны некоторые из этих дополнительных служб.
Пространство для набора связанных записей в журнале можно зарезервировать заранее. Клиент может продолжить транзакцию, зная, что CLFS может добавлять в журнал все записи, описывающие транзакцию.
CLFS сохраняет заголовок для каждой записи журнала. Клиенты могут задать определенные поля в заголовке, чтобы создать цепочки связанных записей, которые можно позже пройти в обратном порядке.
CLFS сбрасывает записи журналов в стабильное хранилище в соответствии со своей политикой, но также позволяет клиентам принудительно записывать набор записей журналов в стабильное хранилище.
CLFS поддерживает метаданные для журнала, а также для каждого потока мультиплексированного журнала. Клиенты могут просматривать метаданные и задавать определенные части метаданных.
Для каждого потока CLFS поддерживает базовый LSN и последний LSN, который клиент может использовать для обозначения активной части потока.
Для выделенных журналов CLFS сохраняет (по запросу клиента) архивный хвост, который клиент может использовать для отслеживания части архивируемого журнала.
Некоторые функции CLFS (например, предыдущие поля LSN и отмена следующего LSN заголовка записи) лучше всего поняты, изучая ARIES. Дополнительные сведения о ARIES см. в следующих статьях.
С. Мохан, Дон Хадерл, Брюс Линдсей, Хамид Пирахеш, Питер Шварц, ARIES: метод восстановления транзакций, поддерживающий блокировку Fine-Granularity и частичные откаты с помощью Write-Ahead ведения журнала.
С. Мохан, Повторяющаяся История за пределами ARIES.