Tive praticamente o mesmo problema com um controlador "falso RAID" it8212 e alguns discos no RAID0. Surpreendentemente, o mdadm poderia resolver o problema, com um pouco de tentativa e erro, no entanto. Se você sabe / lembra o chunksize (o quantum de cada disco paralelo de leitura / gravação para cada disco), você pode tentar algo parecido com isso ( não tente ainda ):
sudo mdadm --build --verbose --run --chunk=64 /dev/md0 --level=raid0 --raid-devices=2 /dev/sde /dev/sdd
Se / dev / md0 já estiver ocupado, sinta-se à vontade para usar números incrementais em vez de 0.
Claro, / dev / sde e / dev / sdd onde os discos no meu caso, e 64k foi meu chunksize, mas você pode facilmente determinar sua própria configuração com:
sudo fdisk -l
Isto lista todas as partições de todos os seus discos físicos. Aqueles dois que nos interessam devem ser exatamente idênticos em tamanho, cilindros, setores, etc. Além disso, uma vez que a ordenação de parâmetros definitivamente importa, o primeiro (no lugar do meu / dev / sde) deve ter uma tabela de partições (ou uma parte delas, se você tivesse usado partições estendidas), e a segunda (minha / dev / sdd) parece estar totalmente corrompido. Tenha cuidado para não tocar em seus outros discos não-raid, embora :-) OTAH, se ambos parecem inválidos, você pode parar de ler esta resposta, não vai funcionar para você: - (
O uso de --build (em vez de --create) tem a vantagem de ignorar a criação de informações de superblocos, evitando o risco de apagar dados e, o mais importante, iniciar dados reais do setor 0, criando assim o chamado "legado". "assembly, que é o que a maioria dos fornecedores de chipsets" fake raid "faria (suposição educada: suas informações de superblocos são escritas na memória NV do chipset, portanto, elas realmente não precisam gravar nenhum metadado nos discos).
Agora, se você não se lembra do tamanho original do bloco, a tentativa e o erro são necessários ... Tente construir com um tamanho de bloco diferente a cada vez, em seguida, use fdisk -l em / dev / md0 explicitamente e veja se as informações da partição são exibidas corretamente. Nesse caso, tente montar uma das partições descobertas como somente leitura e verifique alguns dados (preferencialmente texto), para ter certeza. Se não, desfaça. Para desfazer o desenvolvimento do mdadm e disponibilizar o disco novamente, use %código% e %código% Em seguida, tente novamente, com tamanho de bloco diferente.
Embora a montagem seja suficiente (a capacidade de montar partições corrompidas é extremamente rara), aqui está um truque um pouco mais avançado para verificar o tamanho correto do pedaço, procurando por uma string de identificador de partição. Espero que, em uma tabela de partição válida, os setores iniciais de uma ou mais partições reconhecíveis sejam descritos. Mais uma vez, no meu caso:
/dev/sde1 * 63 47118644 23559291 7 HPFS/NTFS/exFAT
/dev/sde2 47118645 102896324 27888840 7 HPFS/NTFS/exFAT
/dev/sde4 102896325 980463014 438783345 5 Extended
Em quase todos os casos, você pode encontrar cadeias de identificadores próximas ao início de cada tipo de partição. ie. 'NTFS' em si, no caso de NTFS. Usando dd, copie os primeiros poucos setores do disco (/ dev / md0), para um arquivo.
sudo dd if=/dev/md0 of=testfile bs=1024 count=256 skip=0
Isso deve copiar o primeiro (skip = 0) 256K de dados do disco para 'testfile'. Agora, usando algo como:
strings -a -t d testfile | grep NTFS
ou x em vez de d se você preferir hexadecimal ou, mais simplesmente,
hexdump -C testfile | less
depois, pesquise com '/'
e você pode encontrar a posição da string no disco inteiro. Compare isso com o deslocamento de partição calculado. Por exemplo, no meu caso, a primeira partição ntfs começou no 63º setor, o que leva a um deslocamento de 63 * 512 = 32256. A string 'NTFS' foi encontrada no lugar 32259, então consideramos isso 'uma correspondência' (3 bytes postar o começo). (Não se esqueça de adicionar skip * bs ao seu cálculo, se algum salto não-zero for usado no dd). Infelizmente, um jogo não significa necessariamente que é o tamanho correto do pedaço, enquanto uma incompatibilidade significaria que certamente não é.