Používání mdadm 3.3
Od mdadm
3.3 (vydáno 2013, 3. září), pokud máte jádro 3.2+, můžete postupovat následovně:
# mdadm /dev/md0 --add /dev/sdc1
# mdadm /dev/md0 --replace /dev/sdd1 --with /dev/sdc1
sdd1
je zařízení, které chcete vyměnit, sdc1
je upřednostňované zařízení k tomu a musí být deklarováno jako náhradní na vašem poli.
--with
volba je volitelná, pokud není specifikována, použije se jakákoli dostupná náhradní.
Starší verze mdadm
Poznámka:Stále potřebujete jádro 3.2+.
Nejprve přidejte nový disk jako náhradní (nahraďte md0
a sdc1
s vaším RAID a diskovým zařízením:
# mdadm /dev/md0 --add /dev/sdc1
Poté spusťte operaci nahrazení kopie, jako je tato (sdd1
je vadné zařízení):
# echo want_replacement > /sys/block/md0/md/dev-sdd1/state
Výsledek
Systém zkopíruje všechny čitelné bloky z sdd1
na sdc1
. Pokud dojde k nečitelnému bloku, zrekonstruuje jej z parity. Jakmile je operace dokončena, bývalý náhradní (zde:sdc1
) se stane aktivním a vadný disk bude označen jako neúspěšný (F), abyste jej mohli odebrat.
Poznámka: kredit jde do frostschutz a Ansgar Esztermann kdo našel původní řešení (viz duplicitní otázka).
Starší jádra
Další odpovědi naznačují:
- Johnny 's přístup:převeďte pole na RAID6, "vyměňte" disk a poté zpět na RAID5,
- Hauke Laging Postup:krátce vyjměte disk z pole RAID5, udělejte jej součástí RAID1 (zrcadlení) s novým diskem a přidejte tuto zrcadlovou jednotku zpět do pole RAID5 (teoreticky)...
Pokud vám nevadí používat RAID-6 (2 paritní disky místo 1) a pokud používáte mdadmin 3.1.x nebo vyšší, můžete pole RAID-5 převést na RAID-6 a přidat další paritní disk. . Tím však bude pole během přestavby vystaveno stresu. A má to určité důsledky pro výkon, protože existuje více paritních disků, které je třeba aktualizovat během zápisu.
Pokud se však úspěšně dokončí, můžete svůj vadný disk ponechat na svém místě, a když nakonec selže, stále máte pro pole paritní ochranu. Myslím, že můžete pole převést z RAID6 zpět na RAID5, pokud nebudete čekat, až jej ponecháte jako RAID6.
Neznám online způsob, jak ponechat pole jako RAID-5 a vyměnit disk bez uvedení pole do degradovaného režimu, protože si myslím, že to musíte označit jako neúspěšné. Váš nápad na kopírování dd by mohl být způsob, jak toho dosáhnout.
To může být možné při splnění požadavků
- online
- Nezatěžujte žádný disk kromě toho, který se má vyměnit
Ale i když následující může fungovat, pravděpodobně žádné doporučení tohoto druhu "v knihách" nenajdete...
Nápad:
- Vyjměte STARÝ disk z pole (na krátkou chvíli):
mdadm --manage /dev/raid5 --fail /dev/OLD
- Vytvořte nové md zařízení (RAID-1) ze STARÝCH a NOVÝCH disků:
mdadm --build /dev/md42 --level=mirror --raid-devices=2 /dev/OLD /dev/NEW
- Vraťte RAID-1 zpět do pole (místo /dev/OLD):
mdadm --manage /dev/raid5 --re-add /dev/md42
Co by měl :-) stalo se:
- Pole RAID-5 synchronizuje /dev/md42. Nemělo by to trvat dlouho.
- Pole RAID-5 je normálně opět funkční (ale pomaleji).
- /dev/NEW je synchronizováno s /dev/OLD.
Sledujte průběh synchronizace (cat /proc/mdstat
nebo mdadm --monitor
). Pokud je synchronizace dokončena, vyjměte RAID-1 z RAID-5, zastavte RAID-1 a znovu přidejte /dev/NEW do RAID-5. Pokud je vše v pořádku, přepište superbloky mdraid na /dev/OLD, abyste předešli problémům:mdadm --zero-superblock
Upozornění: Rychlá synchronizace RAID-5 může fungovat pouze v případě, že používáte bitmapu. Pokud žádný nemáte, raději nejprve proveďte test s fiktivním RAID-5 (bez bitmapy). Nebo jednu přidat. Mělo by být možné alespoň přidat externí. V opačném případě může být nutné před výměnou zařízení zastavit RAID-5. Pokud byste bootovali z RAID-5, bylo by to trochu komplikované.