Прежде всего: тем, кто все еще верит в «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
Отличное руководство по горячему резервированию 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 может иметь горячий резерв. Это называется "пользователь";)