Sistema de arquivos estruturado em log

Um sistema de arquivos estruturado em log é um sistema de arquivos no qual dados e metadados são gravados sequencialmente em um buffer circular, chamado log. O projeto foi proposto pela primeira vez em 1988 por John K. Ousterhout e Fred Douglis e implementado pela primeira vez em 1992 por Ousterhout e Mendel Rosenblum para o sistema operacional distribuído do tipo Unix Sprite.

Justificativa

Os sistemas de arquivos convencionais tendem a dispor os arquivos com grande cuidado com a localização espacial e fazer alterações locais em suas estruturas de dados para ter um bom desempenho em discos ópticos e magnéticos, que tendem a buscar de forma relativamente lenta.

O design de sistemas de arquivos estruturados em log baseia-se na hipótese de que isso não será mais efetivo porque os tamanhos de memória cada vez maiores nos computadores modernos levariam a E/S a ficar saturada com a gravação, porque as leituras quase sempre seriam satisfeitas pelo cache de memória. Um sistema de arquivos estruturado em log, portanto, trata seu armazenamento como um log circular e grava sequencialmente no cabeçalho do log.

Isso tem vários efeitos colaterais importantes:

Os sistemas de arquivos estruturados em log, no entanto, devem recuperar o espaço livre ao retornar ao começo do log para evitar que o sistema de arquivos fique cheio quando o final do log for atingido. O espaço pode ser liberado pelo começo do log ao apagar arquivos para os quais existem versões mais recentes mais à frente no log. Se não houver versões mais recentes, os dados serão movidos e anexados ao final do log.

Para reduzir a sobrecarga incorrida por essa coleta de lixo, a maioria das implementações evita logs puramente circulares e divide seu armazenamento em segmentos. O final do log simplesmente avança em segmentos não adjacentes que já estão livres. Se for necessário espaço, os segmentos menos cheios são recuperados primeiro. Isso diminui a carga de E/S do coletor de lixo, mas isto se torna cada vez mais ineficaz à medida que o sistema de arquivos é preenchido e se aproxima da capacidade máxima.

Desvantagens

A justificativa de design para sistemas de arquivos estruturados em log pressupõe que a maioria das leituras será otimizada, aumentando sempre os caches de memória. Essa suposição nem sempre é válida:

Referências

  1. Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. (2014), Log-structured File Systems (PDF), Arpaci-Dusseau Books 
  2. John K. Ousterhout, Mendel Rosenblum. (1991), The Design and Implementation of a Log-Structured File System (PDF), University of California, Berkeley 
  3. Swaminathan Sundararaman, Jingpei Yang (2014), Don’t stack your Log on my Log (PDF), SanDisk Corporation