Tutorial

Montar disco no Linux: lsblk, particionamento, mkfs, mount e fstab

Atualizado: · Skillaria.Top

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:

NomeO que éPartições
/dev/sda, /dev/sdbdiscos SATA/SAS/USB e muitos discos virtuais/dev/sda1, /dev/sda2
/dev/vdadiscos virtio em máquinas virtuais KVM/dev/vda1
/dev/nvme0n1SSD 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:

SistemaComandoQuando usar
ext4mkfs.ext4escolha universal padrão; permite reduzir o tamanho
XFSmkfs.xfsarquivos e volumes grandes, padrão no RHEL; só cresce
Btrfsmkfs.btrfssnapshots, compressão, subvolumes
vfat/exFATmkfs.vfat, mkfs.exfatpendrives 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 /tmp e 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
CampoSignificado
dispositivoUUID=..., LABEL=... ou um caminho
pontodiretório onde montar (precisa existir)
tipoext4, xfs, swap, nfs etc.
opçõesdefaults mais as necessárias, como noatime ou nofail
dumpquase sempre 0
fsckordem 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, /proc e 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

MensagemCausaO que fazer
mount point /data does not existo diretório não existesudo mkdir -p /data
wrong fs type, bad option, bad superblocka partição não tem sistema de arquivos, o tipo está errado ou falta o driververificar com lsblk -f; para exFAT/NTFS instalar exfatprogs, ntfs-3g
only root can do thatmontagem sem sudoexecutar com sudo ou adicionar a opção user no fstab
target is busyo diretório está em uso por um processolsof/fuser, sair do diretório
boot em emergency modeerro no fstab ou disco ausenteentrar como root, corrigir o fstab, acrescentar nofail

Passo a passo: um disco novo para dados

  1. lsblk — encontrar o disco novo, por exemplo /dev/sdb.
  2. sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100% — particionar.
  3. sudo mkfs.ext4 -L data /dev/sdb1 — criar o sistema de arquivos.
  4. sudo mkdir -p /data — criar o ponto de montagem.
  5. sudo blkid /dev/sdb1 — obter o UUID e acrescentar a linha no /etc/fstab.
  6. sudo mount -a && df -h /data — montar e verificar.
  7. 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.

Aprenda este tema em vídeo

Este tema é abordado em profundidade, com prática, no curso “Linux: с нуля до уверенного администрирования”.

Ir para o curso