Šajā rakstā ir sniegts piemērs par nepieciešamajiem soļiem bojātas diska maiņai programmatūras RAID (mdadm
) sistēmā.
Svarīgi:
Visi komandu piemēri ir tikai paraugi. Jums vajadzētu pielāgot tos atbilstoši savai situācijai!
Piemēra scenārijs
Šeit ir piemēra konfigurācija:
# cat /proc/mdstat
Personības: [raid1]
md3: aktīvs raid1 sda4[0] sdb4[1]
1822442815 bloki super 1.2 [2/2] [UU]
md2: aktīvs raid1 sda3[0] sdb3[1]
1073740664 bloki super 1.2 [2/2] [UU]
md1: aktīvs raid1 sda2[0] sdb2[1]
524276 bloki super 1.2 [2/2] [UU]
md0: aktīvs raid1 sda1[0] sdb1[1]
33553336 bloki super 1.2 [2/2] [UU]
neizmantotie ierīces: <nav>
Kopā ir četras partīcijas:
- /dev/md0 kā apmaiņa
- /dev/md1 kā /boot
- /dev/md2 kā /
- /dev/md3 kā /home
Šajā gadījumā bojātais disks ir /dev/sdb
. Trūkstošs vai bojāts disks ir norādīts ar [U_]
un/vai [_U]
. Ja RAID masīvs ir vesels, tad tas parāda [UU]
.
# cat /proc/mdstat
Personības: [raid1]
md3: aktīvs raid1 sda4[0] sdb4[1](F)
1822442815 bloki super 1.2 [2/1] [U_]
md2: aktīvs raid1 sda3[0] sdb3[1](F)
1073740664 bloki super 1.2 [2/1] [U_]
md1: aktīvs raid1 sda2[0] sdb2[1](F)
524276 bloki super 1.2 [2/1] [U_]
md0: aktīvs raid1 sda1[0] sdb1[1](F)
33553336 bloki super 1.2 [2/1] [U_]
neizmantotie ierīces: <nav>
Jūs varat veikt izmaiņas programmatūras RAID sistēmā, kamēr sistēma darbojas. Ja proc/mdstat
parāda, ka disks ir bojāts, piemēram, šeit, tad jūs varat ar mūsu atbalsta tehniķiem saskaņot diska nomaiņu (skatiet zemāk).
# cat /proc/mdstat
Personības: [raid1]
md3: aktīvs raid1 sda4[0]
1822442815 bloki super 1.2 [2/1] [U_]
md2: aktīvs raid1 sda3[0]
1073740664 bloki super 1.2 [2/1] [U_]
md1: aktīvs raid1 sda2[0]
524276 bloki super 1.2 [2/1] [U_]
md0: aktīvs raid1 sda1[0]
33553336 bloki super 1.2 [2/1] [U_]
neizmantotie ierīces: <nav>
Bojāta diska noņemšana
Lai pievienotu jaunu disku, jums vispirms jānoņem vecais bojātais disks no RAID masīva. Jums tas jādara katrā atsevišķā partīcijā.
# mdadm /dev/md0 -r /dev/sdb1
# mdadm /dev/md1 -r /dev/sdb2
# mdadm /dev/md2 -r /dev/sdb3
# mdadm /dev/md3 -r /dev/sdb4
Sekojošā komanda parāda draivus, kas ir daļa no masīva:
# mdadm --detail /dev/md0
Dažos gadījumos disks var būt tikai daļēji bojāts, tāpēc, piemēram, tikai /dev/md0
ir stāvoklī [U_]
, bet visi citi ierīces ir stāvoklī [UU]
. Šajā gadījumā komanda
# mdadm /dev/md1 -r /dev/sdb2
neizdodas, jo /dev/md1
masīvs ir labā stāvoklī.
Šajā gadījumā jums jāizpilda komanda
# mdadm --manage /dev/md1 --fail /dev/sdb2
pirms pārvietot RAID stāvoklī [U_]
.
Atbalsta komandas laiku noklusēšana, lai mainītu bojāto disku
Lai mainītu bojāto disku, jums jāsaskaņo tikšanās ar atbalsta komandu iepriekš. Atbalsta komandai būs jānokļūst serverī uz īsu laiku.
Jauna diska sagatavošana
Abiem masīva draiviem ir jābūt tieši tādā pašā partīcijā. Atkarībā no partīciju tabulu tipa, ko izmantojat (MBR
vai GPT
), jums jāizmanto atbilstošas rīka kopēšanai. GPT partīcijas tabula parasti tiek izmantota draiviem, kas ir lielāki par 2TiB (piemēram, 3TB HDD ar EX4
un EX6
).
MBR/GPT rezerves kopija
Pirms MBR/GPT kopēšanas uz jaunu disku jums to ir jārezervē. Tādā veidā, ja kopēšanas laikā notiek kaut kas neparedzams, jūs joprojām varēsiet atjaunot oriģinālo.
Rezerves kopija ar 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
Atjaunošana ar MBR
sfdisk /dev/sda < sda_parttable_mbr.bak
sfdisk /dev/sdb < sdb_parttable_mbr.bak
sfdisk /dev/sdX < sdX_parttable_mbr.bak
Rezerves kopija ar 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
Atjaunošana ar 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
Diski ar GPT
Diskā ir vairākas rezerves kopijas GUID partīciju tabulai (GPT), tāpēc jums ir jāizmanto rīki, kas atbalsta GPT
(pieminēsim parted
vai GPT fdisk
), lai rediģētu tabulu. Lai viegli nokopētu partīciju tabulu uz jaunu disku, jūs varat izmantot sgdisk
rīku no GPT fdisk. Šeit ir piemērs, kā nokopēt partīciju tabulu no sda uz sdb:
sgdisk --backup=sda_parttable_gpt.bak /dev/sda
sgdisk --load-backup=sda_parttable_gpt.bak /dev/sdb
Pēc tam jums ir jāpiešķir diskiem jauna nejauša UUID
:
sgdisk -G /dev/sdb
Pēc tam jūs varat pievienot disku masīvam. Kā pēdējais solis ir nepieciešams instalēt ielādētāju.
Diski ar MBR
Jūs vienkārši varat nokopēt partīciju tabulu uz jaunu disku, izmantojot sfdisk
:
# sfdisk -d /dev/sda | sfdisk /dev/sdb
Kur /dev/sda
ir avota disks un /dev/sdb
ir mērķa disks.
(Pēc izvēles): Ja sistēma nes atpazīst partīcijas, tad no jauna ir jānolasa partīciju tabula no kodola:
# blockdev --rereadpt /dev/sdb
Dabiski jūs varat manuāli izveidot partīcijas, izmantojot fdisk
, cfdisk
vai citus rīkus. Partīcijām jābūt Linux raid autodetect (ID fd)
tipa.
Jaunā diska integrācija
Kad jūs esat noņēmuši bojāto disku un uzstādījuši jauno, jums ir jāintegrē to RAID masīvā. Jums tas ir jādara katrai partīcijai.
# mdadm /dev/md0 -a /dev/sdb1
# mdadm /dev/md1 -a /dev/sdb2
# mdadm /dev/md2 -a /dev/sdb3
# mdadm /dev/md3 -a /dev/sdb4
Jaunais disks tagad ir daļa no masīva un notiks sinhronizācija. Atkarībā no partīciju izmēra šis process var aizņemt laiku. Jūs varat pārbaudīt sinhronizācijas statusu, izmantojot cat /proc/mdstat
.
# cat /proc/mdstat
Personības: [raid1]
md3 : aktīvs raid1 sdb4[1] sda4[0]
1028096 bloki [2/2] [UU]
[==========>..........] resync = 50.0% (514048/1028096) finish=97.3min speed=65787K/sec
md2 : aktīvs raid1 sdb3[1] sda3[0]
208768 bloki [2/2] [UU]
md1 : aktīvs raid1 sdb2[1] sda2[0]
2104448 bloki [2/2] [UU]
md0 : aktīvs raid1 sdb1[1] sda1[0]
208768 bloki [2/2] [UU]
neizmantotie ierīces: <nav>
Ielādētāja iestatīšana
Lai gan diskas serijas numurs mainījās, mums ir jāģenerē jauna ierīces karte ar GRUB2:
grub-mkdevicemap -n
Ja jūs veicat šo labojumu sistēmā, kas ir ieslēgta, tad GRUB2 gadījumā pietiks, ja uz jaunā diska palaistu grub-install
. Piemēram:
grub-install /dev/sdb
Grub1 gadījumā (grub-legacy
) atkarībā no tā, kura disks bija bojāts, var būt nepieciešami vairāki soļi.
- Startējiet GRUB konsoli:
grub
- Norādiet partīciju, kur atrodas
/boot
:root (hd0,1) (/dev/sda2 = (hd0,1))
- Instalējiet ielādētāju MBR:
setup (hd0)
- Lai instalētu ielādētāju arī otrajā diskā:
- Pievienojiet otro disku kā
hd0
:device (hd0) /dev/sdb
- Atkārtojiet soļus 2 un 3 precīzi (nesmainiet komandas!)
- Pievienojiet otro disku kā
- Iziet no GRUB konsoles:
quit
Probing devices to guess BIOS drives. This may take a long time.
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> device (hd0) /dev/sdb
device (hd0) /dev/sdb
grub> root (hd0,1)
root (hd0,1)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0)
setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 26 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+26 p (hd0,1)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> quit
#
Instalētā sistēma veic arī šādas saistīšanas:
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
Tad jums ir jāveic visi iepriekš minētie GRUB instalēšanas soļi chroot
vidē. Droši varat ignorēt brīdinājumu grub-install couldn't find physical volumes
.