Sistemas de arquivos para GNU/Linux

Neste artigo abordarei os principais sistemas de arquivos usados em distribuições GNU/Linux atuais, tais como ext3, ext4, XFS, JFS e ReiserFS.

[ Hits: 204.568 ]

Por: Edson em 22/06/2012


Journaling



Journaling é um recurso usado pelos sistemas de arquivos que consiste em uma área dedicada para registros, armazenando todas as ações que serão feitas nos arquivos, como gravação e/ou alteração de dados, por exemplo. Seja armazenamento somente de metadados, ou de dados de arquivos, permitindo restaurar o sistema de arquivos, caso aconteça algum erro inesperado.

A principal finalidade do 'journaling' é recuperar o sistema de arquivos de erros (tolerância de falhas), sejam eles causados pelo sistema, aplicações ou desligamentos incorretos de forma forçada ou inesperada.

Com isso é possível localizar todas as operações que não haviam sido completadas, restaurando a consistência do sistema de arquivos e permitindo que o sistema operacional continue sendo utilizado.

Aí você ainda fica com dúvida e pergunta: Mas como assim?

Com o 'jounaling', o sistema de arquivos passa a registrar em uma área especial chamada journal, ou log, as ações que serão feitas nos arquivos (gravação ou alteração de dados, por exemplo) antes da gravação no FS em si.

Após a gravação no sistema de arquivos, seja dos blocos de arquivos ou dos metadados, as operações registradas no log são tidas como concluídas e, portanto, eliminadas. Note que todo este procedimento acontece de maneira extremamente rápida.

Mas em que exatamente, o 'journaling' mostra-se vantajoso?

Os registros no log são escritos antes que as mudanças efetivamente ocorram no sistema de arquivos. Estes registros somente são eliminados quando as mudanças são executadas nos arquivos.

Se, por exemplo, o computador for desligado repentinamente (como ocorre em falta de energia elétrica), o sistema de arquivos verificará os registros existentes no 'journal' e executará aquilo que estiver marcado como não realizado. Isso faz com que o risco de perda de dados diminua drasticamente, já que o sistema operacional saberá 'onde parou'.

Porém temos que ter em mente que este recurso não é anti-falhas e sim, um recurso para tolerar falhas até um certo ponto. Pois esta tolerância não previne 100% de erros como os citados anteriormente, toda essa tolerância a falhas pode acabar de uma hora para outra, após várias quedas de energia ou desligamentos forçados.

Contudo, nem todos os sistemas de arquivos que usam o 'journaling' possuem uma boa implementação do mesmo, fazendo com que este recurso não seja 100% confiável.

Se você começar a desligar o sistema incorretamente com frequência, vai perceber que, algumas vezes, o sistema não será capaz de verificar o 'journal', e o sistema de arquivos terá que ser verificado usando um utilitário para verificação da integridade do sistema de arquivos, tentando localizar todas as operações que não haviam sido completadas para tentar recuperar a integridade de alguns arquivos, fazendo com que, quase sempre, alguns arquivos sejam perdidos.

Técnicas de journaling

  • Journal Físico: Consiste em registrar uma cópia antecipada de todos os blocos de arquivos que serão posteriormente gravados no sistema de arquivo principal. Se houver uma falha quando o sistema de arquivos está gravando, a gravação pode simplesmente ser repetida até a conclusão, quando o sistema de arquivo for montado da próxima vez.

    Se houver uma falha quando a gravação está sendo registrado no journal, a gravação parcial terá um checksum ausente, ou incompatível, e pode ser ignorada na próxima montagem do sistema de arquivos.

  • Journal Lógico: Consiste em gravar apenas os metadados que sofrerão ações, tais como leitura/gravação e alteração dos arquivos. Um sistema de arquivos, com uma 'journal' lógico, ainda recupera-se rapidamente após um acidente, mas pode permitir que os dados não sejam recuperados devido a não gravação antecipada dos blocos do arquivo alterado ou em uso, causando corrupção de dados. Porém, isso aumenta o desempenho, nota-se mais isso na inicialização do sistema.

Outras informações

Os sistemas de arquivos para GNU/Linux: JFS, XFS, ReiserFS, ext3 e ext4, possuem 'journaling'.

O arquivo de log do 'journaling' pode estar no mesmo sistema de arquivos, ou em um sistema de arquivos de outra partição, e/ou outro disco. E seu tamanho pode ser aumentado também para melhorar o desempenho.

Então o 'journaling' torna-se indispensável para os sistema de arquivos usados hoje e no futuro, pois é através deste recurso que temos uma certa tolerância a certos acontecimentos não planejados.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Journaling
   3. Sistema de arquivos ext3
   4. Sistema de arquivos ext4
   5. Sistema de arquivos XFS
   6. Sistema de arquivos ReiserFS
   7. Sistema de arquivos JFS
   8. Benchmark básico dos sistemas de arquivos
   9. Considerações finais
Outros artigos deste autor

Ingressar desktop GNU/Linux no domínio Active Directory do Windows Server 2008

Incron - supervisionando sistemas de arquivos

Tunando sistemas de arquivos para GNU/Linux

Clonezilla - Gerando e restaurando backups completos (Parte I)

Multiboot pelo pendrive usando grub2: instalando várias distros a partir de uma unidade de armazenamento móvel

Leitura recomendada

Configurando leitores ópticos e HDs

Manipulação de discos e sistemas de arquivos

Recuperando arquivos deletados em partições ReiserFS

Entendendo as permissões de arquivos (chmod)

O básico sobre RAID com mdadm e raidtools

  
Comentários
[1] Comentário enviado por removido em 22/06/2012 - 19:41h

Olha rapaz, achei o seu artigo excelente e fico satisfeito em ser o primeiro a comentá-lo e mais ainda por ter saído do assunto em voga "Pinguim x M$" que tá dando no saco!

Quanto aos filesystems, venho usando o reiserfs para o sistema raiz e o xfs para /home e não tenho do que me queixar, exceto o fato do Debian não incluir o reiserfs como opção no Debian Installer, em relação a isso fiz uma dica a respeito:

http://gnu2all.blogspot.se/2012/06/instalacao-do-debian-em-particao.html

Como sugestão, você poderia solicitar a adição do esquema de particionamento para cada um dos sistemas de arquivos junto a moderação do VOL, o que facilitaria a vida daqueles que vierem a criar novas partições.

Um abraço.

[2] Comentário enviado por eabreu em 22/06/2012 - 19:54h

Obrigado pelo comentário edps e pela sugestão também.

Realmente... as vezes a galera da VOL leva a sério o papo Linux VS M$.

abraço.

[3] Comentário enviado por pietro_scherer em 23/06/2012 - 10:28h

Ótimo artigo!

É sempre bom ter um domínio das ferramentas e métodos que utilizamos para realizar nossos trabalhos.
Me ajudou bastante, obrigado!

[4] Comentário enviado por marcusmvl em 23/06/2012 - 11:09h

Parabéns, ficou muito bom o artigo!


[5] Comentário enviado por danielsath em 24/06/2012 - 18:06h

Parabens, muito bom. So gostaria de saber a respeito de uma particao que eu encontrei aqui com o nome extend, que estava querendo saber que sistema de arquivos ela utilizar

[6] Comentário enviado por eabreu em 24/06/2012 - 18:19h

Um dos comandos para saber qual sistema de arquivos uma determinada partição tem é o "blkid".

# blkid /dev/sda5

Obrigado pelos comentários pessoal, grato mesmo!

[7] Comentário enviado por danilosampaio em 25/06/2012 - 09:48h

Muito bom! parabéns!

[8] Comentário enviado por xerxeslins em 27/06/2012 - 15:48h

Super artigo!
Está nos meus favoritos e nota 10 com certeza.

[9] Comentário enviado por rdgacarvalho em 28/06/2012 - 10:45h

Ótimo artigo,

Fica a dica de no futuro abordar o Btrfs que nos trará grandes beneficios.

Abraços.

[10] Comentário enviado por lcnrj em 30/06/2012 - 13:47h

Uso o reiserfs há anos, estou pensando em mudar para xfs no meu hd de 1.5TB mas ouvi falar que na falta de luz ele já era. Quando pensei no ext4 me disseram que ele "gasta" mais espaço no HD. Tenho um misto de muitos arquivos pdf pequenos e muitos arquivos com mais de 250MB. Qual a sua sugestão...obrigado!

[11] Comentário enviado por eabreu em 30/06/2012 - 14:09h

Ola amigo lcnrj,

Você leu o artigo inteiro ? pois dei claras explicações durante o artigo e no final deixei algumas sugestões de uso.

Para poder dá uma sugestão de uso ideal, preciso saber qual o esquema de particionamento está sendo usado ou que pretende usar ?

Mas antes mesmo de informar, digo que a melhor solução para seu caso seria usar o ext4 no /home, pois os arquivos que citou ficam localizados no /home né isso ? o ext4 é bem rápido tem um ótimo suporte junto ao kernel, além disso trabalha muito bem com arquivos grandes e pequenos(tanto na leitura quanto na gravação).

*** Esclarecimento****

Qualquer sistema de arquivos, pelo menos até este momento pode ser corrompido, com uma queda de energia, o que existe em si é sistemas de arquivos mas consistentes que outros como foi explicado no artigo.

espero seu retorno.

[12] Comentário enviado por Tacioandrade em 11/07/2012 - 00:58h

Muito obrigado pelo artigo, acabei além de conhecer mais sobre os FS's do mercado Linux, com o que você falou sobre o JFS:

"Reparação muito eficaz de um disco com badblocks, ele consegue marcar os setores defeituosos com muita precisão, algo que outros sistemas de arquivos para Linux não fazem."

Vou tentar reavivar uns 20 HDs de la da empresa que estão em uma caixa para descarte por problemas de BadBlock. =)


Valeu mesmo. ^^

[13] Comentário enviado por eabreu em 11/07/2012 - 11:44h

Por nada amigo Tacioandrade,

Mas lembre-se que badblocks influência diretamente no desempenho e não é garantido que o mesmo não ficará com outros badblocks, já que como tem vários setores defeituosos no disco.

abraço.

[14] Comentário enviado por jarlisson em 20/07/2012 - 14:56h

Ótimo.

Sempre lia esses nomes, mas não sabia o que significavam. Sò sabia que funcionava em um sistema, mas nao no outro, e desse via os arquivos daquele etc. Muito bom saber o porquê.

[15] Comentário enviado por jarlisson em 23/07/2012 - 04:38h

Uma dúvida. Por onde você aprendeu isso?
Queria referência de quem entende, pra estudar mais a fundo. Com uma pitada de C, se me entende.

[16] Comentário enviado por eabreu em 23/07/2012 - 11:26h

Simples Jarlisson !

Estudando por livros digitais e impressos, estudando pela documentação que os desenvolvedores deixam disponível, pesquisando e estudando pela internet e principalmente, mas principalmente mesmo colocando em prática toda informação estudada e assimilada fazendo uma bateria de testes para poder comprovar o comportamento de todos os sistemas de arquivos abordados no artigo.

Abraço.

[17] Comentário enviado por arimacedo em 31/07/2012 - 17:11h

Sensacional o artigo, gostei muito...

[18] Comentário enviado por rafamarini em 19/11/2012 - 01:32h

Olá, excelente artigo!

Eu tenho uma duvida em relação ao JFS!

O Journaling que o Sistema de Arquivos JFS utiliza é o Journaling Lógico, correto?
Então, o Journaling Lógico guarda em seu log os metadados de arquivos que sofreram uma alteração recentemente, porém minha dúvida é o seguinte:

-Quando houver um evento de falha (uma queda de luz), ao religar o equipamento ele irá restaurar os dados utilizando o log realizado pelo journaling, como ele recupera os arquivos somente possuindo os seus metadados e não os dados como o Journal Físico?

Obrigado pela atenção!

[19] Comentário enviado por eabreu em 19/11/2012 - 11:46h

Obrigado pelos comentários pessoal!

Respondendo as perguntas feitas pelo amigo rafamarini.


[18] Comentário enviado por rafamarini em 19/11/2012 - 01:32h:

O Journaling que o Sistema de Arquivos JFS utiliza é o Journaling Lógico, correto?

Obrigado pela atenção!


R. Correto


[18] Comentário enviado por rafamarini em 19/11/2012 - 01:32h:

-Quando houver um evento de falha (uma queda de luz), ao religar o equipamento ele irá restaurar os dados utilizando o log realizado pelo journaling, como ele recupera os arquivos somente possuindo os seus metadados e não os dados como o Journal Físico?

Obrigado pela atenção!


R. Os metadados também armazena informação sobre a localização dos arquivos no sistema de arquivos, sendo assim, caso computador desligue de forma inesperada no momento da leitura ou escrita de um arquivo, o journal tem no log a informação(metadados) onde esta localizado os blocos do arquivo para tentar restaurar o mesmo, se necessário repetitivamente.

Em um evento citado por você dificilmente perderá o arquivo por completo. por que quando um arquivo é aberto para leitura e ou escrita, o linux cria uma cópia do mesmo, chamado de arquivo swap. assim todas as alterações feitas no arquivo, na verdade são feitas na cópia.

Quando o arquivo é salvo as alterações feitas na cópia são sincronizadas para o arquivo original pelo kernel de forma tardia ou não. Poderá ainda perder se o conteúdo do arquivo estiver em algum bloco defeituoso (bad block) ou se o journal não recebeu a tempo os metadados.

[20] Comentário enviado por thiagomadeira em 14/12/2012 - 15:47h

super artigo.... Show de bola.

[21] Comentário enviado por vinteumdoonze em 16/03/2013 - 23:15h

Poxa, muito bom o seu artigo, estou estudando para LPI e aprendi muito aqui sobre File System, sei que o conteudo abordado no artigo é basico e devo procurar outras fontes, mas já foi uma grande ajuda para a compreenção do assunto.
Esta de parabéns.

Abraço.

[22] Comentário enviado por galactus em 17/03/2013 - 19:21h

Olá. Gostei do artigo, mas gostaria de deixar meus dois centavos...
Primeiro que o XFS já está muito mais seguro do que antigamente. Em kerneis antigos, realmente, em quedas de energia você poderia corromper dados, mas nas novas versões do XFS e dos kerneis não. Estes benchmarks sintéticos onde você formata um HD e faz os testes logo em seguida não condizem com a realidade de uma sistema em pleno uso, e principalmente com muito tempo de uso! Já li comentários inclusive do principal desenvolvedor do ext4 que estes tipos de testes não mostram a vida real de uma sistema de arquivos, por isso ele não leva muito em consideração esses tipos de testes.

Também assisti a uma palestra postada no Youtube do desenvolvedor do XFS da RedHat falando coisa parecida. São quase 50 minutos dele respondendo a perguntas da galera, quem tiver curiosidade de assisitir é só procurar por: XFS_ Recent and Future Adventures in Filesystem Scalability

Por exemplo, o pessoal olha esses números nus e crus e vai achar que o JFS é uma lesma! Mesmo estando defasado, não é assim. O JFS foi criado numa época em que cada pulso de clock importava, pois eram poucos e muito caros. Portanto seu objetivo era não sobrecarregar o processador e ser seguro. Instale ele numa máquina antiga com apenas um núcleo e comece a fazer mais de uma coisa ao mesmo tempo que você vai ver a que o JFS veio! Olha aqui esse meu video: http://www.youtube.com/watch?v=OCevVWiZCks

O é ext4 pode ser mais rápido enquanto tem poucas requisições sobre ele, mas é só começar a aumentar o número de requisições que a coisa fica feia, na prática você nota como se o sistema ficasse "preso" ao que ele está fazendo e passa a responder muito lentamente! Quando não dá umas congeladas. O XFS tem reserva de requisições por padrão, para não "esgotar" o sistema de arquivos rapidamente quando muitas requisições são feitas ao mesmo tempo. Eu tenho uma servidor multimedia em casa e o XFS dá banho no ext4 nisso. Fora o servidor são mais 4 máquinas, comece a abrir vários vídeos de um mesmo HD pra você ver a diferença. Melhor que ele pra streaming de video em rede só o ZFS com RAID, parece que nem faz força. Desculpem pela redação, acabou ficando quase 50 reais.... hehehehe Mas era só!

[23] Comentário enviado por eabreu em 18/03/2013 - 12:18h

Obrigado pelos comentários thiagomadeira, vinteumdoonze e galactus.

galactus bom você ter comentado e passado mais informações a respeito do assunto abordado no artigo.

[24] Comentário enviado por AprendiNoLinux em 20/12/2014 - 15:03h

Fantástico artigo...
Andei pesquisando hoje sobre armazenamento e não consegui chegar em conclusão alguma rsrs.
Pelas possíveis mudanças de tamanho nas partições, a opção XFS foi descartada.
Parece que vou manter ext4 com lvm...

[25] Comentário enviado por bl4ckout em 11/03/2019 - 09:56h

Sem dúvidas o Universo Linux é sensacional e principalmente por ter uma comunidade tão viva, unida e dinâmica.
Usei o Windows por muito tempo e estou totalmente motivado a algum dia, contribuir com minhas experiências no Linux com todos aqui, no Viva o Linux.
Pode parecer simples, mas agradeço pelo esforço de todos por manter esse fórum rico como está, pois verdadeiramente é um grande refúgio para novos tripulantes.

[26] Comentário enviado por xerxeslins em 11/03/2019 - 10:19h


[25] Comentário enviado por bl4ckout em 11/03/2019 - 09:56h

Sem dúvidas o Universo Linux é sensacional e principalmente por ter uma comunidade tão viva, unida e dinâmica.
Usei o Windows por muito tempo e estou totalmente motivado a algum dia, contribuir com minhas experiências no Linux com todos aqui, no Viva o Linux.
Pode parecer simples, mas agradeço pelo esforço de todos por manter esse fórum rico como está, pois verdadeiramente é um grande refúgio para novos tripulantes.


http://gph.is/18Sfht9


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts