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.

Por que este conhecimento é importante?

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
Atenção

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

MBR (Master Boot Record)
  • 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)
GPT (GUID Partition Table)
  • 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 ajuda
  • n: Criar uma nova partição
  • p: Mostrar a tabela de partições atual
  • d: Deletar uma partição
  • w: Salvar alterações e sair
  • q: 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
Importante

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.

Características do Ext4
  • 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.

Características do Btrfs
  • 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.

Características do XFS
  • 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.

Características do ZFS
  • 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.

Características do exFAT
  • 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.

Características do NTFS
  • 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.

Características do FAT32
  • 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:

Atenção

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
Dica

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:

udisks2

Sistema moderno para gerenciamento de dispositivos de armazenamento que habilita montagem automática em ambientes desktop.

autofs

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.

Vantagens do LVM
  • 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

RAID 0 (Striping)
  • 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
RAID 1 (Mirroring)
  • 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
RAID 5
  • 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
RAID 6
  • 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
RAID 10 (1+0)
  • 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
Importante

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:

TestDisk

Ferramenta poderosa para recuperação de partições perdidas ou corrompidas.

sudo apt install testdisk
PhotoRec

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)

ddrescue

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
Dica de Manutenção

Verifique regularmente o estado de saúde de seus discos com smartctl:

sudo smartctl -H /dev/sda