Introdução ao Common Log File System
O CLFS (Common Log File System) é um serviço de registro em log de uso geral que pode ser usado por clientes de software em execução no modo de usuário ou no modo kernel. Esta documentação discute a interface CLFS para clientes no modo kernel. Para obter informações sobre a interface do modo de usuário, consulte Common Log File System in the SDK do Microsoft Windows.
O CLFS encapsula toda a funcionalidade do Algoritmo para Recuperação e Isolamento explorando semântica (ARIES). No entanto, a DDI (interface do driver de dispositivo) CLFS não se limita ao suporte a ARIES; ele é adequado para uma variedade de cenários de registro em log.
O trabalho principal de qualquer log transacional de alto desempenho é permitir que os clientes de log repitam o histórico com precisão. O CLFS faz isso realizando marshaling de registros de log do cliente em buffers de memória, forçando-os ao armazenamento estável e lendo registros novamente na solicitação. É importante observar que, depois que um registro o torna estável e a mídia de armazenamento está intacta, o CLFS poderá ler o registro entre falhas do sistema.
O CLFS dá suporte a logs dedicados e logs multiplexados. Um log dedicado tem um único fluxo de registros de log que é usado por todos os clientes do log. Um log multiplexado (também chamado de log comum) tem vários fluxos. Cada fluxo tem seus próprios clientes e seus próprios buffers de memória para realizar marshaling de registros de log, mas os registros de todos esses buffers são multiplexados em uma única fila e liberados para um único log no armazenamento estável. O multiplexação permite que as operações de E/S de vários fluxos sejam consolidadas.
Quando um cliente grava um registro em um fluxo, ele recebe de volta um LSN (número de sequência de log) que identifica o registro de log para referência futura. Os LSNs atribuídos aos registros gravados em um fluxo específico formam uma sequência crescente. Ou seja, o LSN atribuído a um registro gravado em um fluxo é sempre maior do que o LSN atribuído ao registro anterior gravado nesse mesmo fluxo.
O CLFS fornece vários serviços, além de marshaling, liberação e recuperação de registros de log. A lista a seguir descreve alguns desses serviços adicionais.
O espaço para um conjunto de registros de log relacionados pode ser reservado antecipadamente. Isso significa que um cliente pode prosseguir com uma transação sabendo que o CLFS poderá acrescentar ao log todos os registros que descrevem a transação.
O CLFS mantém um cabeçalho para cada registro de log. Os clientes podem definir determinados campos no cabeçalho para criar cadeias de registros vinculados que você pode percorrer posteriormente em ordem inversa.
O CLFS libera registros de log para o armazenamento estável de acordo com sua política, mas também permite que os clientes forcem um conjunto de registros de log para o armazenamento estável.
O CLFS mantém metadados para um log e também para cada fluxo de um log multiplexado. Os clientes podem exibir metadados e definir determinadas partes dos metadados.
Para cada fluxo, o CLFS mantém um LSN base e um último LSN que um cliente pode usar para delinear a parte ativa do fluxo.
Para logs dedicados, o CLFS mantém (a pedido do cliente) uma parte final do arquivo morto que o cliente pode usar para acompanhar a parte do log que foi arquivada.
Determinados recursos do CLFS (por exemplo, os campos LSN anteriores e desfazer o próximo LSN de um cabeçalho de registro) podem ser melhor compreendidos estudando ARIES. Para obter mais informações sobre o ARIES, consulte os artigos a seguir.
C. Mohan, Don Haderle, Bruce Lindsay, Hamid Pirahesh, Peter Schwarz, ARIES: Um método de recuperação de transações que dá suporte a bloqueio de Fine-Granularity e reversões parciais usando Write-Ahead registro em log.
C. Mohan, repetindo história além de ÁRIES.