Um sistema de arquivos (FS) é um conjunto organizado de dados e métodos usados para armazenar, recuperar e gerenciar informações em um dispositivo de armazenamento. Na computação, é a estrutura e a lógica que definem como os arquivos são nomeados, armazenados, organizados e acessados pelo sistema operacional e pelos aplicativos.
Este guia oferece uma visão completa dos sistemas de arquivos Linux, seus tipos, estruturas e importância dentro do sistema operacional Linux, para ajudar a entender os conceitos fundamentais e melhorar o gerenciamento e a operação do sistema.
Assista à versão em vídeo do blog “Guia completo: uma visão geral dos sistemas de arquivos Linux”
Gerencie, aplique patches e dê suporte a endpoints Linux em um único painel.
Por que os sistemas de arquivos são importantes nos sistemas operacionais
Os sistemas de arquivos são essenciais para o funcionamento de qualquer computador. São eles que permitem ao sistema operacional organizar e isolar dados, garantindo armazenamento eficiente e seguro. Esse isolamento permite que processos diferentes rodem ao mesmo tempo sem interferir nos dados uns dos outros.
Para administradores de sistemas e usuários de Linux, dominar os sistemas de arquivos é indispensável. Veja por quê:
- Ajuste de desempenho: entender os sistemas de arquivos ajuda a otimizar o desempenho ao escolher o tipo certo para cada necessidade.
- Gerenciamento de segurança: esse conhecimento é decisivo para administrar permissões e proteger dados.
- Recuperação do sistema: em caso de falhas, um bom domínio dos sistemas de arquivos facilita a recuperação de dados.
- Gerenciamento eficiente do armazenamento: com esse conhecimento, os administradores decidem melhor sobre particionamento, manutenção e expansão do armazenamento.
Principais sistemas de arquivos Linux e suas características
| FS | Recursos | Vantagens | Desvantagens |
| ext4 | Sigla de fourth extended filesystem, muito usado pela robustez e pelo journaling, que evita corrupção de dados após falhas. | Maduro, alta integridade de dados, bom suporte a arquivos grandes. | Limitado pelo tamanho total do volume. |
| XFS | Conhecido pelo alto desempenho e pela escalabilidade, sobretudo com arquivos e volumes grandes; se destaca em E/S paralela. | Desempenho excelente com arquivos grandes e alta escalabilidade. | Gerenciamento mais complexo; desempenho fraco com arquivos pequenos. |
| Btrfs | Oferece snapshots, alocação dinâmica de inodes e gerenciamento integrado de dispositivos; aceita compressão transparente. | Recursos avançados, como detecção de erros e gerenciamento flexível de volumes. | Mais recente e com suporte menos difundido que o ext4. |
| ZFS no Linux | Criado originalmente para o Solaris, suporta grandes capacidades de armazenamento e integra sistema de arquivos e gerenciamento de volumes; inclui verificação robusta de integridade dos dados. | Alta integridade de dados e suporte a grandes capacidades de armazenamento. | Exige mais memória para desempenho ideal. |
| exFAT & ntfs-fuse | Dão suporte a sistemas de arquivos do Windows no Linux, com leitura e escrita em partições formatadas pelo Windows; otimizados para memória flash e com gerenciamento de NTFS por drivers em espaço de usuário. | Permitem trabalhar com arquivos do Windows no Linux sem atritos. | Desempenho variável e possíveis problemas de compatibilidade. |
Visão geral da árvore de diretórios do Linux
Talvez o que mais chame atenção no sistema de arquivos do Linux seja a estrutura de árvore única e unificada, em que todos os sistemas de arquivos montados aparecem apenas como diretórios dessa árvore. Ela parte do diretório raiz (/) – o diretório de nível mais alto do sistema, a partir do qual todos os arquivos e diretórios se originam; cada sistema de arquivos montado se integra a essa árvore.
O Filesystem Hierarchy Standard (FHS) padroniza a organização dos diretórios entre as distribuições Linux, o que favorece a compatibilidade de software e os processos de backup do sistema. Entre os diretórios principais estão /bin, para binários executáveis, /etc, para arquivos de configuração, /home, para diretórios de usuários, e /var, para dados variáveis, como os diretórios de dados de serviços como servidores web, de banco de dados ou de e-mail. Navegar pela árvore do sistema de arquivos Linux significa usar essas estruturas padronizadas e os comandos adequados para gerenciar arquivos com eficiência e manter a integridade do sistema.
Como interagir com o sistema de arquivos
- Obter ajuda: a maioria dos comandos tem um manual, acessível com man [command], por exemplo, man cp.
- Navegação e manipulação: comandos como cd, para mudar de diretório, ls, para listar o conteúdo de um diretório, e operações de arquivo como touch, cp, mv e rm atuam diretamente sobre os arquivos.
- Montagem e desmontagem: dispositivos de armazenamento externos são montados na árvore do sistema de arquivos em pontos definidos (por exemplo, o dispositivo de bloco /dev/sdb1 (primeira partição do segundo disco rígido) é montado em /media/user/VolumeName), o que dá acesso contínuo aos arquivos, não importa o meio de armazenamento. A montagem transparente de armazenamento remoto ou na nuvem é possível pelo FUSE (Filesystem in UserSpacE).
- Segurança, propriedade e permissões: cada arquivo e diretório recebe permissões que definem os direitos de acesso do proprietário, dos grupos de usuários atribuídos e dos demais. Os administradores ajustam essas permissões com chmod e chown para controlar o acesso aos arquivos e manter a segurança do sistema. As permissões podem ser definidas de forma granular: leitura, escrita e execução são configuradas separadamente por usuário, grupo de usuários ou outros critérios.
Montagem e gerenciamento de sistemas de arquivos
- Montar sistemas de arquivos no Linux:
-
-
- Com o comando mount: montar um sistema de arquivos significa anexá-lo a um diretório específico (ponto de montagem) dentro da estrutura de diretórios existente. Normalmente isso é feito com o comando mount, indicando o tipo de sistema de arquivos e as opções necessárias (embora a maioria dos sistemas de arquivos seja detectada automaticamente:
- mount [-t fstype] [-o options] /path/to/device /path/to/mountpoint
- Com o arquivo /etc/fstab (filesystem table): monte um sistema de arquivos automaticamente adicionando a linha correspondente ao arquivo /etc/fstab, como no exemplo. A montagem automática acontece na inicialização, ao conectar um drive externo ou ao executar o comando mount -a. Detalhar esse método foge ao escopo deste artigo, mas há mais informações aqui ou com o comando man fstab. (Os campos dump e PassNo têm a ver com a verificação de erros de disco; pesquise antes de alterá-los.)
- sudo nano /etc/fstab
e depois adicione uma linha ao final do arquivo: - #<device> <mountpoint> <FS type> <mount opts> <dump><PassNo>
/dev/sdb1 /media/user ext4 defaults 0 2
- sudo nano /etc/fstab
- Com o comando mount: montar um sistema de arquivos significa anexá-lo a um diretório específico (ponto de montagem) dentro da estrutura de diretórios existente. Normalmente isso é feito com o comando mount, indicando o tipo de sistema de arquivos e as opções necessárias (embora a maioria dos sistemas de arquivos seja detectada automaticamente:
-
- Desmontar sistemas de arquivos: para desmontar um sistema de arquivos, use o comando umount /path/to/mountpoint. Ele desvincula o sistema de arquivos do ponto de montagem, garantindo que todos os dados sejam gravados em disco e evitando perdas.
- Examinar sistemas de arquivos montados:
-
- df: mostra o espaço em disco usado e disponível em todos os sistemas de arquivos montados no momento.
- mount: sem argumentos, exibe todos os sistemas de arquivos montados, indicando onde e como cada um está montado.
Monitore seus endpoints Linux em tempo real. Agende seu teste grátis de 14 dias.
Operações e comandos do sistema de arquivos
Operações e comandos mais comuns
- Criar arquivos: touch filename cria um arquivo vazio chamado filename.
- Excluir arquivos: rm filename remove arquivos.
- Copiar e mover: cp e mv copiam ou movem arquivos entre diretórios.
- cp sourcefile [/path/to/]filecopy # Copia sourcefile para filecopy.
- cp -vR sourcedir [/path/to/]targetdir # Copia recursivamente o diretório sourcedir e seu conteúdo para targetdir.
- Gerenciamento de diretórios: mkdir e rmdir criam e removem diretórios.
Administração de permissões e propriedade
- chmod: altera as permissões de um arquivo ou diretório, por exemplo:
- chmod 0644 filename # define permissões numericamente
- chmod +w filename* # torna o glob de destino gravável
- chown: altera a propriedade de um arquivo ou diretório para determinado usuário e/ou grupo, por exemplo:
- chown username filename # username passa a ser o dono de filename
- chown -R username[:groupname] directory # altera recursivamente a propriedade de um diretório e de seu conteúdo para username (e, opcionalmente, groupname).
O futuro com os sistemas de arquivos Linux
Este guia abordou os pontos essenciais dos sistemas de arquivos Linux, dos tipos e estruturas ao gerenciamento e às operações. Entender esses componentes é vital para uma administração de sistemas eficaz e segura, tanto para administradores quanto para usuários de Linux: o conhecimento profundo dos sistemas de arquivos amplia a capacidade de gerenciamento e sustenta ambientes computacionais mais robustos e seguros. Vale continuar estudando e praticar na prática com os sistemas de arquivos Linux para dominar os detalhes da administração de sistemas e otimizar o desempenho geral.