Salvando uma partição no Debian quando algo deu errado

Boa tarde querida

Vou lhe dizer uma rápida que poderia levar à perda completa de dados na máquina virtual, mas a saída ainda foi encontrada com: parted

Dados de origem:
SO: Debiab 9 64bit
FS: ext4 sem LVM
Objetivo: expandir o FS em uma máquina virtual de 14 GB para 60 GB

Em princípio, para o administrador, essa tarefa é trivial, mas às vezes as estrelas podem convergir para que tudo não corra como gostaríamos. Sob o corte, tentarei restaurar o curso dos eventos, o que levou ao fato de o primeiro administrador quase não receber VM em funcionamento.


Dia 1:
O administrador recebeu uma tarefa completamente simples - você precisa expandir o tamanho do FS na VM. Anteriormente, já havia sido feito um trabalho para expandir a imagem do disco para esta VM e, portanto, o problema permaneceu pequeno - expanda o tamanho do FS na VM.

Estrutura FS na VM:
/ boot - 56Mb
/ - todo o espaço restante - ext4

Como a máquina virtual é criada a partir de um modelo, não há LVM, o que obviamente simplificaria todo o procedimento.

E assim o administrador na quinta-feira à noite começa a executar a tarefa. Seu primeiro passo foi inicializar a VM usando uma imagem ISO - SystemRescue. Depois de carregar a VM com êxito com a ajuda da iso-imagem, o administrador começa a trabalhar e com a ajuda do fdisk exclui a seção / (/ dev / vda2) , que está correta, pois precisa ser expandida. Após excluir a partição (/ dev / vda2), o administrador cria uma nova partição - / dev / vda2 e o primeiro erro ocorre - o administrador cria uma partição de extensão primeiro e só depois cria a primária e depois de comparar a nova marcação, sai do fdisk e tenta montar a partição:

imagem

Como o layout do disco foi alterado e o início e o final da partição / dev / vda5 foram alterados, apareceu um erro esperado indicando que nenhum superbloco foi encontrado ou um erro. O erro é bastante sério e, se você abordar a solução incorretamente, poderá perder arquivos ou vencê-los. É claro que você pode reverter, mas o problema também está no fato de o administrador não ter capturado uma captura de tela do layout de disco anterior antes de seu trabalho.

Como a partição não pode ser montada ... o administrador tenta corrigir a situação excluindo as partições que ele criou e criando um novo primário, mas como isso não significa o final do lote com dados, todas as suas tentativas levam ao mesmo resultado:
Superbloco inválido .

Após várias tentativas de restaurar a partição por conta própria, o primeiro administrador solicita ajuda do segundo administrador.

Primeiro, o segundo administrador sai da VM e copia a imagem de disco atual chamada vm_bad_disk. A seguir, a VM sai da mesma versão do sistema operacional - Debian 9 de 64 bits e se conecta ao segundo disco - vm_bad_disk.

Tendo entrado em uma nova VM através do ssh - examinamos a lista de discos na VM:
root@recovery:~# fdisk -l
Disk /dev/vda: 4.9 GiB, 5242880000 bytes, 10240000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x09dea38e

Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 499711 497664 243M 83 Linux
/dev/vda2 501758 10237951 9736194 4.7G 5 Extended
/dev/vda5 501760 10237951 9736192 4.7G 83 Linux

Disk /dev/vdb: 58.6 GiB, 62914560000 bytes, 122880000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe8c76303

Device Boot Start End Sectors Size Id Type
/dev/vdb1 * 2048 194559 192512 94M 83 Linux
/dev/vdb2 196606 30717951 30521346 14.6G 5 Extended
/dev/vdb5 198656 30717951 30519296 14.6G 83 Linux


Aqui está / dev / vdb - este é o nosso vm_bad_disk. A primeira coisa que o segundo administrador remove / dev / vdb2 e / dev / vdb5 e tenta criar / dev / vdb2 com o 194560 iniciado e um fim aproximado, mas também obtém:
Superbloco inválido .

Para trabalhar com a partição / dev / vdb, um utilitário dividido é instalado para um trabalho mais conveniente com a partição.
Repetimos a ação com a remoção de / dev / vdb2 já em parte e fazendo ajuda.

A atenção do administrador é chamada ao comando de resgate, que permite definir o início e o fim da partição para encontrar o FS nele. Não há nada complicado na sintaxe do comando:
Basta digitar em partes:
> resgate
O sistema perguntará:
Início - indicou 194560
Agora o administrador precisa calcular o final (fim da partição). Como o administrador sabia inicialmente que o tamanho do disco inteiro era de 14 GB e que 1 setor é de 512 bytes ... os seguintes cálculos são feitos:
14 GB são aproximadamente 15032385536 bytes, calculamos o número de setores:
15032385536/512 = 29360128
Este valor deve ser especificado em parted:
Fim 29360128

Pressione Enter com ousadia e aguarde o resultado ... Nesse caso, não tive que esperar muito tempo e nos separamos, mostrando que o FS foi encontrado e se valia a pena fazer as alterações - respondemos SIM

Parted fará as alterações necessárias e o administrador sairá do Parted.

Admin retorna para a linha de comando do sistema e faz:
mount / dev / vdb2 / mnt

A partição é montada sem problemas e mostra que seu tamanho é de cerca de 14 GB, o que é correto, pois o FS ainda não foi expandido. O administrador verifica rapidamente os arquivos e tudo indica que não há artefatos e arquivos quebrados à primeira vista.

Como a partição parece ativa, o administrador faz: umount / dev / vdb2 e inicia:
e2fsck / dev / vdb2 após a verificação ser concluída - executa o comando para expandir a seção:
resize2fs / dev / vdb2

A operação passa sem problemas e o administrador monta a partição novamente para garantir que está tudo bem:
mount / dev / vdb2 / mnt

A partição é montada sem erros e, usando o comando df -p , ela vê uma partição já expandida.

O administrador mais uma vez verifica os arquivos e diretórios deste lote e decide que está tudo bem com o FS e os arquivos.

O administrador executa o comando: shutdown -p now e remove a unidade mapeada da VM com a qual as ações foram executadas.

Ele salva a imagem de disco da VM original, da qual tudo foi iniciado em um armazenamento separado, a substitui pela imagem de disco correta e envia a VM para a inicialização.

A VM é inicializada sem problemas e todos os dados estão no local.

Moral:
1) Faça um SnapShot antes de suas ações
2) Tire uma captura de tela das configurações desejadas (neste caso, marcação de partição)
3) Antes do trabalho, faça backup de arquivos importantes

Source: https://habr.com/ru/post/pt446252/


All Articles