Acidentalmente apagou as partições no meu disco de boot. O sistema ainda está em execução. Como posso me recuperar?

5

Eu apenas acidentalmente limpo todas as partições do disco errado.

/dev/sda é o disco de inicialização e /dev/sdb é um novo disco que estou tentando configurar como um espelho RAID.

Eu acidentalmente gravei isso e acabei excluindo a tabela de partições em /dev/sda , em vez de /dev/sdb .

O sistema ainda está ativo e em execução, por isso está sendo executado em uma tabela de partição em cache em algum lugar.

Posso recuperar a tabela de partições, ou pelo menos visualizá-la, para recriar as partições exatamente onde elas estavam?

fdisk /dev/sda -l não gera partições.

Sim, eu me sinto inteligente

    
por Fake Name 04.04.2012 / 11:35

2 respostas

8

O kernel mantém a tabela de partição no cache permanentemente (a menos que explicitamente informado para recarregar, e isso não pode ser feito se algumas das partições estiverem em uso). Então você está seguro até reinicializar (ou dizer ao kernel para operar em dados que não refletem o conteúdo real do disco; por exemplo, se você já tiver ativado o mdraid, ele pode ter escrito seus metadados no disco já).

Se você tiver um backup atualizado de seu setor de inicialização (os primeiros 512 bytes), poderá restaurá-lo ( cat boot-sector-backup >/dev/sda - verifique se o tamanho do arquivo é ' re restaurando é exatamente 512 bytes). A instalação do seu gerenciador de inicialização pode ter criado um backup do setor de inicialização, mas se ele tiver sido atualizado ou repartido desde então, ele não estará atualizado. Não restaure um backup que pode estar obsoleto.

As informações do kernel sobre as partições estão acessíveis através de /sys/class/block/sda/sda* . No diretório de cada partição ( sda1 , sda2 , etc.):

  • start contém o deslocamento do início da partição, em setores de 512 bytes.
  • size contém o tamanho da partição, em setores de 512 bytes (exceto para a partição estendida).

Se você tiver partições numeradas 5 ou acima, elas serão partições lógicas (consulte Qual é a diferença entre partição" estendida "e partição" lógica "), contida dentro de uma partição estendida. Existe uma única partição estendida (ou nenhuma) e é uma das partições 1–4. O arquivo size não contém o tamanho da partição estendida, portanto, primeiro você precisa determinar isso; ele deve ser grande o suficiente para que todas as partições lógicas caibam e não deve abranger nenhuma partição primária (as outras partições numeradas de 1 a 4).

Execute fdisk /dev/sda . Use u para mudar a unidade para setores. Crie as partições ( n ) com o deslocamento e o tamanho corretos (como diz o prompt, coloque + antes do número de setores quando se trata do tamanho), começando com a partição estendida.

Use p para verificar se a tabela de partição está correta. Se algumas dessas partições não forem partições de dados do Linux, use t para definir seu tipo ( 82 para troca do Linux, c para uma partição do Windows FAT32, 7 para uma partição do Windows NTFS). Se você tiver uma partição DOS / Windows inicializável, configure seu sinalizador inicializável ( a ).

Verifique novamente se a saída está boa, depois pressione w para confirmar a nova tabela no disco.

Salve o conteúdo de /sys/class/block/sda/ in a tar archive on a USB stick. Then reboot from a removable media. **After rebooting, if the partition table you created is not correct, you risk massive data corruption**. So from the removable media, run fsck -n (don't forget the -n ) to check the consistency of the filesystems on each partition (don't use mount ', que só funcionaria se o deslocamento estivesse correto e pudesse danificar o disco (mesmo no modo somente leitura, porque ele gravaria o diário) se o deslocamento estava correto, mas não o tamanho).

Se o fsck não encontrar nenhum sistema de arquivos, você errou o deslocamento de uma partição. Se relatar erros, é provável que você tenha o tamanho da partição errado. Contanto que você não tenha escrito no disco, ainda é possível corrigir a tabela de partições . Quando você não tiver nenhuma partição do disco montada, pressionar w in fdisk fará o kernel reler a tabela de partições. Depois de ter suas partições corretas, você poderá reinicializar em seu sistema normal e continuar como de costume.

    
por 04.04.2012 / 13:23
0
O

gpart deve ajudá-lo, mesmo que você tenha reiniciado.

    
por 04.04.2012 / 13:42