Итак, я хотел бы знать, с помощью 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 восстанавливается с использованием четности. Милая.
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 может быть «горячий» резерв. Это называется "пользователь";)
Насколько мне известно, после настройки RAID0 вы не можете изменить один из дисков. Вы можете сделать резервную копию, переключить диски и восстановить резервную копию. Я бы просто RAID5 на тех 3 дисках, которые у вас есть. Таким образом, в будущем вы сможете сбросить диск и при этом восстановить его.
RAID 0 не обеспечивает избыточности.
Таким образом, он не поддерживает замену горячего диска.