Šiame straipsnyje pateikiamas pavyzdys, kaip pakeisti defektuotą diską programinėje RAID sistemoje (mdadm
).
Svarbu: Visos komandos yra tik pavyzdžiai. Prisitaikykite jas pagal poreikį!
Pavyzdinis scenarijus
Štai pavyzdinė konfigūracija:
# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sda4[0] sdb4[1]
1822442815 blocks super 1.2 [2/2] [UU]
md2 : active raid1 sda3[0] sdb3[1]
1073740664 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
524276 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
33553336 blocks super 1.2 [2/2] [UU]
unused devices: <none>
Iš viso yra keturios partcijos:
- /dev/md0 kaip swap
- /dev/md1 kaip /boot
- /dev/md2 kaip /
- /dev/md3 kaip /home
/dev/sdb
yra defektuotas diskas šiuo atveju. Nebuvimas ar defektai diske parodomi [U_]
ir/arba [_U]
. Jei RAID masyvas yra tvarkingas, tai rodo [UU]
.
# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sda4[0] sdb4[1](F)
1822442815 blocks super 1.2 [2/1] [U_]
md2 : active raid1 sda3[0] sdb3[1](F)
1073740664 blocks super 1.2 [2/1] [U_]
md1 : active raid1 sda2[0] sdb2[1](F)
524276 blocks super 1.2 [2/1] [U_]
md0 : active raid1 sda1[0] sdb1[1](F)
33553336 blocks super 1.2 [2/1] [U_]
unused devices: <none>
Pakeitimus programinėje RAID galite atlikti, kai sistema veikia. Jei proc/mdstat
rodo, kad diskas yra neveikiantis, kaip čia pavyzdyje, tuomet galite susitarti su mūsų palaikymo specialistais, kad pakeistumėte diską (žr. žemiau).
# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sda4[0]
1822442815 blocks super 1.2 [2/1] [U_]
md2 : active raid1 sda3[0]
1073740664 blocks super 1.2 [2/1] [U_]
md1 : active raid1 sda2[0]
524276 blocks super 1.2 [2/1] [U_]
md0 : active raid1 sda1[0]
33553336 blocks super 1.2 [2/1] [U_]
unused devices: <none>
Defektuoto disko pašalinimas
Prieš pridedant naują diską, pirmiausia turite pašalinti seną defektuotą diską iš RAID masyvo. Tai turite padaryti kiekvienai atskirai partijai.
# mdadm /dev/md0 -r /dev/sdb1
# mdadm /dev/md1 -r /dev/sdb2
# mdadm /dev/md2 -r /dev/sdb3
# mdadm /dev/md3 -r /dev/sdb4
Ši komanda rodo, kurie diskai yra masyvo dalis:
# mdadm --detail /dev/md0
Kai kuriuose atvejuose diskas gali būti tik dalinai defektuotas, pavyzdžiui, tik /dev/md0
yra [U_]
būsenoje, o visi kiti įrenginiai yra [UU]
būsenoje. Šiuo atveju komanda
# mdadm /dev/md1 -r /dev/sdb2
neveikia, nes /dev/md1
masyvas yra gerai.
Tokiu atveju pirmiausiai turite įvykdyti komandą
# mdadm --manage /dev/md1 --fail /dev/sdb2
kad pereitumėte į [U_]
būseną.
Susitarta su palaikymo komanda dėl defektuoto disko pakeitimo
Norėdami pakeisti defektuotą diską, turite iš anksto susitarti su palaikymo komanda. Palaikymo komanda turės trumpam išjungti serverį.
Naujo disko paruošimas
Abu masyve esantys diskai turi turėti identišką suskirstymą. Pagal skaidinių lentelės tipą (MBR
arba GPT
), turite naudoti tinkamus įrankius, kad nukopijuotumėte skaidinių lentelę. GPT skaidinių lentelė paprastai naudojama didesniems nei 2TiB dydžio diskams (pavyzdžiui, 3TB HDD disko dydžiams EX4
ir EX6
).
MBR/GPT atsarginė kopija
Prieš kopijuodami MBR/GPT į naują diską, turite atlikti atsarginę kopiją. Taip galėsite atkurti originalų disko turinį, jei kopijavimo metu įvyks klaida.
Atsarginė kopija su MBR
sfdisk --dump /dev/sda > sda_parttable_mbr.bak
sfdisk --dump /dev/sdb > sdb_parttable_mbr.bak
sfdisk --dump /dev/sdX > sdX_parttable_mbr.bak
Atkūrimas su MBR
sfdisk /dev/sda < sda_parttable_mbr.bak
sfdisk /dev/sdb < sdb_parttable_mbr.bak
sfdisk /dev/sdX < sdX_parttable_mbr.bak
Atsarginė kopija su GPT
sgdisk --backup=sda_parttable_gpt.bak /dev/sda
sgdisk --backup=sdb_parttable_gpt.bak /dev/sdb
sgdisk --backup=sdX_parttable_gpt.bak /dev/sdX
Atkūrimas su GPT
sgdisk --load-backup=sda_parttable_gpt.bak /dev/sda
sgdisk --load-backup=sdb_parttable_gpt.bak /dev/sdb
sgdisk --load-backup=sdX_parttable_gpt.bak /dev/sdX
Diskai su GPT
Diske yra kelios atsarginės GUID skaidinių lentelės (GPT) kopijos, todėl turite naudoti įrankius, kurie palaiko GPT
(pavyzdžiui, parted
arba GPT fdisk
) skaidinių lentelės redagavimui. Norint lengvai nukopijuoti skaidinių lentelę į naują diską, galite naudoti sgdisk
įrankį iš GPT fdisk. Štai pavyzdys, kaip kopijuoti skaidinių lentelę iš sda į sdb:
sgdisk --backup=sda_parttable_gpt.bak /dev/sda
sgdisk --load-backup=sda_parttable_gpt.bak /dev/sdb
Tuomet jums reikia priskirti disko naują atsitiktinį UUID
:
sgdisk -G /dev/sdb
Po to galite pridėti diską į masyvą. Kaip galutinį žingsnį, turite įdiegti paleidyklę.
Diskai su MBR
Galite paprasčiausiai nukopijuoti skaidinių lentelę į naują diską naudodami sfdisk
# sfdisk -d /dev/sda | sfdisk /dev/sdb
kur /dev/sda
yra šaltinis ir /dev/sdb
yra tikslinis diskas.
(Neprivaloma): Jei sistemoje nepastebimi skaidiniai, tuomet skaidinių lentelė turi būti perskaityta iš branduolio:
# blockdev --rereadpt /dev/sdb
Žinoma, galite rankiniu būdu kurti skaidinius naudodami fdisk
, cfdisk
ar kitus įrankius. Skaidiniai turi būti Linux raid autodetect (ID fd)
tipo.
Naujo disko integravimas
Kai jau pašalinote defektuotą diską ir įdiegėte naują, turite jį įtraukti į RAID masyvą. Tai reikia padaryti kiekvienam skaidiniui atskirai.
# mdadm /dev/md0 -a /dev/sdb1
# mdadm /dev/md1 -a /dev/sdb2
# mdadm /dev/md2 -a /dev/sdb3
# mdadm /dev/md3 -a /dev/sdb4
Naujas diskas dabar yra dalis masyvo ir bus sinchronizuotas. Pagal skaidinių dydį šis procesas gali užtrukti. Sinchronizacijos būseną galite patikrinti naudodami cat /proc/mdstat
.
# cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sdb4[1] sda4[0]
1028096 blocks [2/2] [UU]
[==========>..........] resync = 50.0% (514048/1028096) finish=97.3min speed=65787K/sec
md2 : active raid1 sdb3[1] sda3[0]
208768 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
2104448 blocks [2/2] [UU]
md0 : active raid1 sdb1[1] sda1[0]
208768 blocks [2/2] [UU]
unused devices: <none>
Paleidyklo įdiegimas
Kadangi disko serijos numeris pasikeitė, mums reikia sukurti naują įrenginių žemėlapį naudojant GRUB2:
grub-mkdevicemap -n
Jei atliekate šį tvarkymą sistemoje, kuri veikia, tada GRUB2 atveju pakanka vykdyti grub-install
komandą naujame diske. Pavyzdžiui:
grub-install /dev/sdb
Grub1 (grub-legacy
) atveju, priklausomai nuo to, kuris diskas buvo defektuotas, gali prireikti daugiau žingsnių.
- Paleiskite GRUB konsolę:
grub
- Nurodykite, kur yra
/boot
skaidinys:root (hd0,1) (/dev/sda2 = (hd0,1))
- Įdiekite paleidyklę MBR srityje:
setup (hd0)
- Įdiekite paleidyklę ant antrojo disko taip pat:
- Prijunkite antrąjį diską kaip
hd0
:device (hd0) /dev/sdb
- Pakartokite 2 ir 3 žingsnius tiksliai (nesikeiskite komandų!)
- Prijunkite antrąjį diską kaip
- Išeikite iš GRUB konsolės:
quit
Tiriame įrenginius, kad nustatytume BIOS diskus. Tai gali užtrukti ilgą laiką.
GNU GRUB versija 0.97 (640K žemesnė / 3072K aukštesnė atmintis)
[ Minimali BASH tipo eilutės redagavimo palaikymas. Pirmam žodžiui naudojant TAB klavišą
bus pateiktos galimos komandų baigčių parinktys. Kitur TAB rodo galimas
įrenginių / failų baigčių parinktis.]
grub> device (hd0) /dev/sdb
device (hd0) /dev/sdb
grub> root (hd0,1)
root (hd0,1)
Failų sistemos tipas yra ext2fs, skaidinio tipas 0xfd
grub> setup (hd0)
setup (hd0)
Tikrinama, ar "/boot/grub/stage1" egzistuoja... taip
Tikrinama, ar "/boot/grub/stage2" egzistuoja... taip
Tikrinama, ar "/boot/grub/e2fs_stage1_5" egzistuoja... taip
Vykdant "embed /boot/grub/e2fs_stage1_5 (hd0)"... Įterpta 26 sektoriai.
sėkminga
Vykdant "install /boot/grub/stage1 (hd0) (hd0)1+26 p (hd0,1)/boot/grub/stage2 /boot/grub/grub.conf"... sėkminga
Atlikta.
grub> quit
#
Įdiegtosios sistemos taip pat atlieka šiuos pakartotinus jungimus:
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
Tada visus šiuos GRUB įdiegimo žingsnius reikia atlikti chroot
aplinkoje. Saugiai galite ignoruoti įspėjimą grub-install negalėjo rasti fizinių įrenginių
.“`