Так, я хотел бы знать, возможно сделать следующее с mdadm:
sda
и sdb
.sdc
и переместите все данные из sdb
к нему.sdb
.Прямо сейчас я вижу только одну опцию - я останавливаю массив, копию sdb
кому: sdc
с dd
или любой другой инструмент копии блока и запускает массив назад.
Я пропускаю что-то? Действительно ли возможно сделать это с mdadm?
Прежде всего: тем, кто все еще верит в "RAID0 не имеет горячей замены". У него может быть ручной запасной, сделанный человеком, который понимает уровни RAID и mdadm. mdadm - программный RAID, так что он может сделать много интересного.
Кредиты на Zoredache для этой идеи!
Если время простоя приемлемо, вы всегда можете просто сделать блочную копию диска с dd и собрать массив, mdadm сделает все в порядке.
RAID0 -> RAID4 -> RAID0
Итак, если вы не помните RAID4, то все просто. Он имеет блок четности, но в отличие от RAID5 не распределяется по массиву, а находится на ОДНОМ диске. В том-то и дело, что это важно, и именно по этой причине RAID5 не будет работать.
Что вам понадобится: еще два диска того же размера, что и диск, который вы хотите заменить.
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]
Done. Сейчас мы в полной безопасности - все данные из 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
Aaaaaa и bang!
md0 : active raid0 sde[4] sdc[1]
2096128 blocks super 1.2 512k chunks
Done. Давайте посмотрим на контрольную сумму md5.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
Еще вопросы? Итак, у RAID0 может быть горячий запасной. Он называется "user" ;)
Насколько я знаю, после установки RAID0 вы не сможете поменять один из дисков. Вы можете взять резервную копию, переключить диски и восстановить резервную копию. Я бы просто создал RAID5 на те 3 диска, которые у вас есть. Таким образом, в будущем вы можете бросить диск и все равно восстановить его.