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:
- Oveřím stav RAID1 pole (rozložení a synchronizaci)
- Oveřím zda se chystám odebrat správný disk
- Oveřím zda se opravdu chystám odebrat správný disk
- Odeberu disk z RAID1
- Smažu superblock informaci
- Fyzicky odeberu disk ze serveru a dám místo něj nový disk
- Zkopíruji rozložení disku (oddíly) z existujícího připojeného disku na nový
- Přidám vyměnený disk do RAID1 pole
- 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