Общие сведения о общей файловой системе журналов

Общая файловая система журналов (CLFS) — это служба ведения журнала общего назначения, которую могут использовать клиенты программного обеспечения, работающие в пользовательском режиме или режиме ядра. В этой документации рассматривается интерфейс CLFS для клиентов в режиме ядра. Сведения об интерфейсе пользовательского режима см. в разделе Common Log File System в 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.