Ok, finalmente consegui restaurar o MBR. Como mencionei acima, eu tinha feito o backup dos MBRs de ambas as unidades RAID - para as unidades em si. Foi feito com a ajuda do comando dd:
dd if=/dev/nvme0n1 bs=512 count=1 of=nvme0n1.bootsector.backup
dd if=/dev/nvme1n1 bs=512 count=1 of=nvme1n1.bootsector.backup
Eu pensei que seria possível procurar por arquivos de backup MBR nas imagens da unidade. Eu salvei os setores do MBR no servidor similar ao arquivo mbrb.backup, e ele tinha a string:
"GRUB#dd if=/dev/sdb of=mbrb.backup bs=512 count=1
#strings -t d mbr.backup | grep -4 -iE 'GRUB' | grep -4 'Geom' | grep -4 'Hard Disk' | grep -4 'Read' | grep -4 'Error'
392 GRUB
398 Geom
403 Hard Disk
413 Read
418 Error
Geom#strings -t d /dev/nvme1n1 | grep -4 -iE 'GRUB' | grep -4 'Geom' | grep -4 'Hard Disk' | grep -4 'Read' | grep -4 'Error'
HardDisk34368320904 GRUB
34368320910 Geom
34368320915 Hard Disk
34368320925 Read
34368320930 Error
34702932360 GRUB
34702932366 Geom
34702932371 Hard Disk
34702932381 Read
34702932386 Error
and some more results....
Readbc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type 'warranty'.
34368320904/512
67125626
dd if=/dev/nvme1n1 of=recovery_file.34368320904 bs=512 skip=67125626 count=2
Error"
Como eu não consegui encontrar a string com bytes nulos na imagem de 512Gb, fiz uma pesquisa no grep que procurava por strings individuais, como esta no MBR de trabalho:
dd if=recovery_file.475173835144 of=/dev/nvme1n1 bs=521 count=1
Eu comecei a procurar por essa string em raw drive:
Disk /dev/nvme1n1 - 512 GB / 476 GiB - CHS 488386 64 32
Current partition structure:
Partition Start End Size in sectors
1 P Linux RAID 1 0 1 32768 63 32 67108864 [rescue:0]
Warning: Bad starting sector (CHS and LBA don't match)
2 P Linux RAID 32769 0 1 33280 63 32 1048576 [rescue:1]
Warning: Bad starting sector (CHS and LBA don't match)
3 P Linux RAID 33281 0 1 488385 21 16 932053680 [rescue:2]
Warning: Bad starting sector (CHS and LBA don't match)
No partition is bootable
E encontrou mais de 20 offsets com essa string. Os deslocamentos ficaram assim:
dd if=/dev/nvme0n1 bs=512 count=1 of=nvme0n1.bootsector.backup
dd if=/dev/nvme1n1 bs=512 count=1 of=nvme1n1.bootsector.backup
Do que salvei todos eles com dd, calculei a contagem de blocos com bc:
"GRUB#dd if=/dev/sdb of=mbrb.backup bs=512 count=1
#strings -t d mbr.backup | grep -4 -iE 'GRUB' | grep -4 'Geom' | grep -4 'Hard Disk' | grep -4 'Read' | grep -4 'Error'
392 GRUB
398 Geom
403 Hard Disk
413 Read
418 Error
Geom#strings -t d /dev/nvme1n1 | grep -4 -iE 'GRUB' | grep -4 'Geom' | grep -4 'Hard Disk' | grep -4 'Read' | grep -4 'Error'
HardDisk34368320904 GRUB
34368320910 Geom
34368320915 Hard Disk
34368320925 Read
34368320930 Error
34702932360 GRUB
34702932366 Geom
34702932371 Hard Disk
34702932381 Read
34702932386 Error
and some more results....
Readbc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type 'warranty'.
34368320904/512
67125626
dd if=/dev/nvme1n1 of=recovery_file.34368320904 bs=512 skip=67125626 count=2
Error"
Tenho uns 20 + arquivos, a maioria deles é exatamente semelhante, talvez alguns arquivos GRUB. Então eu comecei a compará-los ao MBR que eu salvei do servidor de trabalho. O último parecia muito similar. Eu salvei no MBR do disco quebrado:
dd if=recovery_file.475173835144 of=/dev/nvme1n1 bs=521 count=1
Verifiquei com o testdisk, curiosamente, ele reclamou que as partições estavam erradas, mas todo o resto parecia muito promissor:
Disk /dev/nvme1n1 - 512 GB / 476 GiB - CHS 488386 64 32
Current partition structure:
Partition Start End Size in sectors
1 P Linux RAID 1 0 1 32768 63 32 67108864 [rescue:0]
Warning: Bad starting sector (CHS and LBA don't match)
2 P Linux RAID 32769 0 1 33280 63 32 1048576 [rescue:1]
Warning: Bad starting sector (CHS and LBA don't match)
3 P Linux RAID 33281 0 1 488385 21 16 932053680 [rescue:2]
Warning: Bad starting sector (CHS and LBA don't match)
No partition is bootable
Então eu assumi o risco e coloquei o mesmo MBR no ataque / dev / nvme0n1. Após a reinicialização, os dispositivos md subiram e meus dados estavam de volta. Parece um milagre.