mdadm - Удалите диск из RAID0

Так, я хотел бы знать, возможно сделать следующее с mdadm:

  1. Я запускаю с конфигурации RAID0 на 2 дисках: sda и sdb.
  2. Я хотел бы добавить еще один диск для выстраивания, sdc и переместите все данные из sdb к нему.
  3. Разъединение sdb.

Прямо сейчас я вижу только одну опцию - я останавливаю массив, копию sdb кому: sdc с dd или любой другой инструмент копии блока и запускает массив назад.

Я пропускаю что-то? Действительно ли возможно сделать это с mdadm?

9
задан 9 July 2014 в 17:55
3 ответа

Прежде всего: тем, кто все еще верит в "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

The ultimate RAID0 hot-spare mdadm guide ;)

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" ;)

15
ответ дан 2 December 2019 в 22:26

Насколько я знаю, после установки RAID0 вы не сможете поменять один из дисков. Вы можете взять резервную копию, переключить диски и восстановить резервную копию. Я бы просто создал RAID5 на те 3 диска, которые у вас есть. Таким образом, в будущем вы можете бросить диск и все равно восстановить его.

1
ответ дан 2 December 2019 в 22:26

RAID 0 не обеспечивает резервирования.

Поэтому он не поддерживает замену горячих дисков.

.
0
ответ дан 2 December 2019 в 22:26

Теги

Похожие вопросы