Acabei de limpar acidentalmente 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 espelho RAID.
Eu acidentalmente engordei e acabei excluindo a tabela de partições em /dev/sda
, em vez de /dev/sdb
.
O sistema ainda está funcionando, então 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 poder recriar as partições exatamente onde estavam?
fdisk /dev/sda -l
não produz partições.
Sim, me sinto inteligente
Responder1
O kernel mantém a tabela de partições em cache permanentemente (a menos que seja explicitamente solicitado a recarregar, e isso não pode ser feito se algumas das partições estiverem em uso). Portanto, você estará seguro até reiniciar (ou dizer ao kernel para operar com dados que não refletem o verdadeiro conteúdo do disco; por exemplo, se você já ativou o mdraid, ele pode já ter gravado seus metadados no disco).
Se você tem umatualizadobackup do seu setor de inicialização (os primeiros 512 bytes), você pode restaurá-lo ( cat boot-sector-backup >/dev/sda
- verifique se o tamanho do arquivo que você está restaurando é exatamente 512 bytes). A instalação do seu bootloader pode ter criado um backup do setor de inicialização, mas se ele tiver sido atualizado ou você tiver reparticionado desde então, ele não estará atualizado. Não restaure um backup que possa estar obsoleto.
As informações do kernel sobre as partições podem ser acessadas através do /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 com número 5 ou superior, elas são partições lógicas (consulteQual é a diferença entre partição "estendida" e partição "lógica"), contido 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, então primeiro você precisa determinar isso; deve ser grande o suficiente para caber todas as partições lógicas e não deve abranger nenhuma partição primária (as outras partições são numeradas de 1 a 4).
Correr fdisk /dev/sda
. Use u
para mudar a unidade para setores. Crie as partições ( n
) com o deslocamento e tamanho corretos (como diz o prompt, coloque +
antes do número de setores no que diz respeito ao tamanho), começando pela 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 Linux swap, c
para uma partição Windows FAT32, 7
para uma partição Windows NTFS). Se você tiver uma partição DOS/Windows inicializável, defina seu sinalizador inicializável ( a
).
Verifique novamente se a saída está correta e pressione w
para enviar a nova tabela para o 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 poderia danificar o disco (mesmo no modo somente leitura, porque gravaria o diário) se o deslocamento estivesse correto, mas não o tamanho ).
Se o fsck não encontrar nenhum sistema de arquivos, você errou no deslocamento de uma partição. Se relatar erros, é provável que você tenha errado o tamanho da partição.Contanto que você não tenha gravado no disco, você ainda pode corrigir a tabela de partições. Quando você não tiver nenhuma partição do disco montada, pressionar w
fará fdisk
com que o kernel releia a tabela de partições. Depois de acertar as partições, você poderá reinicializar o sistema normal e continuar normalmente.
Responder2
partedeve ajudá-lo, mesmo se você tiver reiniciado.