Конвертация RAID 10 в RAID5 mdadm на лету
#1
Собственно, возникла у меня проблема: местечко кончилось на сервере, а взять негде: нужно было срочно разместить жирную ВМ в несколько терабайт, а диски доставить - дело оказалось не быстрым. Благо, что на сервере было 4 диска в RAID10 в mdadm, а такой RAID можно сконвертировать (за что я и люблю mdadm). Итак, бэкапы сделаны, приступаем:

Код:
cat /proc/mdstat
Personalities : [raid10] [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4]
md1 : active raid10 sdd1[5] sda1[4] sdb1[1] sdc1[2]
      3899738112 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
      bitmap: 3/30 pages [12KB], 65536KB chunk

unused devices: <none>
Выполняем заветную командочку, которая разломает нам RAID10 превратив его в RAID0 из двух дисков:
Код:
mdadm --grow /dev/md1 --level=0 --raid-devices=2

Бывает, правда, печаль. Вот такая:
Код:
mdadm: /dev/md1: could not set level to raid0
Это происходит потому, что mdadm не начинает считать массив деградированным. На мой взгляд это бага, да и боюсь я такого в случае отвала диска из массива, поэтому мониторинг массивов у меня состоит из чтения /proc/mdstat и парсинга содержимого. Причину нужно смотреть в dmesg - я увидел такое:
Код:
md/raid0:md1: All mirrors must be already degraded!
md: md1: raid0 would not accept array
 В моем случае это была нода виртуализации, и я смигрировал с нёё все ВМ, заново добавил диски в массив, дождался его синхронизации и перезагрузил ноду (смигрировал гостей я ДО начала операции, а то мало ли кто что подумает Smile. Но если не поможет, то придётся отмонтировать все разделы, останавливать массив и собирать его ручками... В общем, после перезагрузки у меня массив успешно разобрался и превратился в RAID0. Осталось немножко магии - превратить его в RAID5 с добавлением удаленных дисков:
Код:
mdadm --grow /dev/md1 --level=5 --raid-devices=4 --add /dev/sda1 /dev/sdd1
Теперь остается только дождаться решейпа (конвертации) массива и можно развлекаться дальше (увеличивать LVM или файловую систему - что там у вас). Кстати, когда виртуалка станет не нужна - я сконвертирую массив обратно. Причина - просевшая скорость I/O. При последовательном чтении на 4-х терабайтных WD RE4 скорость составляет ~330 Мбайт/с в RAID 10, в а RAID 5 - в половину ниже - ~ 150 Мбайт/с. Такие дела. За процессом можно наблюдать опять же, правда, если у вас не SSD - дело долгое и лучше оставить железку в покое на так полсуток - и должна появиться похожая картинка:
Код:
# cat /proc/mdstat
Personalities : [raid10] [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4]
md1 : active raid5 sdd1[5] sdb1[3] sda1[4] sdc1[7]
      5849607168 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

unused devices: <none>
Естественно, если будет сильное I/O или сбойнет один из дисков - спасёт только реинсталл, а данные после такого удовольствия я бы восстанавливать не рискнул. Успехов в игрищах.
Возможно похожие темы ...
Тема
Автор
  /  
Последний пост
Ответы: 0
Просмотры: 189

Перейти к форуму:

Пользователи, просматривающие эту тему: 1 Гость(ей)