Obnova RAID 1 po havárii disku

A) Nejprve zjistíme kde je problém pomocí utility smartctl.
V uvedeném příkladu je třeba druhý disk vyměnit, protože hlásí mnoho vadných sektorů.
V takovém případě se zrcadlo (RAID 1) rozpadne a na disk nelze zapisovat…

1) Pro názornost porovnáme výpis u zdravého a nemocného disku smartctl -a /dev/hda smartctl -a /dev/hdb versus smartctl -a /dev/hdc  Pozor: Pro sd disky se používá příkaz: smartctl -d ata -a /dev/sda U novější verze smartctl je to ještě jinak:  Also, a 'diff' (meld) comparison of output from the 'smartctl' command using '-T permissive'  in one instance and '-T verypermissive' in another ('-T verypermissive' tells 'smartctl'  to ignore any number of errors) yielded a difference of only the outputs' timestamps.

Bottom line: until the underlying issue is resolved (consensus thus far says it is the kernel) you can modify your commands by adding
‚the ‚-T permissive‘ (which should suffice) or the ‚-T verypermissve‘ option. For example:

smartctl -a -d ata /dev/sda

becomes

smartctl -T permissive -a -d ata /dev/sda

or

smartctl -T verypermissive -a -d ata /dev/sda

2) Dále je také možné použít příkaz  badblocks -v /dev/sdx Pozor – pokud použijeme parametr -w použije se při kontrole i zápis, takže se zničí všechna data na disku. Jinak je test jen pro čtení.  B) Vyměňíme vadný disk (hdc za hdb).  1) Nyní je třeba znovu vytvořit partisny (dle původního disku, nejlépe stejný start a end blok) Příkaz fdisk -l nám vypíše co potřebujeme vědět. Dále fdiskem vytvoříme identické partišny na novém disku.   2) Nesmíme zapomenout příkazem t nastavit parametr fd pro linux raid auto
3) Pokud je vadný disk (hdc) ještě v záruce je teoreticky možné ho reklamovat.

 

K tomu účelu se nám může hodit výpis hodiny provozu ve ve které je logována chyba
(pokud je to méně než 2 roky)
. Toto zjistíme pomocí příkazu

smartctl (viz výše).

Disk nechci posílat na reklamaci se svými daty, proto na něj pustím nějaký destruktivní test:
(např. badblocks -w … zapisuje na celý disk a zkouší to pak přečíst a parametr -v to spustí i s výpisy ;-)).
ale pozor, abych to nepustil na tom funkčním zrcadle 🙂

C) Pokračuji v obnově:
1) Nejprve je třeba třeba vědět, jaké disky byly použity pro zrcadlo. V tomto příkladu to bylo hda a hdc
(nikoliv hdb).

2) vypíšeme si co máme přidat příkazem:

df -l
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md0 248783 173554 62385 74% /
/dev/md5 5036160 32812 4747524 1% /export
/dev/md6 95271684 12566536 77865576 14% /home
none 255168 0 255168 0% /dev/shm
/dev/md2 1003960 17348 935612 2% /tmp
/dev/md3 6048196 3433044 2307920 60% /usr
/dev/md4 10080364 8769640 798660 92% /var

3) a pomocí cat /proc/mdstat přidáme ověříme co je třeba kam přidat.

Pak pomocí příkazu

mdadm /dev/md0 –add /dev/hdc1

přidáme co je třeba:

mdadm /dev/md0 –add /dev/hdc1

..začne automatická synchronizace, což zjistíme pomocí cat /proc/mdstat

Zde je záznam obnovy  a ručního přidání disků ze kterého je vše další již jasné:

[root@internet root]# cat /proc/mdstat

Personalities : [raid1]

read_ahead 1024 sectors

Event: 9

md6 : active raid1 hda8[0]

96791488 blocks [2/1] [U_]

md5 : active raid1 hdc7[2] hda7[0]

5116544 blocks [2/1] [U_]

[>………………..] recovery = 1.5% (79236/5116544) finish=44.1min s peed=1902K/sec

md3 : active raid1 hda6[0]

6144704 blocks [2/1] [U_]

md4 : active raid1 hda5[0]

10241280 blocks [2/1] [U_]

md2 : active raid1 hda3[0]

1020032 blocks [2/1] [U_]

md1 : active raid1 hda2[0]

1052160 blocks [2/1] [U_]

md0 : active raid1 hda1[0]

256896 blocks [2/1] [U_]

unused devices:

D) Po selhání disku v RAID 1 je třeba často také obnovit nastavení GRUBu. 
Tento postup je obdobně možné použít i pro obnovu grubu na jednom disku.

Nejprve pomocí příkazu fdisk -l věříme jaké disky máme. Může to být např.  hda a hdb.
Nebo
sda a sdb. A podobně. Zde je výpis postupu:

[root@internet mnt]#grub

GRUB  version 0.93  (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/hda
nebo device (hd0) /dev/sda
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0xfd

grub> 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)“…  16 sectors are embedded.
succeeded
Running „install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf“… succeeded
Done.

grub> device (hd1) /dev/hdc
nebo device (hd1) /dev/sdb

grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd1)
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 (hd1)“…  16 sectors are embedded.
succeeded
Running „install /boot/grub/stage1 (hd1) (hd1)1+16 p (hd1,0)/boot/grub/stage2 /boot/grub/grub.conf“… succeeded
Done.

grub>quit
[root@internet mnt]#

A je to hotové 🙂

Po selhání disku v RAID 1 je třeba také obnovit nastavení GRUBu.
Tento postup je obdobně možné použít i pro obnovu grubu na jednom disku.

Nejprve pomocí příkazu fdisk -l zjistíme jaké disky máme. Může to být např.  hda a hdb.
Nebo
sda a sdb. A podobně. Zde je výpis postupu:

[root@internet mnt]#grub

GRUB  version 0.93  (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/hda
nebo device (hd0) /dev/sda
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0xfd

grub> 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)“…  16 sectors are embedded.
succeeded
Running „install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf“… succeeded
Done.

grub> device (hd1) /dev/hdc
nebo device (hd1) /dev/sdb

grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd1)
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 (hd1)“…  16 sectors are embedded.
succeeded
Running „install /boot/grub/stage1 (hd1) (hd1)1+16 p (hd1,0)/boot/grub/stage2 /boot/grub/grub.conf“… succeeded
Done.

grub>quit
[root@internet mnt]#

A je to 🙂

Obnova RAID 1 po havárii disku