Tím se disk jednoduše zahodí do pole, aniž by se s ním ve skutečnosti cokoliv dělalo, tj. je členem pole, ale není v něm aktivní. Ve výchozím nastavení se tím změní na náhradní:
sudo mdadm /dev/md0 --add /dev/sdb1
Pokud máte náhradní, můžete jej zvětšit vynucením růstu počtu aktivních disků pro pole. Se 3 disky a 2 očekává se aktivní, budete muset zvýšit počet aktivních na 3.
mdadm --grow /dev/md0 --raid-devices=3
Ovladač raidového pole si všimne, že máte „krátký“ disk, a pak se podívá po náhradním. Najde-li náhradní, začlení jej do pole jako aktivní disk. Otevřete náhradní terminál a nechte v něm běžet tento poněkud hrubý příkazový řádek, abyste měli přehled o průběhu opětovné synchronizace. Ujistěte se, že jej napíšete jako jeden řádek nebo použijte znak konce řádku (\), a jakmile přestavba skončí, zadejte do terminálu Ctrl-C.
while true; do sleep 60; clear; sudo mdadm --detail /dev/md0; echo; cat /proc/mdstat; done
Vaše pole bude mít nyní dva aktivní disky, které jsou synchronizované, ale protože zde nejsou 3 disky, nebude 100% čisté. Odeberte vadnou jednotku a poté změňte velikost pole. Všimněte si, že --grow
flag je trochu nesprávné pojmenování – může znamenat buď růst nebo zmenšovat:
sudo mdadm /dev/md0 --fail /dev/{failed drive}
sudo mdadm /dev/md0 --remove /dev/{failed drive}
sudo mdadm --grow /dev/md0 --raid-devices=2
Pokud jde o chyby, problém s propojením s jednotkou (tj. s portem PATA/SATA, kabelem nebo konektorem jednotky) nestačí ke spuštění převzetí služeb při selhání horké zálohy, protože jádro se obvykle přepne na jiné „dobré“ disk, zatímco resetuje odkaz na "špatný" disk. Vím to, protože mám pole se 3 disky, 2 horké, 1 náhradní, a jeden z disků se nedávno rozhodl trochu posouvat v protokolech. Když jsem testoval všechny disky v poli, všechny 3 prošly "dlouhou" verzí testu SMART, takže to není problém s plotnami, mechanickými součástmi nebo řadičem na desce - což zanechává ochablý spojovací kabel nebo špatný SATA port. Možná právě toto vidíte. Zkuste přepnout disk na jiný port základní desky nebo použít jiný kabel a uvidíte, zda se to zlepší.
Pokračování:Dokončil jsem své rozšíření zrcadlení na 3 disky, selhal a odstranil nefunkční disk z pole MD, vyměnil kabel za nový (základní deska to podporuje) a znovu přidal disk. Po opětovném přidání okamžitě spustilo novou synchronizaci disku. Zatím se v protokolu neobjevila jediná chyba i když je pohon silně využíván. Takže ano, kabely disku se mohou odlupovat.
Měl jsem úplně stejný problém a v mém případě jsem zjistil, že aktivní raid disk trpěl chybami čtení při synchronizaci. Nový disk byl proto úspěšně synchronizován jako novější, a proto byl označen jako náhradní.
Možná budete chtít zkontrolovat chyby ve svém /var/log/messages a dalších systémových protokolech. Kromě toho může být také dobré zkontrolovat stav SMART vašeho disku:
1) Spusťte krátký test:
"smartctl -t short /dev/sda"
2) Zobrazte výsledky testu:
"smartctl -l selftest /dev/sda"
V mém případě to vrátilo něco takového:
===ZAČÁTEK ČTENÍ SEKCE SMART DAT ===
Číslo revize struktury protokolu SMART Self-test 1
Num Test_Description Stav Zbývající životnost (hodiny) LBA_of_first_error
1 Rozšířené offline Dokončeno:90% selhání čtení 7564 27134728
2 Krátké offline Dokončeno:selhání čtení 90 % 7467 1408449701
Musel jsem nabootovat živé distro a ručně zkopírovat data z vadného disku na nový (aktuálně „náhradní“).
Měl jsem úplně stejný problém a vždy jsem si myslel, že můj druhý disk, který jsem chtěl znovu přidat do pole, měl chyby. Ale byl to můj původní disk s chybami čtení.
Můžete to zkontrolovat pomocí smartctl -t short /dev/sdX
a výsledky uvidíte o několik minut později pomocí smartctl -l selftest /dev/sdX
. U mě to vypadalo takto:
=== START OF READ SMART DATA SECTION ===
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 20% 25151 734566647
Snažil jsem se je opravit pomocí tohoto návodu. To byla zábava :-). Vím, že jste zkontrolovali chyby na obou discích, ale myslím, že váš problém je v tom, že disk, který je stále v md poli, má chyby čtení, takže přidání druhého disku selže.
Aktualizovat
Dále byste měli spustit smartctl -a /dev/sdX
Pokud vidíte Current_Pending_Sector> 0, něco je špatně
197 Current_Pending_Sector 0x0012 098 098 000 Old_age Always - 69
Pro mě to byl určitě problém, že jsem vyjmul disk z raidu jen kvůli testování a resynchronizaci nebylo možné provést kvůli selháním čtení. Synchronizace se v polovině cesty přerušila. Když jsem zkontroloval svůj disk, který byl stále v raidovém poli, smartctl hlásil problémy.
Mohl jsem je opravit pomocí manuálu výše a viděl jsem snížený počet čekajících sektorů. Ale bylo jich mnoho a je to dlouhý a nudný postup, takže jsem použil svou zálohu a obnovil data na jiném serveru.
Protože jste neměli příležitost použít SMART, myslím, že váš autotest tyto poškozené sektory neukázal.
Pro mě je to poučení:Zkontrolujte své disky, než jeden z pole odeberete.