Guia Completo de Gerenciamento de Discos no Linux
Bem-vindo ao guia definitivo sobre gerenciamento de discos, partições e sistemas de arquivos no Linux. Este recurso foi criado para ajudar usuários de todos os níveis a entender como os sistemas Linux lidam com armazenamento, particionamento e formatação.
Entender como gerenciar corretamente seus discos no Linux permite:
- Organizar eficientemente seu armazenamento
- Melhorar o desempenho do sistema
- Evitar perda de dados
- Configurar sistemas de alta disponibilidade
- Resolver problemas comuns de armazenamento
Conceitos Básicos
Antes de mergulharmos nos detalhes, vamos entender alguns conceitos fundamentais:
No Linux, os dispositivos de armazenamento são representados como arquivos no diretório /dev:
/dev/sda,/dev/sdb- Discos SATA/SAS/USB/dev/nvme0n1- Discos NVMe/dev/mmcblk0- Cartões SD/eMMC
O Linux atribui letras aos discos em ordem de detecção. As partições são numeradas: /dev/sda1,
/dev/sda2, etc.
Uma partição é uma divisão lógica de um disco físico. Cada partição pode ter seu próprio sistema de arquivos e funcionar como um dispositivo independente.
Razões para particionar um disco:
- Separar o sistema operacional dos dados do usuário
- Instalar múltiplos sistemas operacionais
- Organizar dados por tipo ou importância
- Otimizar desempenho e backup
- Limitar o espaço disponível para determinados usos
O sistema de arquivos é a estrutura que define como os dados são armazenados e recuperados em uma partição. Cada sistema de arquivos tem suas características:
- ext4: Sistema padrão para muitas distribuições Linux
- Btrfs: Sistema moderno com recursos avançados como snapshots
- XFS: Otimizado para arquivos grandes e alta performance
- ZFS: Sistema avançado com proteção de dados integrada
- exFAT: Para compatibilidade entre Linux, macOS e Windows
Anatomia de um Disco no Linux
Partições de Disco
As partições são divisões lógicas de um disco físico que permitem organizar o armazenamento de forma mais eficiente. Vamos explorar tudo sobre partições no Linux.
Tipos de Partições
| Tipo | Descrição | Uso Comum |
|---|---|---|
| Primária | Partição principal que pode conter um sistema de arquivos ou outras partições | Sistemas operacionais, dados críticos |
| Estendida | Um tipo especial de partição primária que pode conter múltiplas partições lógicas | Criar mais de 4 partições em discos MBR |
| Lógica | Partições criadas dentro de uma partição estendida | Armazenamento de dados, home directories |
| SWAP | Espaço usado como memória virtual | Complemento à RAM física |
No esquema MBR, você só pode ter até 4 partições primárias ou 3 primárias e 1 estendida. O esquema GPT não tem esta limitação e permite até 128 partições.
Tabelas de Partições
- Esquema tradicional de particionamento
- Suporta discos de até 2TB
- Limitado a 4 partições primárias
- Compatível com sistemas legados
- Menor confiabilidade (uma única cópia da tabela)
- Esquema moderno de particionamento
- Suporta discos maiores que 2TB
- Até 128 partições
- Maior confiabilidade (tabela redundante)
- Requer UEFI para boot (embora haja exceções)
Como Criar Partições
Existem várias ferramentas para criar partições no Linux. Aqui veremos como usar o fdisk, uma
ferramenta de linha de comando tradicional:
sudo fdisk -l
Este comando lista todos os discos e partições do sistema. Para criar partições em um disco específico:
sudo fdisk /dev/sda
Dentro do fdisk, você pode usar os seguintes comandos:
m: Exibir o menu de ajudan: Criar uma nova partiçãop: Mostrar a tabela de partições atuald: Deletar uma partiçãow: Salvar alterações e sairq: Sair sem salvar alterações
Exemplo de criação de uma partição usando fdisk:
# Inicie o fdisk no disco desejado
sudo fdisk /dev/sdb
# Digite 'n' para criar uma nova partição
Command (m for help): n
# Escolha o tipo de partição (p=primária, e=estendida)
Partition type: p
# Escolha o número da partição
Partition number (1-4): 1
# Aceite o setor inicial padrão ou especifique um
First sector: [padrão]
# Defina o tamanho da partição (último setor ou tamanho específico)
Last sector: +10G
# Digite 'w' para salvar as alterações
Command (m for help): w
Redimensionar Partições
Redimensionar partições no Linux geralmente requer que elas estejam desmontadas, especialmente para reduzir o
tamanho. O parted ou gparted são ferramentas recomendadas para isso.
sudo parted /dev/sda resizepart 1 20GB
Este comando redimensiona a primeira partição de /dev/sda para 20GB. Após redimensionar a partição, você também precisa redimensionar o sistema de arquivos:
sudo resize2fs /dev/sda1
Sempre faça backup dos seus dados antes de redimensionar partições. Este processo pode resultar em perda de dados se houver falhas ou interrupções durante o processo. Reduzir o tamanho de uma partição é particularmente arriscado comparado com expandir uma partição.
Formatos de Sistema de Arquivos
O sistema de arquivos define como os dados são organizados e armazenados em uma partição. Cada sistema tem suas vantagens e desvantagens. Vamos analisar os principais sistemas de arquivos disponíveis no Linux.
Ext4
O Ext4 (Fourth Extended Filesystem) é o sucessor do Ext3 e o sistema de arquivos mais comumente usado em distribuições Linux.
- Suporta volumes de até 1 EiB
- Tamanho máximo de arquivo de 16 TiB
- Journaling para proteção contra corrupção
- Alocação tardia para melhor performance
- Desfragmentação online
- Verificação de integridade melhorada
sudo mkfs.ext4 /dev/sda1
Btrfs
O Btrfs (B-tree File System) é um sistema de arquivos mais moderno com recursos avançados de gerenciamento de armazenamento.
- Sistema baseado em Copy-on-Write (COW)
- Snapshots e clones integrados
- Compressão transparente
- Suporte nativo a RAID
- Auto-correção de dados com checksums
- Suporte a subvolumes
sudo mkfs.btrfs /dev/sda1
XFS
O XFS é um sistema de arquivos de alto desempenho, originalmente desenvolvido pela Silicon Graphics.
- Excelente desempenho para arquivos grandes
- Escalabilidade para servidores de grande porte
- Suporte a volumes de até 8 EiB
- Journaling para metadados
- Recuperação rápida após falhas
- Não pode ser reduzido (apenas expandido)
sudo mkfs.xfs /dev/sda1
ZFS
O ZFS é um sistema de arquivos avançado originalmente desenvolvido pela Sun Microsystems.
- Proteção de dados integrada
- Deduplicação e compressão
- Snapshots e clones
- Gerenciamento de pools de armazenamento
- Auto-reparação de dados
- Compatibilidade limitada no Linux devido a licenciamento
sudo zpool create mypool /dev/sda1
exFAT
O exFAT (Extended File Allocation Table) é um sistema de arquivos proprietário da Microsoft, mas suportado pelo Linux.
- Compatibilidade com Windows, macOS e Linux
- Suporte a arquivos maiores que 4GB
- Menor sobrecarga que o NTFS
- Não tem journaling (menos proteção contra corrupção)
- Bom para unidades externas compartilhadas entre sistemas
sudo mkfs.exfat /dev/sda1
NTFS
O NTFS (New Technology File System) é o sistema de arquivos padrão do Windows, com suporte de leitura e escrita no Linux.
- Compatibilidade com Windows
- Journaling para proteção de dados
- Suporte a permissões e criptografia
- No Linux, requer o pacote ntfs-3g para escrita
- Performance inferior em Linux comparado a sistemas nativos
sudo mkfs.ntfs /dev/sda1
FAT32
O FAT32 é um sistema mais antigo, mas ainda amplamente utilizado para compatibilidade.
- Compatibilidade universal (Windows, macOS, Linux, dispositivos embarcados)
- Limitado a arquivos de 4GB
- Limitado a volumes de 32GB em Windows (maior em Linux)
- Sem journaling ou recursos avançados
- Ideal para dispositivos pequenos e mídia removível
sudo mkfs.fat -F 32 /dev/sda1
Comparação de Sistemas de Arquivos
| Sistema | Max. Volume | Max. Arquivo | Journaling | Snapshots | Compressão | Compatibilidade |
|---|---|---|---|---|---|---|
| Ext4 | 1 EiB | 16 TiB | Sim | Não | Não (nativo) | Linux |
| Btrfs | 16 EiB | 16 EiB | Sim | Sim | Sim | Linux |
| XFS | 8 EiB | 8 EiB | Sim (metadados) | Não | Não | Linux |
| ZFS | 256 ZiB | 16 EiB | Sim | Sim | Sim | Linux, FreeBSD, Solaris |
| exFAT | 128 PiB | 16 EiB | Não | Não | Não | Windows, macOS, Linux |
| NTFS | 256 TiB | 16 TiB | Sim | Não | Sim | Windows, Linux (com ntfs-3g) |
| FAT32 | 2 TiB | 4 GiB | Não | Não | Não | Universal |
Formatação de Discos
A formatação é o processo de preparar um dispositivo de armazenamento para uso, criando um sistema de arquivos específico. Vamos ver como formatar discos no Linux.
Comandos de Formatação
Cada sistema de arquivos tem seu próprio comando de formatação:
Para formatar uma partição com Ext4:
sudo mkfs.ext4 -L "NOME_VOLUME" /dev/sda1
Opções comuns:
-L: Define o rótulo (label) do volume-m: Porcentagem de blocos reservados para o superusuário-O: Especifica recursos a serem usados (ou desativados)
Para formatar uma partição com Btrfs:
sudo mkfs.btrfs -L "NOME_VOLUME" /dev/sda1
Criar um volume RAID1 com Btrfs:
sudo mkfs.btrfs -L "RAID1_VOLUME" -d raid1 -m raid1 /dev/sda1 /dev/sdb1
Para formatar uma partição com XFS:
sudo mkfs.xfs -L "NOME_VOLUME" /dev/sda1
Opções comuns:
-b: Tamanho de bloco (valores em bytes)-s: Tamanho do setor de log-d: Opções específicas para dados
Para formatar como FAT32:
sudo mkfs.fat -F 32 -n "NOME_VOLUME" /dev/sda1
Para formatar como exFAT:
sudo mkfs.exfat -n "NOME_VOLUME" /dev/sda1
Formatação Segura
Para garantir que dados antigos não possam ser recuperados, você pode realizar uma formatação segura:
Esta operação é irreversível e pode levar muito tempo em discos grandes.
sudo shred -v -n 1 -z /dev/sda1
Parâmetros do comando shred:
-v: Modo verboso (mostra progresso)-n 1: Número de passagens (1 é suficiente para discos modernos)-z: Adiciona uma passagem final de zeros
Montagem de Volumes
Após particionar e formatar, é preciso montar os volumes para acessar os arquivos. Vamos explorar as diferentes formas de montagem no Linux.
Montagem Manual
O comando mount é usado para montar sistemas de arquivos manualmente:
sudo mount /dev/sda1 /mnt/dados
Montar com opções específicas:
sudo mount -o rw,noatime,users /dev/sda1 /mnt/dados
Desmontar um sistema de arquivos:
sudo umount /mnt/dados
Principais opções de montagem:
| Opção | Descrição |
|---|---|
| rw | Montar com acesso de leitura e escrita (padrão) |
| ro | Montar somente para leitura |
| noatime | Não atualizar os tempos de acesso (melhora desempenho) |
| users | Permite usuários comuns montarem/desmontarem |
| exec/noexec | Permite/proíbe execução de binários no sistema montado |
| auto/noauto | Monta/não monta automaticamente com comando "mount -a" |
Montagem com fstab
O arquivo /etc/fstab controla quais sistemas de arquivos são montados automaticamente na
inicialização.
Estrutura de uma linha no fstab:
# <dispositivo> <ponto de montagem> <tipo> <opções> <dump> <pass>
/dev/sda1 /home ext4 defaults,noatime 0 2
UUID=1234-5678 /dados xfs defaults 0 0
Use UUIDs em vez de nomes de dispositivo para garantir que as montagens permaneçam corretas mesmo se a ordem dos discos mudar.
sudo blkid
Para aplicar as alterações do fstab sem reiniciar:
sudo mount -a
Montagem Automática
O Linux também oferece serviços para montagem automática de dispositivos removíveis:
Sistema moderno para gerenciamento de dispositivos de armazenamento que habilita montagem automática em ambientes desktop.
Serviço que monta sistemas de arquivos sob demanda e os desmonta automaticamente quando não estão em uso.
sudo apt install autofs
Ferramentas de Gerenciamento
O Linux oferece diversas ferramentas para gerenciar discos e partições. Vejamos as principais:
fdisk
Ferramenta tradicional de linha de comando para gerenciamento de partições.
sudo fdisk -l
Principais recursos:
- Interface baseada em menu
- Suporte a MBR e GPT
- Alterações só são aplicadas após salvar
- Não redimensiona sistemas de arquivos
parted
Uma ferramenta mais avançada para gerenciamento de partições.
sudo parted /dev/sda print
Principais recursos:
- Suporte nativo a várias tabelas de partição
- Pode redimensionar partições e alguns sistemas de arquivos
- Aplicação imediata das alterações
- Interface de linha de comando mais poderosa
GParted
Interface gráfica para gerenciamento de partições, baseada no parted.
sudo apt install gparted
Principais recursos:
- Interface gráfica intuitiva
- Visualização clara do espaço usado/livre
- Redimensionamento de partições e diversos sistemas de arquivos
- Operações em fila (multiple operations)
- Live CD/USB disponível para operações mais complexas
LVM
O Logical Volume Manager (LVM) é uma camada de abstração sobre partições físicas que oferece gerenciamento flexível de volumes.
- Redimensionamento dinâmico de volumes
- Expansão de volumes além dos limites físicos de um disco
- Snapshots para backup
- Migração de dados entre dispositivos em uso
Comandos básicos do LVM:
# Criar um volume físico (PV)
sudo pvcreate /dev/sda1
# Criar um grupo de volumes (VG)
sudo vgcreate meugrupo /dev/sda1 /dev/sdb1
# Criar um volume lógico (LV)
sudo lvcreate -n meudados -L 10G meugrupo
# Formatar o volume lógico
sudo mkfs.ext4 /dev/meugrupo/meudados
# Montar o volume lógico
sudo mount /dev/meugrupo/meudados /mnt/dados
smartctl
Ferramenta para monitorar a saúde dos discos através da tecnologia S.M.A.R.T.
sudo apt install smartmontools
Verificar saúde de um disco:
sudo smartctl -a /dev/sda
Executar um teste de curta duração:
sudo smartctl -t short /dev/sda
Configuração de RAID
RAID (Redundant Array of Independent Disks) é uma tecnologia que combina múltiplos discos para maior desempenho, capacidade ou redundância.
Tipos de RAID
- Dados divididos entre discos
- Maior desempenho de leitura/escrita
- Capacidade total dos discos combinados
- Sem redundância (falha em um disco = perda total)
- Mínimo de 2 discos
- Dados duplicados em múltiplos discos
- Melhor performance de leitura
- Capacidade igual ao menor disco
- Redundância total (tolera falha de disco)
- Mínimo de 2 discos
- Dados + informação de paridade distribuídos
- Boa performance de leitura
- Capacidade = (n-1) discos
- Tolera falha de um disco
- Mínimo de 3 discos
- Dados + dupla paridade distribuídos
- Performance de leitura similar ao RAID 5
- Capacidade = (n-2) discos
- Tolera falha de até dois discos
- Mínimo de 4 discos
- Combinação de mirroring e striping
- Excelente performance e redundância
- Capacidade = total/2
- Tolera múltiplas falhas (dependendo do arranjo)
- Mínimo de 4 discos
RAID por Software
O Linux oferece suporte nativo a RAID por software através do mdadm:
sudo apt install mdadm
Criar um RAID 1:
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
Verificar o status do RAID:
sudo mdadm --detail /dev/md0
Monitorar o RAID em tempo real:
sudo watch cat /proc/mdstat
Depois de criar um RAID, não esqueça de salvar a configuração:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
E depois atualize o initramfs:
sudo update-initramfs -u
RAID por Hardware
Os controladores RAID por hardware têm suas próprias ferramentas específicas. A maioria oferece:
- Interface BIOS para configuração durante boot
- Utilitários específicos do fabricante para gerenciamento no sistema operacional
- Desempenho superior ao RAID por software
- Independência da CPU do sistema
Ferramentas comuns para controladores específicos:
- LSI/Broadcom:
megacli,storcli - Adaptec:
arcconf - Dell PERC:
perccli - HP Smart Array:
hpacucli,ssacli
Solução de Problemas
Mesmo com os melhores cuidados, problemas com discos podem ocorrer. Vamos ver como identificá-los e resolvê-los.
Recuperação de Dados
Quando um sistema de arquivos está danificado, existem várias ferramentas que podem ajudar:
Ferramenta poderosa para recuperação de partições perdidas ou corrompidas.
sudo apt install testdisk
Recupera arquivos mesmo quando a tabela de partições ou sistema de arquivos está severamente danificado.
sudo apt install testdisk
(O PhotoRec vem incluído no pacote TestDisk)
Recupera dados de discos com problemas físicos, criando imagens parciais.
sudo apt install gddrescue
Exemplo de uso:
sudo ddrescue -d -r3 /dev/sda1 /dev/sdb1 rescue.log
Identificação de Bad Blocks
Para verificar se um disco tem setores defeituosos (bad blocks):
sudo badblocks -v /dev/sda > bad-blocks.txt
Para teste não destrutivo de leitura/escrita (CUIDADO: faz backup dos dados primeiro!):
sudo badblocks -wsv /dev/sda
Incorporar lista de bad blocks ao sistema de arquivos ext4:
sudo e2fsck -l bad-blocks.txt /dev/sda1
Erros Comuns
| Problema | Possíveis Causas | Soluções |
|---|---|---|
| Disco em modo somente leitura | Sistema de arquivos corrompido, erro de hardware | Executar fsck, verificar logs do sistema |
| Partição não aparece | Tabela de partições corrompida | Usar TestDisk para recuperar a tabela |
| "No space left on device" | Disco cheio ou inodes esgotados | Verificar com df -h e df -i |
| I/O errors | Falha física no disco, cabos defeituosos | Verificar logs de sistema, SMART, substituir hardware |
| Impossível montar NTFS | Sistema não está limpo ou falta ntfs-3g | Instalar ntfs-3g, usar Windows para fazer chkdsk |
sudo apt install ntfs-3g
Verifique regularmente o estado de saúde de seus discos com smartctl:
sudo smartctl -H /dev/sda