Перш за все: тим, хто все ще вірить у "RAID0 немає гарячих запасних". Це може бути запасний посібник, зроблений людьми, які розуміють рівні RAID та mdadm. mdadm - це програмний RAID, тому він може зробити багато цікавого.
Кредити Zoredache за ідею!
Отже, ситуація:
- у вас є масив RAID0 з двох дисків
- ви хочете замінити один з них без простою масиву
Якщо час простою прийнятний, ви завжди можете просто зробити блок-копію диска з dd і знову зібрати масив, mdadm зробить добре.
Рішення: використовувати RAID4 як проміжний розчин
RAID0 -> RAID4 -> RAID0
Отже, якщо ви не пам'ятаєте RAID4, це просто. Він має блок паритету, але на відміну від RAID5, він не розподіляється по масиву, а знаходиться на одному диску. Це справа, це важливо, і це є причиною, що RAID5 не працюватиме.
Що вам знадобиться: ще два диски такого ж розміру, як диск, який ви хочете замінити.
Навколишнє середовище:
- Ubuntu 14.04 Thrusty Thar
- mdadm - v3.2.5 - 18 травня 2012 року
- / dev / sdb - почніть з нього, замінить його
- / dev / sdc - почніть з цього
- / dev / sdd - буде використовуватися тимчасово
- / dev / sde - використовуватиметься замість sdb
Кінцевий посібник з mdadm з гарячим запасом RAID0;)
sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]
md0 : active raid0 sdc[1] sdb[0]
2096128 blocks super 1.2 512k chunks
Ми створили масив raid0, це виглядає солодко.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
Це наш контрольний пункт - якщо навіть один біт буде відрізнятися в результаті /dev/md0
- ми не змогли.
sudo mdadm /dev/md0 --grow --level=4
md0 : active raid4 sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
Отже, ми виросли наш масив до RAID4. Диск парності ми ще не додали, тому зробимо це. Зростання буде миттєвим - немає чого перераховувати чи перерахувати.
sudo mdadm /dev/md0 -a /dev/sdd
md0 : active raid4 sdd[3] sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[===>.................] recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec
Ми додали sdd
як диск парності. Це важливо пам’ятати - порядок дисків у першому ряду не синхронізований із малюнком у другому ряду! [UU_]
sdd
відображається першим, але насправді він останній, і містить не дані, а паритет.
sudo mdadm /dev/md0 -f /dev/sdb
md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
Ми зробили наш диск sdb несправним, щоб видалити його наступними кроками.
sudo mdadm --detail /dev/md0
State : clean, degraded
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
0 8 16 - faulty spare /dev/sdb
Деталі показують нам видалення першого диска, і тут ми можемо побачити справжній порядок дисків у масиві. Важливо відстежувати диск з паритетом, ми не повинні залишати його в масиві, повертаючись до RAID0.
sudo mdadm /dev/md0 -r /dev/sdb
md0 : active raid4 sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
sdb
повністю видалений, може бути відібраний.
sudo mdadm /dev/md0 -a /dev/sde
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
[==>..................] recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec
Ми додали заміну для нашого диска sdb. І ось ми ідемо: тепер дані sdb відновлюються за допомогою парності. Sweeeeet
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]
Зроблено. Зараз ми повністю безпечні - всі дані з sdb відновлюються, і тепер нам потрібно видалити sdd (пам'ятайте, він має паритет).
sudo mdadm /dev/md0 -f /dev/sdd
md0 : active raid4 sde[4] sdd[3](F) sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
Зроблено sdd несправним.
sudo mdadm /dev/md0 -r /dev/sdd
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
Видалено sdd з нашого масиву. Ми готові знову стати RAID0.
sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[=>...................] reshape = 7.0% (73728/1048064) finish=1.5min speed=10532K/sec
Аааааа і нахил!
md0 : active raid0 sde[4] sdc[1]
2096128 blocks super 1.2 512k chunks
Зроблено. Давайте розглянемо контрольну суму md5.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
Є ще запитання? Таким чином RAID0 може мати гарячу запасну частину. Це називається "користувач";)