Výměna vadného disku v RAID1

Jeden disk v RAID1 vykazuje chyby ve čtení, potřebuje výměnu.

Warning

U všech příkazů platí: dvakrát měř, jednou řež!

Cíl

Výměna disku v RAID1, který vykazuje chyby (nahlášeno smartctl)

Postup

Jak postupovat:

  1. Oveřím stav RAID1 pole (rozložení a synchronizaci)
  2. Oveřím zda se chystám odebrat správný disk
  3. Oveřím zda se opravdu chystám odebrat správný disk
  4. Odeberu disk z RAID1
  5. Smažu superblock informaci
  6. Fyzicky odeberu disk ze serveru a dám místo něj nový disk
  7. Zkopíruji rozložení disku (oddíly) z existujícího připojeného disku na nový
  8. Přidám vyměnený disk do RAID1 pole
  9. Počkat na synchronizaci pole

1. Základní příprava disku

Předpokládám, že mám RAID1 nastaven takto (pole md0 a md1). Pole md0 se skládá z oddílů /dev/sda1 a /dev/sdb1, pole md1 z /dev/sda2 a /dev/sdb2.

Stav si vypíšeme:

$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdb2[1] sda2[0]
      1952893952 blocks super 1.2 [2/2] [UU]
      bitmap: 3/15 pages [12KB], 65536KB chunk

md0 : active raid1 sdb1[1] sda1[0]
      486400 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Smartctl má informaci, že disk vykazuje chyby ve čtení:

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed: read failure       90%     34106         5925108
# 2  Short offline       Completed: read failure       90%     34082         5925108
# 3  Short offline       Completed: read failure       60%     34058         5925108

2., 3. Ověřit, zda se chystám odebrat správný disk

Smartctl poslal sériové číslo disku, který je vadný. Pomocí příkazu zjistím, který z disků to je:

$ udevadm info --query=all --name=/dev/sdX | grep SERIAL
E: ID_SERIAL=WDC_WD2005FBYZ-01YCBB3_WD-WMC6N0R8CSFJ
E: ID_SERIAL_SHORT=WD-WMC6N0R8CSFJ

4. Odebrat disk z RAID1

Pokud víme, že budeme odebírat disk X, označíme ho jako fail pomocí:

# mdadm --manage /dev/mdX --fail /dev/sdaX

a pak ho můžeme z pole odebrat:

# mdadm --manage /dev/mdX --remove /dev/sdaX

5. Vymazání superbloku

Člen (member) byl odebrán, ale stále bude trvat na tom, že je součástí pole, protože dřívější konfigurace pole RAID je stále uložena na jednotce v jejím superbloku. Každá členská jednotka pole má svůj vlastní superblok pro ukládání informací o poli RAID. Tyto informace musíme vymazat.

# mdadm --zero-superblock /dev/sdX

Note

Toto je veledůležitý krok, který se snadno přehlédne. mdadm automaticky nevymaže superblok členské jednotky při jejím vyjmutí z pole. Tento úkon musíte provést ručně. Pokud je tato členská jednotka nainstalována v jiném počítači nebo používána jako normální jednotka ve stejném počítači, pokud není její superblok vymazán pomocí mdadm (nebo gparted s úplným obnovením oddílu), pokusí se jakákoli stávající instalace mdadm automaticky sestavit jednotku do jejího předchozího pole. To může způsobit problémy a "ouha co se stalo" stavy. Vymazání superbloku pomocí mdadm je nejbezpečnější způsob, jak odstranit informace o RAID z odebrané členské jednotky.

6. Fyzické odebrání disku

Fyzicky disk odeberu ze serveru a dám místo něj nový disk.

7. Zkopíruji rozdělení disku z prvního člena pole na nový disk

Zkopíruji tabulku rozdělení disku na cílový disk:

# sfdisk -d /dev/sdB | sfdisk /dev/sdX

Ověřím, zda je ok:

# fdisk -l /dev/sdX

Pokud jsem do serveru dal disk, který už někdy byl součástí pole jinde, vymažu superbloky z tohoto disku:

# mdadm --zero-superblock /dev/sdX1
# mdadm --zero-superblock /dev/sdX2

8. Přidání vyměneného disku do RAID1 pole

Nyní můžu přidat oddíly zpět do pole:

# mdadm -–manage /dev/md0 -–add /dev/sdX1
# mdadm -–manage /dev/md1 -–add /dev/sdX2

9. Počkat na synchronizaci pole

Můžu sledovat proces synchzonizace pomocí:

watch cat /proc/mdstat