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

11

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

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

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

Я что-то пропустил? Возможно ли это сделать с помощью mdadm?

maniaque
источник
Вы можете создать sdb для временного зеркала, а затем синхронизировать sdc с ним в фоновом режиме - это уменьшило время простоя, хотя я не делал этого как новичок на вашем месте.
Петер - Восстановить Монику
Я не новичок точно :) Можете ли вы рассказать мне больше о временном зеркале? Это mdadm особенность?
маньяк
Нет, это простая функция рейда. Я подумал о временном массиве raid1, который мог бы получить место sdb в вашем массиве raid1. Пока вы синхронизируете sdb с sdc, вы также можете использовать его как часть вашего массива raid0.
Петер - Восстановить Монику
Итак, я вас правильно понимаю? 1. Стоп массив. 2. Создайте еще один массив RAID1 с sbd и sdc. 3. И как я могу попросить mdadm, чтобы запустить мой RAID0 с md1 вместо sdb?
маньяк
Много не исследовал, но, похоже, вы должны быть в состоянии вырасти из RAID0 -> RAID5. Затем вернитесь к RAID0.
Зоредаче

Ответы:

17

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

maniaque
источник
1

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

joeg1ff
источник
Что ж, я знаю, как сделать то, о чем я говорю, с RAID5 - я могу добавить новый диск в массив (как запасной), затем отметить диск, который мне нравится вывозить, как неисправный и удалить его из массива, после чего вытереть суперблок. Но меня интересует
такая
@maniaque Это называется RAID 0, потому что ноль - это количество RAID, которое вы получаете. Абсолютно ничего важного никогда не должно быть помещено на RAID 0.
Майкл Хэмптон
@MichaelHampton Я думаю, что вы имеете в виду избыточность, а не RAID, но ваше утверждение на 100% верно.
joeg1ff
@MichaelHampton Пожалуйста, смотрите мой ответ ниже :)
маньяк
0

RAID 0 не обеспечивает избыточность.

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

user2743554
источник
1
Просто посмотрите ниже, пожалуйста. Нет ничего невозможного, когда вы понимаете уровни RAID;)
маньяк