Teste a invasão de software em uma sandbox!
Eu sugiro que você jogue dentro de um sandbox .
Como o mdadm pode trabalhar com arquivos de imagem e não apenas com arquivos de dispositivos como o
Por exemplo: /dev/sda or /dev/mapper/vg00/lv_home
- por que você não testa sua migração?
dentro de um segundo softwarerraid em sua máquina:?)
Linux OS
Estou fazendo isso no debian / lenny e no bash:
# cat /etc/debian_version && uname -r && bash --version
5.0.2
2.6.26-2-amd64
GNU bash, version 3.2.39(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
Etapa 1
Como root crie diskimages de 4x128MB como este (você precisa de 512 MB de espaço livre em /)
sudo su
mkdir -p ~/raidtest/{root,home} && cd ~/raidtest
for i in sd{a,b,c,d} ; do
dd if=/dev/zero bs=128 count=1M of=$i
done
Vamos ver o que aconteceu:
# ls -hon --time-style=+
total 512M
drwxr-xr-x 2 0 4,0K home
drwxr-xr-x 2 0 4,0K root
-rw-r--r-- 1 0 128M sda
-rw-r--r-- 1 0 128M sdb
-rw-r--r-- 1 0 128M sdc
-rw-r--r-- 1 0 128M sdd
Etapa 2
particionando os arquivos
Eu criei 3 partições (20MB, 40MB e 56MB) para swap, / e / home em sda através de um dispositivo loop:
# losetup /dev/loop0 sda
# ! echo "n
p
1
+20M
t
fd
n
p
2
+40M
t
2
fd
n
p
3
t
3
fd
w" | fdisk /dev/loop0
Ok, veja o que aconteceu:
# fdisk -l /dev/loop0
Disk /dev/loop0: 134 MB, 134217728 bytes
255 heads, 63 sectors/track, 16 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xe90aaf21
Device Boot Start End Blocks Id System
/dev/loop0p1 1 3 24066 fd Linux raid autodetect
/dev/loop0p2 4 9 48195 fd Linux raid autodetect
/dev/loop0p3 10 16 56227+ fd Linux raid autodetect
Copie este partitionscheme para fazer um loop {1,2,3} ^ = sd {b, c, d}
# losetup /dev/loop1 sdb
# sfdisk -d /dev/loop0 | sfdisk /dev/loop1
# losetup /dev/loop2 sdc
# sfdisk -d /dev/loop0 | sfdisk /dev/loop2
# losetup /dev/loop3 sda
# sfdisk -d /dev/loop0 | sfdisk /dev/loop3
Opcional: Se você instalou o parted, execute o partprobe nos dispositivos para atualizar a tabela de kernels
# partprobe /dev/loop0
# partprobe /dev/loop1
# partprobe /dev/loop2
# partprobe /dev/loop3
Etapa 3
Use o kpartx para criar os dispositivos por partição em /dev/mapper/
aptitude install kpartx dmsetup
# kpartx -av /dev/loop0
add map loop0p1 (254:3): 0 48132 linear /dev/loop0 63
add map loop0p2 (254:4): 0 96390 linear /dev/loop0 48195
add map loop0p3 (254:5): 0 112455 linear /dev/loop0 144585
# kpartx -av /dev/loop1
add map loop1p1 (254:6): 0 48132 linear /dev/loop1 63
add map loop1p2 (254:7): 0 96390 linear /dev/loop1 48195
add map loop1p3 (254:8): 0 112455 linear /dev/loop1 144585
# kpartx -av /dev/loop2
add map loop2p1 (254:9): 0 48132 linear /dev/loop2 63
add map loop2p2 (254:10): 0 96390 linear /dev/loop2 48195
add map loop2p3 (254:11): 0 112455 linear /dev/loop2 144585
# kpartx -av /dev/loop3
add map loop3p1 (254:12): 0 48132 linear /dev/loop3 63
add map loop3p2 (254:13): 0 96390 linear /dev/loop3 48195
add map loop3p3 (254:14): 0 112455 linear /dev/loop3 144585
Etapa 4
crie seu raid5 e assista ao status
Nós ainda somos raiz! Na minha estação de trabalho eu não uso raid, apenas LVM, então eu
tem que carregar o módulo do kernel e instalar o pacote
mdadm .
# modprobe raid5
# aptitude install mdadm
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
unused devices: <none>
Eu uso md {10,11,12} para este teste. Cuidado, que eles não são usados em seu sistema (isso seria anormal)!
--force e -x 0 são usados, porque senão o mdadm coloca uma partição como sobressalente:
## the 20MB Partition
# mdadm --create --force -l 5 -n3 -x 0 /dev/md10 /dev/mapper/loop0p1 /dev/mapper/loop1p1 /dev/mapper/loop2p1
mdadm: array /dev/md10 started.
## the 40MB Partition
# mdadm --create --force -l 5 -n3 /dev/md11-x 0 /dev/mapper/loop0p2 /dev/mapper/loop1p2 /dev/mapper/loop2p2
mdadm: array /dev/md11 started.
## the 56MB Partition
# mdadm --create --force -l 5 -n3 /dev/md12-x 0 /dev/mapper/loop0p3 /dev/mapper/loop1p3 /dev/mapper/loop2p3
mdadm: array /dev/md12 started.
Como se parece agora:
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md12 : active raid5 dm-11[2] dm-8[1] dm-5[0]
112256 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
md11 : active raid5 dm-10[2] dm-7[1] dm-4[0]
96256 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
md10 : active raid5 dm-9[2] dm-6[1] dm-3[0]
48000 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
Info
a saída não é legal. mdstat mostra apenas dm-3 .. dm-11
, meaing /dev/mapper/loop*
mas ls -lsa /dev/disk/by-id
mostra o mapeamento atual.
Minha saída no md10 começa com dm-9 (significando / dev / mapper / loop0p1), por causa dos testes que fiz ao escrever este artigo e meu LVM usa dm- {0,1,2}.
Você também pode usar mdadm --examine --scan
ou mais informações detalhadas por meio de mdadm -Q --detail /dev/md10 /dev/md11 /dev/md12
Etapa 5
Como root crie silenciosamente sistemas de arquivos e troque
# mkswap /dev/md10 > /dev/null 2>&1
# mke2fs -m0 -Lroot /dev/md11 -F > /dev/null 2>&1
# mke2fs -m0 -Lhome /dev/md12 -F > /dev/null 2>&1
Monte seus novos raids:
# swapon /dev/md10
# mount /dev/md11 root/
# mount /dev/md12 home/
Dê uma olhada na estrutura e se / dev / md10 é uma partição swap válida:
(minha estação de trabalho também usa / dev / mapper / vg00-swap, portanto, a maior prioridade)
# \tree
.
|-- home
| '-- lost+found
|-- root
| '-- lost+found
|-- sda
|-- sdb
|-- sdc
'-- sdd
# cat /proc/swaps
Filename Type Size Used Priority
/dev/mapper/vg00-swap partition 9764856 53688 -1
/dev/md10 partition 47992 0 -2
uau, muito trabalho para o sandbox - mas é bom quando você quer brincar com o mdadm - use-o!
Agora você tem um raid5 em execução e pode testar a migração
Eu acho que existem algumas excelentes respostas aqui - teste-as cuidadosamente em seu sistema!
Última etapa
Depois de terminar seus testes, desligue seus mds e exclua seu /dev/loop*
# mdadm --stop /dev/md10
# mdadm --stop /dev/md11
# mdadm --stop /dev/md12
# kpartx -dv /dev/loop0
# kpartx -dv /dev/loop1
# kpartx -dv /dev/loop2
# kpartx -dv /dev/loop3
trazendo-o novamente após uma reinicialização
sudo su
cd ~/raidtest
# connecting the files to /dev/loop*
losetup /dev/loop0 sda
losetup /dev/loop1 sdb
losetup /dev/loop2 sdc
losetup /dev/loop3 sdd
# access to the partions in /dev/loop*
kpartx -av /dev/loop0
kpartx -av /dev/loop1
kpartx -av /dev/loop2
kpartx -av /dev/loop3
# start the raid again
mdadm --assemble /dev/md10 /dev/mapper/loop0p1 /dev/mapper/loop1p1 /dev/mapper/loop2p1
mdadm --assemble /dev/md11 /dev/mapper/loop0p2 /dev/mapper/loop1p2 /dev/mapper/loop2p2
mdadm --assemble /dev/md12 /dev/mapper/loop0p3 /dev/mapper/loop1p3 /dev/mapper/loop2p3
# show active raids
cat /proc/mdstat
Após o teste: copie o partitiontable para / dev / sdd
Seus testes correram bem?
Ok, então você tem que copiar a partição de /dev/sda
para /dev/sdd
como fizemos no sandbox com nossos arquivos:
sfdisk -d /dev/sda | sfdisk /dev/sdd
Agora você pode adicionar /dev/sdd
ao seu raid
Info
Se isso falhar, por causa de diferentes fornecedores / modelos de disco rígido, você tem que jogar com
-uS (sectors), -uB (blocks), -uC (cylinders) or -uM (megabytes)
- consulte man sfdisk
!
Alguns dos meus raidcombos da vida real onde P-ATA < - > P-ATA, mas mesmo SCSCI < - > O P-ATA funciona bem, a menos que o tamanho dos novos dispositivos seja igual ou maior que os outros discos rígidos.
O Softwareraid é muito flexível!
Atualize seu /etc/mdadm/mdadm.conf
Se você tiver um /etc/mdadm/mdadm.conf
, procure e atualize-o!
O mdadm pode ajudá-lo a exibir a sintaxe correta:
mdadm --detail --scan
Boa sorte!