Você aumentou um disco ou agora tem um espaço não alocado após uma partição de dados do Ubuntu? Para que esse espaço se torne utilizável, duas operações distintas são necessárias: modificar a entrada da partição na tabela e, em seguida, expandir o sistema de arquivos ext4 que ela contém. fdisk cuida apenas da primeira; resize2fs entra em ação depois.
O título “sem perda de dados” não é uma garantia. A segurança dessa operação depende de um backup testado, da identificação correta do disco e da preservação exata do setor inicial da partição. Um erro de alvo ou um início modificado pode tornar os dados inacessíveis. Se um controle não corresponder ao que é descrito aqui, pare antes de qualquer gravação.
Verifique se a sua partição se encaixa no caso tratado
Este guia se refere a uma partição de dados Linux clássica, formatada em ext4, que não é raiz, não é LVM, não é criptografada e está fora de RAID de software mdraid. O espaço não alocado deve estar imediatamente após a partição a ser expandida. A partição não deve ser uma partição lógica situada dentro de uma partição estendida MBR. Por fim, ela deve estar disponível fora de montagem para a operação: não tente contornar uma recusa do núcleo porque está em uso.
Comece lendo a organização de dispositivos e sistemas de arquivos:
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
Identifique o disco pai, a entrada do tipo part que lhe interessa, seu formato e seu ponto de montagem. Uma camada intermediária, um volume lógico LVM, criptografia ou RAID significa que você não está agindo diretamente em uma partição ext4 clássica: pare e siga o procedimento dessa camada. Para distinguir uma partição de dados de uma partição raiz montada, verifique também as montagens:
findmnt
Nos exemplos deste artigo, /dev/sdX refere-se ao disco inteiro, a ser substituído pelo nome realmente identificado, por exemplo, um dispositivo de seu sistema. /dev/sdXN refere-se à partição desse disco, com seu número real. Estes são placeholders, não caminhos a serem copiados como estão. Não confunda o disco pai e a partição: fdisk receberá o primeiro, enquanto resize2fs visará o segundo.
Examine a tabela e os limites do disco identificado:
sudo fdisk -l /dev/sdX
Substitua /dev/sdX pelo disco confirmado na etapa anterior. Identifique o tipo de tabela (gpt ou dos, ou seja, MBR), o número da partição alvo, seu setor de início (“Start”), seu fim (“End”) e seu tipo. O espaço livre deve começar imediatamente após o fim da partição e se estender sem que outra partição interponha. Se o espaço estiver antes da partição, se estiver ocupado, se o disco já estiver totalmente alocado ou se você não puder determinar esses limites com certeza, não use este método. Se a identificação do disco permanecer incerta, retome primeiro as verificações apresentadas neste guia para preparar uma partição sem apagar o disco errado. Se for o próprio disco que deve ser aumentado, essa operação preliminar deve ser feita no ambiente que o fornece; não está detalhada aqui.
Pare também se a alvo for a raiz montada, se o sistema de arquivos não for ext4, ou se houver uma partição lógica/estendida MBR, LVM, LUKS, mdraid, Btrfs ou XFS. Estes casos pertencem a outra camada ou outro procedimento. Nunca mova o início da partição para recuperar espaço localizado antes dela.
Fazer um backup dos dados e anotar os parâmetros
Antes de tocar na tabela, faça um backup completo dos dados em um suporte distinto e, em seguida, verifique-o com uma leitura ou restauração real. Um arquivo de backup da tabela não substitui esse backup dos arquivos. Preveja uma janela de manutenção e a possibilidade de um reinício controlado se o núcleo não puder reler a tabela imediatamente.
Você pode registrar uma cópia da tabela em um local que seu shell permita a escrita:
sudo sfdisk -d /dev/sdX > backup-tabela-sdX.sfdisk
Substitua /dev/sdX e o nome backup-tabela-sdX.sfdisk pelos do disco confirmado. Verifique se o arquivo obtido está presente, legível e não vazio, que descreve o disco correto e, em seguida, mantenha uma cópia fora do disco manipulado. A redireção > é executada pelo shell chamador: sudo não concede automaticamente direitos de escrita na pasta de destino. Não considere esse dump como um modo improvisado de restauração.
Anote fora da sua sessão os parâmetros exatos da partição alvo: número, setor Start, setor End, tipo e tabela GPT ou MBR. Compare-os com a saída do comando anterior e com a visualização interativa descrita mais abaixo. O setor de início é o referencial crítico: ele deve permanecer idêntico, sem deslocamento, após a recriação da entrada. Verifique também se a extensão projetada não cobrirá nenhuma outra partição.
Se seu sistema usar identificadores de partição ou sistema de arquivos, anote-os antes da operação:
blkid
blkid exibe, entre outras coisas, os valores UUID do sistema de arquivos e, dependendo do dispositivo, PARTUUID da partição. Em seguida, compare esses valores com as referências usadas pelas montagens ou durante a inicialização. Excluir e recriar uma entrada pode modificar seu PARTUUID; não assuma que ele permanecerá estável. Se você não souber quais referências estão em uso ou como tratar uma diferença, pare antes de escrever. O mesmo se aplica se o backup dos dados não foi testado, se o dump da tabela estiver ausente ou incoerente, ou se o número, o tipo ou o início não forem certos.
Recriar a entrada no fdisk sem mover seu início
A operação no fdisk refere-se à tabela de partições, não ao conteúdo ext4. A documentação do fdisk descreve a manipulação das tabelas GPT e MBR, assim como as informações da partição a serem verificadas. Abra a ferramenta no disco pai já identificado:
sudo fdisk /dev/sdX
Substitua o placeholder pelo disco inteiro, não pelo nome da partição. Na interface interativa, avance apenas após compreender cada exibição:
- Digite
ppara exibir a tabela. Identifique novamente a partição alvo, seu número, seu tipo e seu setor de início. Eles devem corresponder às suas notas. - A exclusão da entrada com
ddiz respeito apenas à partição alvo. Se a ferramenta pedir um número, escolha o que você verificou; não adivinhe e não exclua nenhuma outra entrada. - Com
n, crie a entrada de substituição. Mantenha o mesmo número e insira exatamente o mesmo primeiro setor que aquele anotado. Escolha um fim situado mais longe no espaço livre contíguo, sem ultrapassar o disco ou cobrir outra partição. Considere a proposta de alinhamento dofdisk; se isso implicar um início diferente ou se você não compreender o aviso, não prossiga. - Verifique se o tipo de partição original é mantido. Exiba novamente a tabela com
pe compare com suas notas: mesmo número, mesmo tipo, mesmoStart, novo fim esperado e todas as outras entradas intactas.
Não valide a gravação com w a menos que cada valor corresponda e que você compreenda as mensagens exibidas. Caso contrário, saia sem gravar e retome o diagnóstico. Se fdisk indicar uma assinatura ext4 e sugerir excluí-la, recuse: não exclua essa assinatura. Um aviso, um diálogo inesperado ou uma incoerência na numeração é motivo suficiente para parar, não um convite para tentar respostas aleatórias.
Após a gravação, a tabela descreve uma partição maior, mas o ext4 ainda mantém seu tamanho original. A segunda operação será necessária para que o sistema de arquivos utilize o espaço adicionado.
Pedir ao núcleo para reler a tabela
Solicite ao núcleo que releia a tabela do disco em questão:
sudo partprobe /dev/sdX
Use sempre o disco pai confirmado. Um retorno sem erro de partprobe não é suficiente para provar que o novo tamanho é efetivamente reconhecido. Releia a tabela e verifique o tamanho apresentado pelo núcleo:
sudo fdisk -l /dev/sdX
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
O setor de início deve permanecer inalterado, o novo fim deve permanecer dentro dos limites previstos e lsblk deve mostrar o novo tamanho na partição alvo, sem anomalias nas outras entradas. Se o núcleo não recarregar a tabela, não execute resize2fs. Adie a operação; se seu ambiente permitir, organize um reinício em uma janela controlada e, em seguida, verifique novamente a tabela e o tamanho reconhecido antes de qualquer extensão do ext4. Se a re leitura falhar para uma raiz montada, pare: esse caso não se enquadra neste tutorial.
Expandir ext4 e verificar o resultado
Quando o núcleo reconhece bem a partição expandida e seu setor de início é idêntico ao valor anotado, você pode expandir o sistema de arquivos ext4:
sudo resize2fs /dev/sdXN
Substitua /dev/sdXN pelo nome exato da partição ext4, com seu número real — não pelo disco pai. resize2fs expande ext2/3/4 dentro do contêiner existente; não modifica a tabela de partições. Sua ordem de execução vem, portanto, após o aumento e a bem-sucedida rel leitura dessa tabela, como indica a documentação do resize2fs. Um início de partição recriado em um setor diferente pode expor o sistema de arquivos a uma perda total: não use este comando se o início não corresponder exatamente.
Aguarde o término do comando e verifique se ele não reporta erro algum. Em seguida, controle os sistemas de arquivos e os identificadores:
lsblk -f
blkid
A partição deve continuar aparecendo como ext4, com os identificadores esperados ou com qualquer diferença de UUID/PARTUUID compreendida e tratada. Se referências de PARTUUID mudaram, não coloque o sistema de volta em funcionamento antes de ter verificado e corrigido, conforme seu ambiente, as referências de montagem ou inicialização envolvidas. Não presuma que uma referência permaneça válida após a recriação da entrada.
Para controlar o espaço utilizável em um sistema de arquivos montado, use:
df -hT
Após remontar segundo o procedimento específico do seu ambiente, a linha da partição em questão deve indicar o tipo ext4 e uma capacidade utilizável aumentada. Se a partição não estiver montada, sua ausência em df é normal e não indica uma falha. Tenha em mente a distinção: uma tabela maior não significa que o ext4 também o é até que resize2fs tenha sido bem-sucedido.
Erros e situações que exigem a parada
Não vá adiante se não conseguir identificar o disco, se o primeiro setor for desconhecido ou diferente, se um backup não foi verificado, se o espaço não for contíguo após a partição ou se outra partição puder ser coberta. Pare também em caso de aviso de assinatura ext4, de tipo que muda, de diálogo fdisk incompreendido ou de falha de leitura pelo núcleo.
Um erro de resize2fs, um tamanho que não corresponde ao da tabela, ou um identificador UUID/PARTUUID inesperado também exigem a suspensão da reativação do sistema e a verificação da situação. Não prossiga com a formatação, uma reparação improvisadas ou uma nova modificação de tabela. Se você estiver fora do caso ext4 simples descrito aqui, use a documentação correspondente à camada real em vez de adaptar esta sequência.
A reter
Para esta partição de dados ext4 apenas, proceda nesta ordem: backup testado, identificação e anotação dos parâmetros, extensão da entrada mantendo o mesmo setor de início, rel leitura confirmada pelo núcleo e, por fim, expansão do ext4 com resize2fs. A menor incerteza sobre o disco, setores, identificadores ou resultado esperado é razão suficiente para não gravar a tabela.