Primeiro, sim, livre-se de qualquer disco que esteja jogando erros de leitura que acabam no arquivo de log. Isso significa que a realocação de blocos defeituosos falhou e / ou a unidade está prestes a morrer.
Eu sugiro que você resgate seus dados usando um CD de resgate do Linux, como o link para usar o ddrescue. Isso pode fazer uma cópia de imagem para a partição de um novo disco e fará muitas tentativas, etc., para tentar recuperar sua partição. Monte uma unidade USB ou outra partição
mkdir /tmp/x && mount /dev/sdd1 /tmp/x
para manter o arquivo de log do ddrescue - então você pode parar o ddrescue (ctrl-C) e reiniciá-lo mais tarde a partir do mesmo ponto.
Faça uma partição no novo disco um pouco maior que o disco antigo. Você não precisa usar todo o disco!
Inicialize o CD de recuperação com "nodmraid" como um parâmetro de inicialização do kernel. Se estiver usando o live CD do Ubuntu, instale o RAID e o LVM se você estiver usando-o
apt-get install mdadm lvm2 gddrescue
você precisará estar na internet para que isso funcione). Caso contrário, use o CD de recuperação do Ubuntu para a etapa do ddrescue. Troquei entre o CD de resgate para execuções do ddrescue e o live CD para o grub e o fsck.
Assumindo que / dev / sdb é seu disco de origem com falha, e / dev / sdx é seu novo disco, e / mnt / x é uma chave USB ou uma partição em outro disco que foi montado. Você precisa do arquivo de log do ddrescue, realmente! Como ele rastreia como o ddrescue está indo e permite que ele seja interrompido.
De acordo com o link
ddrescue --no-split /dev/sdb /dev/sdX imagefile /mnt/x/logfile
então
ddrescue --direct --max-retries=3 /dev/sdb /dev/sdX /mnt/x/logfile
então
ddrescue --direct --retrim --max-retries=3 /dev/sdb /dev/sdX /mnt/x/logfile
Não tenha medo de pressionar Ctrl-C caso esteja levando horas para recuperar um único setor. Basta ir para o próximo passo (passo 1 deve ter sucesso, não importa o quê). A última etapa tenta recuperar as últimas migalhas de dados utilizáveis.
Você também terá que fazer
mdadm --create /dev/md99 --level-1 --raid-devices=2 missing /dev/sdX
para criar uma nova matriz RAID usando o novo disco, isso cria um novo superbloco RAID na partição (nos últimos 64K a 128K no final da partição).
Remova seu disco com falha / dev / sdb antigo do sistema para que ele não fique visível para o linux.
Torne seu disco RAID de origem acessível. Você pode ter que usar o parâmetro "nodmraid" para o kernel de inicialização do kernel, já que eu tive problemas com o CD de recuperação do Ubuntu, e acabei usando o live CD do Ubuntu (10.4) onde o nodmraid está em Opções F6. Você só precisa usar
mdadm --assemble /dev/md99 /dev/sdX
Então fsck ou faça qualquer checagem que você precise fazer nos dados na matriz RAID md99 (eu usei o vgscan e consegui ver os LVs do LVM para executar a checagem). Eu uso o XFS para o mythtv, mas o comando xfs_check travou o meu sistema, mas o xfs_repair foi OK.
Monte o diretório / boot do seu novo / dev / sdX
mount /dev/mapper/my_vg/root_lv /tmp/x
em seguida, insira um novo registro de inicialização do GRUB no novo disco RAID / dev / sdX (somente se você inicializar a partir do RAID!)
grub-setup -d /tmp/x/boot/grub /dev/sdX
agora você tem uma matriz RAID (quase) inicializável. Você também pode fazer a configuração usando o próprio GRUB, ou usar o dd para copiar os primeiros 446 bytes do / dev / sdb para / dev / sdX. SOMENTE os primeiros 446 bytes, o resto do primeiro setor é sua tabela de partições, que você armazenará poderosamente se copiar mais! Você também pode ter que fazer o mesmo para o primeiro setor em sua partição / dev / sdX1 (digamos). Faça backup de todos os setores que você irá sobrescrever, usando também o dd.
Se estiver usando o grub2 e estiver inicializando a partir do RAID, você descobrirá que o UUID da matriz RAID mudou e sua inicialização falhará. Edite a linha de comando de inicialização (e no painel de inicialização do Grub) para remover respingos e tranquilidade, para que você possa ver o que está acontecendo. Então, após a falha na inicialização, você fica no initramfs.
mdadm --assemble /dev/md99 /dev/sdX
depois, verifique / proc / mdstat para ter certeza de que a matriz está lá. Se for apenas "exit" e espero que sua sub-rotina GRUB funcione bem (o meu foi configurado para usar o LVM, então ele encontrou os LVs no dispositivo RAID assim que havia algum dispositivo RAID lá, ele apenas procurou pelo LV). Depois de iniciado, você está quase pronto.
O arquivo de imagem initrd (arquivo gps do cpio) contém uma cópia do mdadm.conf usado durante o processo de inicialização, visível e editável como /etc/mdadm/mdamdm.conf durante o processo de inicialização. Se você pode obter o seu sistema inicializado normalmente apenas atualize o initramfs usando
update-initramfs -u
Se você não conseguir inicializar o sistema por causa do UUID incompatível no arquivo mdadm.conf
Esteja ciente de que seu dispositivo de destino / dev / sdX pode aparecer como / dev / sdY quando você inicializar de uma forma diferente (Grub, rescue, boot real).
A propósito, a menos que você esteja usando RAID5 e esteja realmente interessado em alinhamento de blocos, eu usaria uma partição para sua matriz RAID, você não precisa usar um disco inteiro (especialmente se você estiver substituindo um disco de 1TB com um 2TB um). Você sempre pode adicionar outra partição e um segundo array RAID mais tarde para usar todos os 2TB.
Ufa! Feito!