Como faço para clonar uma única unidade em uma nova matriz RAID 1?

3

Aqui está um pequeno histórico sobre a situação em questão. Eu tenho uma DELL Precision T7600 no trabalho que eu sou responsável por manter, que acabou de perder um disco rígido, felizmente apenas o diretório / home estava nele, e agora foi recuperado. Agora eu tenho a tarefa de criar um RAID 1 da unidade do sistema operacional para que nosso tempo de inatividade seja mínimo.

Eu li sobre clonagem de disco rígido, no wiki do Arch-Linux, e atualmente estou seguindo estes dois guias , apoiando-se no primeiro para a configuração do grub2, mas não consegui envolver minha cabeça em torno do processo. Talvez eu esteja fazendo isso muito complexo e é um simples comando dd if=/dev/sdc of=/dev/md126 . O dd ing de um array de um arquivo de dispositivo é possível ou recomendado? Não sei qual é a melhor prática aqui.

Eu tentei dd ing para o dispositivo / dev / md0, mas era um pouquinho menor do que o original, então recebi um erro de dd sobre não conseguir copiar para /dev/md0 . Além disso, tentei inicializar fora dessa matriz, mas corri para error: file '/grub/i386-pc/normal.mod' not found. e fui colocado em um grub rescue> , que não sei o que fazer com ele. Então eu tentei montar o array para fazer um grub-install nele, mas foi encontrado com falha, como mount me disse: unknown filesystem type 'linux_raid_member'

Eu executei o seguinte comando para clonar minha unidade do sistema operacional nas duas unidades em branco:

sudo pv /dev/sdc | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) | dd of=/dev/null

Isso clonou minha unidade de sistema operacional com êxito, sem erros de grub como a primeira tentativa. Grub carregado, mas não iria arrancar o sistema operacional, e eu fui jogado no modo de emergência dracut. Eu saí disso emitindo os seguintes comandos do meu LiveUSB sfdisk -d /dev/sdc | sfdisk /dev/sda e idem para sdb .

Fedora carregado desta vez, mas eu fui jogado no modo de emergência, o que é causado, pelo menos no meu caso, como eu lidei com isso antes, por inexistentes /etc/fstab entradas. Então eu editei o fstab para montar apenas a partição / .

Agora eu corri:

sudo mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sda /dev/sdb

do meu stick USB ao vivo, para criar a matriz, mas depois de fazer isso, as unidades ainda não eram inicializáveis. Então eu tive que re dd as partições sdc2 e sdc3 , para suas respectivas partições sdb . E estou de volta à estaca zero.

Desta vez, decidi criar 3 partições RAID separadas. E criei um arquivo chamado /etc/grub.d/09_raid1_setup :

menuentry 'Fedora RAID 1' --class fedora --class gnu-linux --class gnu --class os {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt
    insmod ext2
    insmod mdraid1x
    set root='(md/2)'
    search --no-floppy --set=root /dev/md2 
    linux /vmlinuz-3.18.9-100.fc20.x86_64 root=/dev/md3 ro
    initrd /initramfs-3.18.9-100.fc20.x86_64.img
}

Depois recriou o novo /boot/grub2/grub.cfg com grub2-mkconfig -o /boot/grub2/grub.cfg e executei dracut -f /boot/initramfs-currentimage para atualizar o initramfs.

Também cometi o erro de não alterar a tabela de partições de sdb para corresponder a sda , que se parece com:

Part. #     Size        Partition Type            Partition Name
----------------------------------------------------------------
         1007.0 KiB  free space
1        1024.0 KiB  BIOS boot partition
2        500.0 MiB   Linux RAID
3        97.7 GiB    Linux RAID
4        2.6 TiB     Linux RAID
         455.5 KiB   free space

até depois de criar a imagem initramfs e atualizar grub.cfg .

A saída do lsblk agora se parece com o seguinte:

NAME    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda       8:0    0   2.7T  0 disk  
├─sda1    8:1    0     1M  0 part  
├─sda2    8:2    0   500M  0 part  
├─sda3    8:3    0  97.7G  0 part  /
└─sda4    8:4    0   2.6T  0 part  
sdb       8:16   0   2.7T  0 disk  
├─sdb1    8:17   0     1M  0 part  
├─sdb2    8:18   0   500M  0 part  
│ └─md2   9:2    0 499.7M  0 raid1 /boot
├─sdb3    8:19   0  97.7G  0 part  
│ └─md3   9:3    0  97.6G  0 raid1 
└─sdb4    8:20   0   2.6T  0 part  
  └─md4   9:4    0   2.6T  0 raid1 
sdc       8:32   0   2.7T  0 disk  /home

E /etc/fstab é:

/dev/md3 /                       ext4    defaults        1 1
/dev/md2 /boot                   ext4    defaults        1 2
UUID=f9fba42e-80f4-41b1-b309-88b22f642907 /home                 ext4    defaults        1 2

Depois de alguns pesquisa , reading e geral pesquisando , ainda não consigo encontrar respostas adequadas à minha situação.

Obrigado pelo seu tempo e contribuição!

    
por rivanov 10.11.2015 / 01:15

1 resposta

2

Primeiro, você precisa ter certeza de que há pelo menos 1mb de espaço livre no final do disco existente. Redimensione a última partição, se necessário. Em seguida, basta criar o array raid de ambos os discos (liste primeiro o disco original). Certifique-se de usar a opção -e 1.0 para mdadm para garantir que ela coloque os metadados da invasão no final do disco. Ele começará a copiar automaticamente o conteúdo da unidade original para a nova unidade. Você precisará fazer tudo isso enquanto inicializa de alguma outra unidade, ou pelo menos com todos os sistemas de arquivos montados somente para leitura. Reinicialize quando terminar, reinstale o grub. Se o seu / etc / fstab estiver usando UUIDs, isso é tudo que você precisa fazer; se não, você precisará certificar-se de que esteja configurado para apontar para / dev / mdXpY em vez de / dev / sdapY.

    
por 10.11.2015 / 02:29