O Linux suporta uma grande variedade de implementações de sistemas de arquivos. Alguns são otimizados para velocidade, outros para grande capacidade de armazenamento e alguns são projetados para dispositivos menores. Cada um desses diferentes tipos de sistema de arquivos tem uma maneira única de organizar os dados.
O Papel do Sistema de Arquivos Virtual
Com tantas implementações diferentes disponíveis, as aplicações precisam de uma maneira consistente de interagir com elas. É aqui que entra o Sistema de Arquivos Virtual (VFS). O VFS é uma camada de abstração no kernel do Linux que fica entre as aplicações e os vários sistemas de arquivos. Ele fornece uma interface única e uniforme, garantindo que as aplicações possam funcionar perfeitamente, independentemente do tipo de sistema de arquivos subjacente. Essa flexibilidade permite que você tenha múltiplos sistemas de arquivos em seus discos, muitas vezes organizados através de partições, o que abordaremos em uma lição futura.
Journaling para Integridade dos Dados
A maioria dos tipos de sistemas de arquivos modernos inclui um recurso chamado journaling por padrão. Para entender sua importância, imagine copiar um arquivo grande quando seu computador perde energia subitamente. Em um sistema de arquivos sem journaling, essa interrupção poderia levar a um arquivo corrompido e a um estado inconsistente do sistema de arquivos. Ao reiniciar, seu sistema precisaria realizar uma verificação completa do sistema de arquivos (fsck), o que pode ser demorado em discos grandes.
Um sistema de arquivos com journaling evita esse problema. Antes de executar uma operação de gravação, ele primeiro registra as alterações pretendidas em um arquivo de log especial, ou "journal". Assim que a operação é concluída com sucesso, o journal é atualizado para marcar a tarefa como finalizada. Se ocorrer uma falha, o sistema pode simplesmente ler o journal ao reiniciar para ver quais operações estavam em andamento e rapidamente restaurar o sistema de arquivos para um estado consistente. Isso reduz drasticamente o tempo de recuperação e protege contra a corrupção de dados.
Tipos Comuns de Sistemas de Arquivos Linux
Aqui estão alguns dos tipos de sistemas de arquivos linux mais comuns que você encontrará:
- ext4 - Como a versão mais recente do Sistema de Arquivos Estendido nativo do Linux, o ext4 é o padrão para muitas distribuições. Ele é retrocompatível com seus predecessores (ext2/ext3) e suporta volumes de disco muito grandes (até 1 exabyte) e tamanhos de arquivo (até 16 terabytes). É uma escolha confiável e padrão para a maioria dos casos de uso.
- Btrfs - Frequentemente chamado de "B-tree FS", o Btrfs é um sistema de arquivos moderno com recursos avançados como snapshots integrados, backups incrementais e desempenho aprimorado. Embora agora seja considerado estável e seja o padrão em algumas distribuições, ainda está em desenvolvimento ativo.
- XFS - Um sistema de arquivos com journaling de alto desempenho que se destaca no manuseio de arquivos grandes e operações de I/O paralelas. Isso o torna uma excelente escolha para sistemas que gerenciam grandes quantidades de dados, como servidores de mídia.
- NTFS e FAT - Estes são tipos de sistemas de arquivos padrão do Windows. O Linux fornece suporte total para leitura e gravação neles, o que é útil para sistemas de dual-boot.
- HFS+ - O sistema de arquivos principal usado pelo macOS. O Linux tem suporte de apenas leitura para ele por padrão, com suporte de gravação disponível através de ferramentas adicionais.
Você pode ver quais sistemas de arquivos estão em uso em sua máquina com o comando df:
pete@icebox:~$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 6461592 2402708 3707604 40% /
udev devtmpfs 501356 4 501352 1% /dev
tmpfs tmpfs 102544 1068 101476 2% /run
/dev/sda6 xfs 13752320 460112 13292208 4% /home
O comando df relata o uso de espaço em disco do sistema de arquivos. O sinalizador -T mostra especificamente o tipo de sistema de arquivos. Exploraremos esta ferramenta em mais detalhes mais tarde.