Tutorial de Ubuntu 26.04 / Prepare um disco adicional e monte pelo fstab
Para montar um disco automaticamente, associe o UUID real do sistema de arquivos ao ponto de montagem. Ver arquivos no diretório não prova que as gravações chegam ao disco certo: teste também a reinicialização e a ausência do dispositivo.
Identifique o dispositivo antes de formatar
lsblk -o NAME,SIZE,TYPE,FSTYPE,LABEL,UUID,MOUNTPOINTS
findmnt -rno SOURCE,TARGET,FSTYPE,OPTIONS
O exercício de montagem começa com um disco de prática separado que já tenha sistema de arquivos. Compare capacidade, rótulo e UUID e exclua os dispositivos de raiz, inicialização e backup. Se só houver um disco novo e vazio, prepare-o como abaixo. Não formate um disco com dados que precisem ser recuperados.
Prepare um disco novo e vazio com ext4
Conectar um VDI novo e preparar ext4 são operações distintas. Para criar um disco de prática vazio de 8 GiB no VirtualBox, desligue a VM e use Configurações → Armazenamento → adicionar disco rígido no controlador para criar um disco virtual. Não selecione um disco de dados existente nem um disco físico do host.
Use o script somente no console de uma VM de laboratório isolada e apenas com um VDI novo cuja identidade você confirmou no hipervisor. São necessários lsblk, wipefs e fdisk do util-linux, udevadm e mkfs.ext4 do e2fsprogs. Confira os comandos com command -v e verifique as fontes dos pacotes antes de instalar o que faltar. Compare capacidade, modelo e número de série no hipervisor com o caminho em /dev/disk/by-id; interrompa se houver dúvida.
No fdisk, use g para GPT e n para a partição. Os valores padrão de número e limites podem ser usados; confira o destino e os limites com p antes de gravar com w. Se estiver errado, use q antes de gravar. O script verifica assinaturas reconhecidas, partições e montagens visíveis, mas essas verificações não provam que um dispositivo está vazio nem identificam todos os usos ou alterações concorrentes. A confirmação independente do VDI é indispensável.
Se o disco já tiver sistema de arquivos e dados a preservar, pule a inicialização e verifique o dispositivo e o UUID na etapa de montagem. Salve o script completo como ~/prepare-empty-lab-disk.sh, usando um nome ainda não ocupado, e execute bash ~/prepare-empty-lab-disk.sh /dev/disk/by-id/DISCO_NOVO_VERIFICADO. Ele solicita o caminho real antes do particionamento e o da partição antes da formatação. Registre ext4, o rótulo lab-data e o UUID ao terminar. Particionar ou formatar o disco errado pode destruir dados; restaurar a configuração não os recupera.
set -euo pipefail
if [ "$#" -ne 1 ]; then
printf 'Usage: bash prepare-empty-lab-disk.sh /dev/disk/by-id/ACTUAL_NEW_DISK\n' >&2; exit 2
fi
case "$1" in /dev/disk/by-id/*) ;; *) printf 'Use the verified by-id path.\n' >&2; exit 2 ;; esac
disk=$(readlink -e -- "$1")
test -b "$disk"
if [ "$(lsblk -dnro TYPE "$disk")" != disk ] || [ "$(lsblk -dnro RO "$disk")" != 0 ]; then
printf 'Not a writable whole disk.\n' >&2; exit 1
fi
device_rows=$(lsblk -nr -o NAME "$disk")
if [ "$(printf '%s\n' "$device_rows" | wc -l)" -ne 1 ] || [ -z "$device_rows" ]; then
printf 'Partitions or dependent devices already exist; stop.\n' >&2; exit 1
fi
mountpoints=$(lsblk -nr -o MOUNTPOINTS "$disk")
if printf '%s\n' "$mountpoints" | grep -q '[^[:space:]]'; then
printf 'A mount is present; stop.\n' >&2; exit 1
fi
signatures=$(sudo wipefs --no-act --noheadings --output TYPE "$disk")
if [ -n "$signatures" ]; then
printf 'Existing signatures: %s; stop.\n' "$signatures" >&2; exit 1
fi
lsblk -o NAME,SIZE,TYPE,MODEL,SERIAL,FSTYPE,MOUNTPOINTS "$disk"
read -r -p "Type the verified empty disk path ($disk): " confirmed
if [ "$confirmed" != "$disk" ]; then exit 1; fi
sudo fdisk "$disk"
sudo udevadm settle
device_rows=$(lsblk -nrpo NAME,TYPE "$disk")
mapfile -t partitions < <(printf '%s\n' "$device_rows" | awk '$2 == "part" {print $1}')
if [ "${#partitions[@]}" -ne 1 ]; then
printf 'Expected one newly created partition; inspect before formatting.\n' >&2; exit 1
fi
partition=${partitions[0]}
mountpoints=$(lsblk -nr -o MOUNTPOINTS "$partition")
if printf '%s\n' "$mountpoints" | grep -q '[^[:space:]]'; then
printf 'The partition is mounted; stop.\n' >&2; exit 1
fi
signatures=$(sudo wipefs --no-act --noheadings --output TYPE "$partition")
if [ -n "$signatures" ]; then printf 'Partition already has a signature; stop.\n' >&2; exit 1; fi
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS "$disk"
read -r -p "Type the new partition to format as ext4 ($partition): " confirmed
if [ "$confirmed" != "$partition" ]; then exit 1; fi
sudo mkfs.ext4 -L lab-data "$partition"
sudo blkid "$partition"
lsblk -f "$disk"
Se um disco ext4 de prática separado já estiver pronto, pule a inicialização e comece pela identificação do UUID. Não grave no mesmo disco virtual a partir de várias VMs. Use o UUID da partição verificada nas próximas etapas.
Consulte os manuais de fdisk para Ubuntu 26.04 e de mke2fs sobre particionamento e criação de sistemas de arquivos.
Entenda montagens e dependências de serviços no fstab
Em um servidor, associe UUID, ponto de montagem, sistema de arquivos e opções reais em /etc/fstab. Criar um diretório ou montar uma vez não garante a montagem após reiniciar; verifique backup, configuração e reinicialização separadamente. Para dados de serviços, planeje dependências que impeçam gravações se a montagem necessária falhar.
A política de falha para dados essenciais difere da usada em armazenamento removível opcional. nofail pode permitir a inicialização, mas não impede uma aplicação de gravar no diretório local vazio quando o disco estiver ausente.
Prepare o backup e o ponto de montagem
(
set -eu
backup=$(sudo mktemp /root/fstab-backup.XXXXXX)
sudo cp -a /etc/fstab "$backup"
printf 'Backup: %s\n' "$backup"
sudo mkdir -p /srv/lab-data
)
Se o ponto já estiver em uso ou contiver arquivos, preserve-os e escolha outro local vazio. A montagem pode ocultar arquivos locais existentes sob o diretório. Criar o diretório não monta o disco.
Adicione uma entrada com o UUID real
Abra sudoedit /etc/fstab, mantenha as entradas existentes e acrescente uma linha. O exemplo supõe ext4 em um disco de prática: substitua o UUID pelo valor confirmado e não use o tipo ext4 para outro sistema de arquivos.
UUID=REPLACE_WITH_VERIFIED_UUID /srv/lab-data ext4 defaults,nofail,x-systemd.device-timeout=10s 0 2
O dispositivo é opcional neste exemplo de inicialização. Para dados essenciais, defina política e dependências que impeçam o início do serviço quando a montagem falhar. Caminhos com espaços exigem escapes próprios do fstab.
(
set -eu
sudo findmnt --verify --verbose
sudo systemctl daemon-reload
sudo mount /srv/lab-data
findmnt --mountpoint /srv/lab-data
)
Resolva erros de verificação antes de montar somente o destino pretendido. Escolher um ponto limita o impacto em comparação com montar todas as entradas. Compare a origem e o sistema de arquivos mostrados pelo findmnt com o UUID verificado.
Confirme a montagem antes de gravar
expected_uuid=REPLACE_WITH_VERIFIED_UUID
actual_uuid=$(findmnt -rn --mountpoint /srv/lab-data -o UUID || true)
if [ "$actual_uuid" != "$expected_uuid" ]; then
printf 'Expected disk is not mounted; stop the write job.\n' >&2
exit 1
fi
printf 'Verified the expected mounted filesystem.\n'
Salve a verificação como script Bash separado, por exemplo ~/check-lab-mount.sh, substitua o UUID e execute bash ~/check-lab-mount.sh. Em falha, o script retorna 1; as gravações posteriores devem depender do sucesso. UUID duplicado em clones e alterações ou desmontagens entre a verificação e a gravação podem invalidar essa checagem: mantenha o dispositivo controlado e use uma dependência adequada para o serviço. Grave um arquivo de teste e volte a lê-lo após reiniciar. Teste a ausência do dispositivo somente após desligar com segurança ou concluir as operações de armazenamento.
Se houver falha, restaure somente a entrada alterada do fstab pelo console e valide novamente. Confirme que trabalhos de backup ou serviços param em vez de gravar localmente quando o disco esperado estiver ausente.
A referência systemd.mount explica opções do fstab e dependências de serviços.




