Recuperando uma partição sem superblocos válidos

2

Meu sistema tinha essas partições:

  • DellUtility
  • Windows 7
  • Ubuntu 14.04 (64 bits) - estendido
  • / home - estendido
  • virtualbox - estendido
  • swap - estendido

(Uma caixa da Dell com partições duplas e "outros dados" do Ubuntu)

Sequência de Eventos

  • Upgrade de distro para 16.04.1, aparentemente bem-sucedido
  • reinicialize e termine no modo de emergência conforme descrito, por exemplo, aqui
  • o uso do systemctl etc. foi malsucedido; uma sugestão foi usar o Upstart via GRUB, que inicializou no desktop
  • a próxima inicialização (no Modo de Emergência) não foi bem-sucedida; agora a partição / home estava indisponível
  • inicializar via USBDrive; / home ainda indisponível, listado como "partição desconhecida" por gparted
  • investigação demorada via fdisk, testdisk etc. wiki , um howto mostrou que todos os superblocos estavam corrompidos , não há backups disponíveis. Eu não sou um especialista em recuperação, mas isso parece incomum.
  • Transforme uma imagem de disco de teste em partição "virtualbox"
  • Siga o processo descrito aqui sem sucesso, incluindo o uso por último de mke2fs -S .
  • teste mais profundo procura a partição, mas não os superblocos; aloce com mensagens como No ext2, JFS, Reiser, cramfs or XFS marker
  • Ferramentas como o photorec podem recuperar alguns arquivos, mas eles são confusos, faltam nome de arquivo / estrutura e muitos são criptografados devido a ele ser uma partição / home
  • Decida que, como eu tenho um backup da partição e dos dados originais, exclua e substitua a partição / home, o que é bem-sucedido. Inicialize em "home-new" e configure-o ...
  • e na inicialização seguinte , imagine minha surpresa ao descobrir que tanto a "home-new" quanto a partição "virtualbox" estão indisponíveis. O mesmo problema de superbloco. Bem, ótimo.
  • Usando o USBDrive, recrie novamente a partição inicial em um local de disco diferente; isso parece estável. Exclua "home-novo".
  • Perceba que o backup de / home e alguns dados críticos estão nessa partição agora ilegível; obter um disco USB e fazer uma imagem lá

Situação atual

Minhas partições são:

  • DellUtility (OK)
  • Windows 7 (OK)
  • Ubuntu 16.04 (OK)
  • / home-new (ruim, excluído, no mesmo local do disco original / home) - estendido
  • / home (parece OK, em local de disco diferente) - estendido
  • virtualbox (ruim) - estendido
  • swap (OK) - estendido

A partição "virtualbox" é de ~ 550 GB. É ilegível e não tem superblocos válidos.

Dados importantes sobre isso:  * uma imagem testdisk do meu partiton original / home, ~ 50GB, ilegível sem superblocos válidos  * alguns dados originais de / home que não foram tratados pelo Crashplan. Não o suficiente para ser um problema crítico, mas o suficiente para ser irritante.

Note que as primeiras inicializações foram boas - foi na inicialização próxima que ocorreram os problemas. A partição "virtualbox" foi armazenada como uma imagem do Testdisk em uma unidade USB.

fdisk:

sudo fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x15642c74

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sda1  *            63      80324      80262  39.2M  6 FAT16
/dev/sda2         18395136  427995135  409600000 195.3G  7 HPFS/NTFS/exFAT
/dev/sda3        427995136 1920120831 1492125696 711.5G  f W95 Ext'd (LBA)
/dev/sda4       1920122880 1953523711   33400832  15.9G 82 Linux swap / Solaris
/dev/sda5        438233088  489433087   51200000  24.4G 83 Linux
/dev/sda6        773240832 1920120831 1146880000 546.9G 83 Linux
/dev/sda7        633921536  736321535  102400000  48.8G 83 Linux

Partition 1 does not start on physical sector boundary.
Partition table entries are not in disk order.

dumpe2fs:

sudo dumpe2fs /dev/sda6
dumpe2fs 1.42.13 (17-May-2015)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sda6
Couldn't find valid filesystem superblock.

dividido:

sudo parted -l
Model: ATA ST1000DM003-1CH1 (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system     Flags
 1      32.3kB  41.1MB  41.1MB  primary   fat16           boot
 2      9418MB  219GB   210GB   primary   ntfs
 3      219GB   983GB   764GB   extended                  lba
 5      224GB   251GB   26.2GB  logical   ext4
 7      325GB   377GB   52.4GB  logical   ext4
 6      396GB   983GB   587GB   logical
 4      983GB   1000GB  17.1GB  primary   linux-swap(v1)

Hipótese

Como você pode imaginar, isso é muito frustrante. Observe que a "Partição 1 não inicia no limite do setor físico." aviso no fdisk, que não apareceu antes.

Indo por A partição não começa no limite do setor físico? , eu suspeito que há algum problema de alinhamento que confunde os utilitários de disco de baixo nível, introduzidos pela atualização 16.04, mas isso é apenas uma suspeita.

gdisk:

sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. 
***************************************************************

Disk /dev/sda: 1953525168 sectors, 931.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 8C15FD44-F839-4637-853E-C092F0959C48
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 8-sector boundaries
Total free space is 209964007 sectors (100.1 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              63           80324   39.2 MiB    0700  Microsoft basic data
   2        18395136       427995135   195.3 GiB   0700  Microsoft basic data
   4      1920122880      1953523711   15.9 GiB    8200  Linux swap
   5       438233088       489433087   24.4 GiB    8300  Linux filesystem
   6       773240832      1920120831   546.9 GiB   8300  Linux filesystem
   7       633921536       736321535   48.8 GiB    8300  Linux filesystem

Perguntas

  1. Como posso identificar a causa? Meu sistema agora parece estável, mas desconfio de mais gravações em disco de baixo nível.
  2. É possível recuperar a partição "virtualbox" sem superblocos - e depois a imagem da partição "home" sem superblocos?

Talvez os superblocos estejam intactos, mas através de um deslocamento que o sistema não conhece.

    
por vektis 29.08.2016 / 12:37

1 resposta

0

Fiz alguns progressos (e uma resposta parcial):

Percebemos que em algumas aplicações (por exemplo, o Monitor do Sistema), em algum momento a troca foi relatada como 546,9 GB. A troca deve ser de 15,9 GB, e esse é um número suspeito perto da partição "virtualbox" quebrada.

lsblk mostrou que / dev / sda6 - a partição - também foi mapeada via cryptswap1 para trocar.

/ etc / crypttab teve:

cryptswap1 /dev/sda6 /dev/urandom swap,cipher=aes-cbc-essiv:sha256

A arma fumegante! Portanto, a hipótese agora é que a atualização 16.04 falhou em reconfigurar a troca corretamente e, em versões posteriores, a inicialização da troca quebrou a partição (o que explicaria por que as primeiras inicializações foram bem-sucedidas).

  • Desative a troca em qualquer lugar (técnica usada em O que fazer com" a unidade de disco / dev / mapper / cryptswap1 ainda não está pronta ou não está presente "? )
  • Reinicialize e confirme o estado sem troca
  • Use o testdisk para investigar. Ele tenta marcar as partições ativas como excluídas e não consegue encontrar a partição, então saia.
  • Confirmar estado inalterado com sudo dumpe2fs /dev/sda6
  • dumpe2fs: Bad magic number in super-block while trying to open /dev/sda6 Couldn't find valid filesystem superblock.
  • Portanto, use o último método de vala descrito acima:
  • sudo /sbin/mkfs.ext4 -S -v /dev/sda6
  • sudo mount /dev/sda6 /media/USER/virtualbox-image/
  • ... e ls lista alguns dos arquivos / diretórios!

Bem, viva !!

Não consegui acessar os arquivos, então executei o fsck. Houve tantos erros que eu desisti com preen e modos interativos e apenas usei -y. Aqui estão algumas mensagens fsck para referência:

  • O descritor de grupo 4349 é 0xf6d0, deve ser 0x2ed1. FIXO.
  • / dev / sda6: O Inode 13434881 está em uso, mas possui o dtime configurado. FIXO.
  • / dev / sda6: O Inode 13434881 tem um tamanho extra (336), que é inválido FIXO.
  • / dev / sda6: O Inode 13434881 possui o sinalizador INDEX_FL configurado, mas não é um diretório. ÍNDICE DE HTREE LIMPO.
  • / dev / sda6: O nó 13434881, i_blocks é 137157068659908, deve ser 0. FIXO.
  • Inodes que faziam parte de uma lista vinculada órfã corrompida encontrada. Consertar? sim
  • O Inode 13434886 fazia parte da lista de inodes órfãos. FIXO.
  • O
  • Inode 13434886 possui um conjunto de sinalizadores imagic. Claro? sim
  • Inode 13434886 tem um tamanho extra (62340) que é inválido Fix? sim
  • O inode 13434886 tem o sinalizador de compactação definido no sistema de arquivos sem suporte à compactação. Claro? sim
  • O nó 13434886 tem o sinalizador INDEX_FL definido, mas não é um diretório. Limpar o índice HTree? sim
  • Inode 13434886, i_size é 18440780219561279704, deve ser 0. Fix? sim
  • O inode 13434886, i_blocks é 219803506189340, deve ser 0. Corrigir? sim
  • O inode 13495674 tem um bloqueio de atributo estendido ruim 21496064. Limpar? sim
  • O Inode 13495674 tem bloqueio (s) ilegal (is). Claro? sim
  • Bloco ilegal # 0 (1376321536) no inode 13495674. APAGADO.
  • Arquivo /image_new_superblock.dd (inode # 45605, hora do mod Qua Oct 28 12:58:24 2015) tem 1 bloco (s) reivindicados por várias reivindicações, compartilhado com 1 arquivo (s): ... (inode # 13455772, tempo de modificação Thu Jul 4 03:48:32 1996) Clonar blocos multiplicados? sim

Muitas telas dos timestamps acima, em todo o lugar. fsck na verdade abortado várias vezes devido à alocação de memória, LOL. Eventualmente, ele correu limpo, com mensagens:

  • Executando passes adicionais para resolver blocos reivindicados por mais de um inode ...
  • Passo 1B: nova verificação para blocos reivindicados de forma múltipla
  • Passe 1C: Diretórios de verificação para inodes com blocos reivindicados de forma múltipla
  • Passe 1D: reconciliando blocos com várias reivindicações

Agora, pode montar a partição e copiar dados. Muitos arquivos ainda parecem intactos.

Mas há mais a fazer; esta partição foi afetada por 3 semanas. Presumivelmente, se eu repetir isso na imagem feita inicialmente, posso recuperar mais ou quase todos os dados . E ainda precisa investigar "Partição 1 não inicia no limite do setor físico". Mas, parecendo bem!

    
por vektis 22.09.2016 / 11:25