O Linux mdraid tem vários formatos de metadados . Os formatos 0.9 e 1.0 colocam os metadados no final do dispositivo de contenção, e a carga útil (o sistema de arquivos) começa no início do dispositivo e pode ser acessada diretamente sem passar pela camada de ataque. Os formatos 1.1 e 1.2 colocam os metadados no meio e no início do dispositivo de contenção, respectivamente, portanto, a carga útil está em um deslocamento.
O instalador do Ubuntu cria volumes com o formato de metadados 1.2, portanto, seus dados são iniciados após os metadados, e não no início do dispositivo.
A maneira mais simples de acessar esses dados é montar o dispositivo de ataque. Em um volume RAID-1, um único dispositivo é suficiente.
madadm -A /dev/sdc1
(Pare aqui a menos que você goste de dor.)
Você também pode acessar os dados em um deslocamento. O único ponto que posso ver para fazer isso é se você tem que trabalhar em um kernel muito antigo que não suporta os formatos 1.x mdraid. Primeiro, determine o deslocamento mdadm -E /dev/sdc1
: procure a linha Data Offset : SSS sectors
. Um setor mdadm tem 512 bytes.
sectors=$(mdadm -E /dev/sdc1 | awk -F: '$1 ~ /Data offset/ {print $2}')
bytes=$(($sectors * 512))
losetup -f -o $bytes /dev/sdc1
Em desespero, com os formatos 1.x, o deslocamento de dados é armazenado nos bytes 128–135 dos metadados little-endian¹. 1.2 metadados são 4096 bytes após o início do dispositivo.
Você também pode alterar a tabela de partições para que ela comece ainda mais. Tenha muito cuidado com sua aritmética. Só faça isso se quiser continuar usando o disco a longo prazo em um sistema antigo que não pode acessar o dispositivo de invasão.
¹ Ou com o endianness da plataforma? Não tenho certeza.