Montar disco no Linux: lsblk, particionamento, mkfs, mount e fstab
Montar um disco no Linux é conectar o sistema de arquivos de uma partição a um diretório da árvore, por exemplo /data. O disco novo é localizado com lsblk, particionado com fdisk ou parted, formatado com mkfs.ext4, montado com mount /dev/sdb1 /data, e para que a montagem sobreviva a um reinício, adiciona-se uma linha com o UUID da partição ao /etc/fstab, testada com mount -a.
No Linux não existem letras de unidade: todos os dispositivos de armazenamento são integrados a uma única árvore de diretórios que começa em /. Montar um disco no Linux é a operação que "pendura" o sistema de arquivos de uma partição em um diretório vazio, chamado ponto de montagem. O caminho de um disco novo é sempre o mesmo: localizar o dispositivo (lsblk), particionar (fdisk ou parted), criar o sistema de arquivos (mkfs), montar (mount) e fixar a montagem no /etc/fstab. Vamos ver cada passo e também como descobrir para onde foi o espaço, usando df e du.
Como os discos e as partições funcionam no Linux
O kernel representa cada disco por um arquivo de dispositivo em /dev. Os nomes dependem do tipo de conexão:
| Nome | O que é | Partições |
|---|---|---|
/dev/sda, /dev/sdb | discos SATA/SAS/USB e muitos discos virtuais | /dev/sda1, /dev/sda2 |
/dev/vda | discos virtio em máquinas virtuais KVM | /dev/vda1 |
/dev/nvme0n1 | SSD NVMe | /dev/nvme0n1p1 |
/dev/mapper/... | volumes lógicos do LVM, volumes criptografados | — |
O disco é dividido em partições, cada partição recebe um sistema de arquivos (ext4, xfs, btrfs), e é esse sistema que se monta em um diretório. Enquanto a partição não estiver montada, os arquivos nela ficam inacessíveis, mesmo que o disco esteja fisicamente conectado.
Como ver os discos: lsblk e blkid
O primeiro comando ao trabalhar com discos é o lsblk. Ele mostra a árvore de dispositivos, os tamanhos e os pontos de montagem:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part /
sdb 8:16 0 100G 0 disk
Aqui se vê que o sdb é um disco novo de 100 GB, sem partições e sem ponto de montagem. Variantes úteis:
lsblk -f— tipo do sistema de arquivos, rótulo e UUID de cada partição.lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,MODEL— apenas as colunas desejadas.sudo blkid— UUID e tipo de sistema de arquivos de todas as partições.sudo fdisk -l— tabelas de partições de todos os discos, com os setores.
Se você adicionou o disco à máquina virtual com ela em execução e o lsblk não o mostra, peça ao kernel para reescanear o barramento: echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan.
Particionamento: fdisk e parted
Antes de particionar, confira mais uma vez se escolheu o dispositivo certo: gravar uma tabela de partições no disco do sistema destrói os dados. Use como referência o tamanho e a ausência de pontos de montagem na saída do lsblk.
GPT ou MBR
Para discos novos, use GPT: ela suporta discos maiores que 2 TB e até 128 partições. O MBR (dos) só se justifica em sistemas antigos com inicialização pela BIOS, quando o carregador de boot exige.
Particionamento com fdisk
O fdisk atual trabalha com GPT e MBR. O uso é interativo:
$ sudo fdisk /dev/sdb
Command (m for help): g # criar uma tabela GPT vazia
Command (m for help): n # nova partição
Partition number (1-128, default 1): Enter
First sector: Enter
Last sector, +/-sectors or +/-size{K,M,G,T,P}: Enter # disco inteiro
Command (m for help): w # gravar as alterações e sair
Enquanto você não pressionar w, nada é gravado no disco; use q para sair sem alterações.
Particionamento em uma linha com parted
Em scripts, o parted é mais prático, pois funciona sem diálogo:
$ sudo parted -s /dev/sdb mklabel gpt
$ sudo parted -s /dev/sdb mkpart primary ext4 0% 100%
$ lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part
Os limites em porcentagem garantem o alinhamento correto da partição. Se a nova partição não aparecer, execute sudo partprobe /dev/sdb para que o kernel releia a tabela.
Criar o sistema de arquivos: mkfs
A partição é apenas um intervalo de blocos. Para armazenar arquivos, é preciso criar um sistema de arquivos nela:
$ sudo mkfs.ext4 -L data /dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 26214144 4k blocks and 6553600 inodes
...
Writing superblocks and filesystem accounting information: done
A opção -L define um rótulo, pelo qual a partição pode ser identificada depois com facilidade. Como escolher:
| Sistema | Comando | Quando usar |
|---|---|---|
| ext4 | mkfs.ext4 | escolha universal padrão; permite reduzir o tamanho |
| XFS | mkfs.xfs | arquivos e volumes grandes, padrão no RHEL; só cresce |
| Btrfs | mkfs.btrfs | snapshots, compressão, subvolumes |
| vfat/exFAT | mkfs.vfat, mkfs.exfat | pendrives para trocar arquivos com Windows e macOS |
O mkfs apaga tudo o que estava na partição. Em uma partição vazia, o comando não pede confirmação, por isso revise o nome do dispositivo antes.
Como montar um disco no Linux com o comando mount
Crie um diretório — o ponto de montagem — e conecte a partição a ele:
$ sudo mkdir -p /data
$ sudo mount /dev/sdb1 /data
$ df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 98G 24K 93G 1% /data
O mount detecta o tipo do sistema de arquivos sozinho, mas você pode informá-lo com mount -t xfs. Se o diretório /data já tinha arquivos, eles não são apagados após a montagem: apenas ficam ocultos sob o novo sistema de arquivos e reaparecem quando ele for desmontado.
Opções de montagem
As opções são passadas com -o, separadas por vírgula:
ro/rw— somente leitura ou leitura e gravação.noatime— não atualizar a data de último acesso a cada leitura, reduzindo gravações desnecessárias.noexec— proibir a execução de programas dessa partição (útil para/tmpe pastas de downloads).nosuid,nodev— ignorar os bits SUID e os arquivos de dispositivo.remount— alterar as opções sem desmontar:sudo mount -o remount,ro /data.
Para ver o que está montado e com quais opções, use o findmnt: findmnt /data ou findmnt -t ext4.
Permissões no disco montado
A raiz de um ext4 novo pertence ao root, então um usuário comum não consegue gravar nela. Depois de montar, passe o diretório para o usuário certo: sudo chown alice:alice /data. Em vfat e exFAT não existem permissões Unix: o dono é definido com as opções uid=, gid= e umask= na montagem.
Como desmontar um disco: umount e o erro target is busy
Para desconectar, use o umount (sem o "n") com o dispositivo ou o diretório:
$ sudo umount /data
umount: /data: target is busy.
O erro significa que algum processo está usando arquivos desse sistema de arquivos, ou tem nele o seu diretório atual — muitas vezes o próprio terminal, depois de um cd /data. Para descobrir o responsável, use:
$ sudo lsof +f -- /data
$ sudo fuser -vm /data
Encerre o processo ou saia do diretório e tente de novo. Como último recurso, use umount -l (lazy): o sistema de arquivos é removido da árvore imediatamente, e o espaço é liberado quando os processos fecharem os arquivos.
Montagem automática na inicialização: /etc/fstab
O comando mount vale apenas até a próxima reinicialização. Para que o disco seja conectado automaticamente, adicione uma linha ao /etc/fstab. Informe a partição pelo UUID, e não pelo nome /dev/sdb1: os nomes podem trocar de ordem quando discos são adicionados, enquanto o UUID é permanente.
$ sudo blkid /dev/sdb1
/dev/sdb1: LABEL="data" UUID="3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77" TYPE="ext4" PARTUUID="..."
A linha tem seis campos:
# <dispositivo> <ponto> <tipo> <opções> <dump> <fsck>
UUID=3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77 /data ext4 defaults,noatime 0 2
| Campo | Significado |
|---|---|
| dispositivo | UUID=..., LABEL=... ou um caminho |
| ponto | diretório onde montar (precisa existir) |
| tipo | ext4, xfs, swap, nfs etc. |
| opções | defaults mais as necessárias, como noatime ou nofail |
| dump | quase sempre 0 |
| fsck | ordem de verificação: 1 para a raiz, 2 para as demais, 0 para não verificar |
Confira o fstab antes de reiniciar
Um erro no /etc/fstab pode deixar o servidor no modo de emergência durante o boot, e em uma máquina na nuvem sem console isso é bastante incômodo. Logo após editar, execute:
$ sudo findmnt --verify
$ sudo systemctl daemon-reload
$ sudo mount -a
$ findmnt /data
O mount -a monta tudo o que está no fstab e ainda não está montado, e mostra o erro imediatamente. Para discos removíveis ou de rede, acrescente a opção nofail: se o dispositivo não existir, o boot continua sem ele. No systemd, cada linha do fstab vira uma unit .mount — por exemplo, data.mount, cujo estado aparece em systemctl status data.mount.
Como ver o espaço livre: df
O df mostra a ocupação dos sistemas de arquivos montados:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 39G 37G 1.1G 98% /
/dev/sda1 974M 180M 727M 20% /boot
/dev/sdb1 98G 24K 93G 1% /data
-h— tamanhos em unidades legíveis.-T— acrescenta uma coluna com o tipo do sistema de arquivos.-i— mostra os inodes: o disco pode "acabar" mesmo com gigabytes livres, se houver arquivos pequenos demais em excesso.-x tmpfs -x devtmpfs— oculta os sistemas de arquivos virtuais.
Por que Size não é igual a Used + Avail: o ext4 reserva cerca de 5% do espaço para o root, para que o sistema continue funcionando mesmo com o disco cheio. Em uma partição de dados, essa reserva pode ser reduzida: sudo tune2fs -m 1 /dev/sdb1.
Para onde foi o espaço: du
O df diz que o disco está cheio, mas não diz o que o ocupa. Para isso existe o du, que soma o tamanho dos arquivos dos diretórios:
$ sudo du -sh /var/log
4.2G /var/log
$ sudo du -xh --max-depth=1 / 2>/dev/null | sort -rh | head
37G /
21G /var
9.8G /home
3.1G /usr
-s— apenas o total do diretório;-a— cada arquivo separadamente.--max-depth=1(ou-d 1) — um nível de profundidade; desça mais no maior diretório.-x— não atravessar para outros sistemas de arquivos, senão o total incluirá/data,/proce discos de rede.sort -rh— ordena pelos tamanhos legíveis, com o maior no topo.
Para localizar arquivos grandes individualmente, o find é mais eficiente: sudo find / -xdev -type f -size +1G -exec ls -lh {} +.
O df mostra o disco cheio, mas o du não
Situação clássica: você apagou um log enorme, mas o espaço não voltou. O arquivo foi removido do diretório, porém um processo (por exemplo, o servidor web) ainda o mantém aberto, e os blocos não são liberados. Para encontrar esses arquivos:
$ sudo lsof +L1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
nginx 812 www 5w REG 8,2 8589934592 0 13054 /var/log/nginx/access.log (deleted)
Reinicie o processo ou peça para ele reabrir os logs, e o espaço volta. Para o futuro, esvazie um log ativo sem apagá-lo: sudo truncate -s 0 /var/log/nginx/access.log. A segunda causa da divergência são arquivos escondidos sob um ponto de montagem: eles ocupam espaço na partição raiz, mas o du não os enxerga enquanto há um sistema de arquivos montado por cima.
Erros comuns e como corrigi-los
| Mensagem | Causa | O que fazer |
|---|---|---|
mount point /data does not exist | o diretório não existe | sudo mkdir -p /data |
wrong fs type, bad option, bad superblock | a partição não tem sistema de arquivos, o tipo está errado ou falta o driver | verificar com lsblk -f; para exFAT/NTFS instalar exfatprogs, ntfs-3g |
only root can do that | montagem sem sudo | executar com sudo ou adicionar a opção user no fstab |
target is busy | o diretório está em uso por um processo | lsof/fuser, sair do diretório |
| boot em emergency mode | erro no fstab ou disco ausente | entrar como root, corrigir o fstab, acrescentar nofail |
Passo a passo: um disco novo para dados
lsblk— encontrar o disco novo, por exemplo/dev/sdb.sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%— particionar.sudo mkfs.ext4 -L data /dev/sdb1— criar o sistema de arquivos.sudo mkdir -p /data— criar o ponto de montagem.sudo blkid /dev/sdb1— obter o UUID e acrescentar a linha no/etc/fstab.sudo mount -a && df -h /data— montar e verificar.sudo chown usuário: /data— definir as permissões.
Se for preciso aumentar o espaço sem parar o serviço, ou juntar vários discos, use LVM em vez de uma partição comum: o disco vira um volume físico, do qual são criados volumes lógicos que crescem com lvextend -r.
Resumo
Montar um disco no Linux segue a cadeia lsblk → particionamento → mkfs → mount → /etc/fstab. Referencie as partições por UUID, valide o fstab com mount -a antes de reiniciar e use nofail nos discos opcionais. Quando o espaço acaba, df -h mostra qual partição está cheia, e du -xh --max-depth=1 | sort -rh e lsof +L1 mostram o que a está ocupando. Discos, partições, swap, LVM e RAID são explicados na prática no curso de Linux.
Perguntas frequentes
Como montar um pendrive no Linux?
Localize-o com lsblk (normalmente /dev/sdb1), crie um diretório e execute sudo mount /dev/sdb1 /mnt/usb. Nos ambientes gráficos, os pendrives costumam ser montados automaticamente em /media/nome_do_usuario ou /run/media.
Como montar uma imagem ISO?
Com sudo mount -o loop,ro imagem.iso /mnt/iso: a opção loop conecta o arquivo como se fosse um dispositivo de bloco. Para desmontar, use o umount comum.
Como conectar uma pasta de rede pelo fstab?
Para NFS, a linha fica assim: servidor:/export /mnt/nfs nfs defaults,_netdev,nofail 0 0; para SMB, //servidor/compartilhamento /mnt/smb cifs credentials=/root/.smbcred,_netdev,nofail 0 0. A opção _netdev aguarda a rede ficar disponível.
Qual é a diferença entre UUID e PARTUUID?
O UUID pertence ao sistema de arquivos e muda quando se executa um novo mkfs; o PARTUUID pertence à partição na tabela GPT e permanece ao reformatar. No fstab, normalmente se usa o UUID.
Como verificar um sistema de arquivos em busca de erros?
Desmonte a partição e execute sudo fsck -f /dev/sdb1 para ext4, ou sudo xfs_repair /dev/sdb1 para XFS. Não é seguro verificar um sistema de arquivos montado e com gravação em andamento, pois isso pode danificar os dados.
Este tema é abordado em profundidade, com prática, no curso “Linux: с нуля до уверенного администрирования”.
Ir para o curso