Journaling

Um sistema de arquivos com journaling (em português, diário) é aquele que rastreia as alterações ainda não confirmadas na parte principal do sistema de arquivos, registrando as intenções de tais alterações em uma estrutura de dados conhecida como Log de dados (diário), que geralmente é um log circular. No caso de uma falha do sistema ou falha de energia, esses sistemas de arquivos podem ser colocados online novamente mais rapidamente com uma probabilidade menor de serem corrompidos.[1][2]

Dependendo da implementação real, um sistema de arquivos com journaling pode apenas controlar os metadados armazenados, resultando em melhor desempenho às custas de maior possibilidade de corrupção de dados. Alternativamente, um sistema de arquivos com journaling pode rastrear os dados armazenados e os metadados relacionados, enquanto algumas implementações permitem um comportamento selecionável a este respeito.[3]

Exemplos de sistemas de arquivos que suportam journaling: Ext3, Ext4, JFS, JFFS, JFFS2, LogFS, NTFS, Reiser4, ReiserFS e XFS.

## História

[editar | editar código fonte]

Em 1990, o JFS, da IBM, foi um dos primeiros sistemas de arquivos comerciais UNIX rodando nos sistemas operacionais AIX que implementou o journaling. Depois, em 1993, a Microsoft implementou o journaling no sistema de arquivos NTFS e em 2001, foi implementado o journaling no ext3.

## Análise

[editar | editar código fonte]

A atualização de sistemas de arquivos para refletir mudanças em arquivos e diretórios geralmente requer muitas operações de escrita separadas. Isso possibilita que uma interrupção (como uma queda do fornecimento de energia ou um  crash do sistema) entre as operações de escritas deixem as estruturas de dados em um estado intermediário inválido.

Por exemplo, a exclusão de um arquivo em um sistema de arquivos Unix envolve três etapas: [4]

1. Remoção da entrada do diretório;
2. Liberação do inode para o pool de inodes disponíveis;
3. Retorno de todos os blocos usados ​​para o pool de blocos disponíveis do disco.

Se ocorrer uma falha entre os passos 1 e 2, haverá um inode órfão e, portanto, um vazamento de armazenamento (storage leak em inglês). Por outro lado, se o crash ocorrer entre os passos 2 e 3, o arquivo ainda não excluído será marcado como disponível e possivelmente será substituído por outro dado.

Detectar e recuperar essas inconsistências normalmente requer uma completa checagem das suas estruturas de dados, por exemplo, por uma ferramenta como fsck (o verificador do sistema de arquivos). Isso geralmente deve ser feito antes que o sistema de arquivos seja novamente montado para acesso de leitura-escrita (read-write). Se o sistema de arquivos for grande e se houver relativamente pequena largura de banda de E/S, isso pode demorar muito tempo e resultar em tempos de parada mais longos se ele bloquear o resto do sistema de voltar à ativa.

Para evitar essa demora, um sistema de arquivo com journaling aloca uma área especial — o journal — no qual registra com antecedência as mudanças que fará. Após um acidente, a recuperação simplesmente envolve a leitura do journal do sistema de arquivos e a repetição das mudanças deste journal até o sistema de arquivos voltar a ser consistente. Essas mudanças são, portanto,  atômicas (indivisíveis) na medida em que todas as mudanças são realizadas (repetidos completamente durante a recuperação), ou não são reproduzidos de forma alguma (são ignorados porque ainda não tinham completamente escrito no jornal antes da ocorrência do crash).

## Referências

1. ↑ Jones, M Tim (4 de junho de 2008), Anatomy of Linux journaling file systems, IBM DeveloperWorks, consultado em 13 de abril de 2009, cópia arquivada em 21 de fevereiro de 2009
2. ↑ Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. (21 de janeiro de 2014), Crash Consistency: FSCK and Journaling (PDF), Arpaci-Dusseau Books, consultado em 22 de janeiro de 2014, cópia arquivada (PDF) em 24 de janeiro de 2014
3. ↑ «tune2fs(8) – Linux man page». linux.die.net. Consultado em 20 de fevereiro de 2015. Cópia arquivada em 25 de fevereiro de 2015
4. ↑ Sistemas de arquivos de Tanenbaum, A.S. (2008). Sistemas operacionais modernos (3ª ed., Pp. 287). Upper Saddle River, NJ: Prentice Hall.

| Este artigo sobre informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.

* v
* d
* e

|

* v
* d
* e

Sistema de ficheiros / Sistema de arquivos

* Comparação de sistemas de arquivos
* Sistema de arquivos Unix

Disco|

* ADFS
* AdvFS
* Amiga FFS
* Amiga OFS
* APFS
* AthFS
* BFS
* Be File System
* Boot File System
* Btrfs
* CVFS
* CXFS
* DFS
* EFS
* Encrypting File System
* Extent File System
* Episode
* ext
* ext2
* ext3
* ext3cow
* ext4
* FAT
* exFAT
* Files-11
* Fossil
* HAMMER
* HFS
* HFS+
* HPFS
* HTFS
* IBM General Parallel File System
* JFS
* LFS
* MFS
* Macintosh File System
* TiVo Media File System
* MINIX
* NetWare File System
* Next3
* NILFS
* NILFS2
* NSS
* NTFS
* OneFS
* PFS
* QFS
* QNX4FS
* ReFS
* ReiserFS
* Reiser4
* Reliance
* Reliance Nitro
* RFS
* SFS
* SNFS
* Soup (Apple)
* Tux3
* UBIFS
* UFS
* VxFS
* WAFL
* Xiafs
* XFS
* Xsan
* zFS
* ZFS

Disco óptico|

* HSF
* ISO 9660
* ISO 13490
* UDF

Memória flash e  SSD|

* APFS
* FAT
* ExFAT
* CHFS
* TFAT
* FFS2
* F2FS
* HPFS
* JFFS
* JFFS2
* JFS
* LogFS
* NILFS
* NILFS2
* NVFS
* YAFFS
* UBIFS

Distribuído|

* CXFS
* GFS2
* GlusterFS
* Google File System
* OCFS2
* OrangeFS
* PVFS
* QFS
* Xsan

NAS|

* AFS
* OpenAFS
* AFP
* Coda
* DFS
* GPFS
* Google File System
* Lustre
* NCP
* NFS
* POHMELFS
* Hadoop
* SMB (CIFS)
* SSHFS

Especializado|

* Aufs
* AXFS
* Boot File System
* CDfs
* Compact Disc File System
* cramfs
* davfs2
* FTPFS
* FUSE
* GmailFS
* Lnfs
* LTFS
* NOVA
* MVFS
* SquashFS
* UMSDOS
* OverlayFS
* UnionFS
* WBFS

Pseudo e  virtual|

* configfs
* devfs
* debugfs
* kernfs
* procfs
* specfs
* sysfs
* tmpfs
* WinFS

Criptográfico|

* eCryptfs
* EncFS
* EFS
* Rubberhose
* SSHFS
* ZFS

Tipos|

* Clusterizado
* Global
* Grid
* Self-certifying
* Flash
* Journaling
* Estruturado em log
* Orientado a registro
* Semântico
* Esteganográfico
* Pseudo
* Versionamento

Características|

* Preservação de caixa
* Cópia em gravação
* Desduplicação de dados
* Limpeza de dados
* Executar no local
* Extent
* Atributo de arquivo
* Atributos de arquivo estendidos
* Registro de mudança de arquivos
* Fork
* Links
* Físico
* Simbólico

Controle de acesso|

* Lista de controle de acesso
* Sistema de arquivos criptográfico
* Permissões
* Modos
* Sticky bit

Interfaces|

* Gerenciador de arquivos
* API do sistema de arquivos
* Installable File System
* Sistema de arquivos virtual

*[v]: Ver esta predefinição
*[d]: Discutir esta predefinição
*[e]: Editar esta predefinição