Debian. Расширение раздела raid 1 на ходу.

Исходные данные — 2 жестких диска в RAID1, на них Debian. Возникла ситуация, когда на дисках закончилось свободное место, т.е. необходима замена HDD. Я не смог найти в инете полного и четкого описания процесса, т.е. бест практик, поэтому напишу свои действия с подробными разъяснениями.

При написании использовал материал

Если у вас есть возможность горячей замены накопителей или вы просто объединяете разделы, а так же не боитесь потерять данные, или же боитесь, но выбора нет, то ниже описан процесс увеличения разделов без перезагрузки. Если перезагрузки все же нежелательны, то моменты «перетыкания» винтов описанные ниже, вы должны делать на выключенной машине.

Итак, предположим, винты (/dev/sda и /dev/sdb)разбиты на 3 раздела —

md0 — своп
md1 — корень (ext3)
md2 — данные, да что угодно (ext3), его-то и будем увеличивать

Может быть разделов у вас будет больше, значения не имеет, главное смысл.

md0 соответствует /dev/sda1 и /dev/sdb1
md1 — /dev/sda2 и /dev/sdb2
md2 — /dev/sda3 и /dev/sdb3

1. Если вы будете выключать машину, то можно пропустить это пункт.
Помечаем как сбойные и удаляем все разделы /dev/sdb из состава наших md (еще 10 раз подумайте, может все же лучше не на ходу?)

mdadm /dev/md0 —fail /dev/sdb1 —remove /dev/sdb1
mdadm /dev/md1 —fail /dev/sdb2 —remove /dev/sdb2
mdadm /dev/md2 —fail /dev/sdb3 —remove /dev/sdb3

2.Выньте /dev/sdb и замените его на новый. Если выключали машину, то загрузитесь с оставшегося /dev/sda.

3. С помощью fdisk на новом /dev/sdb создайте нужные разделы и sdb3 большей емкости. Можно воспользоваться sfdisk, чтобы сначала клонировать разделы, а потом пересоздать sdb3, что может сэкономить время, если разделов у вас много, да и вообще так, имхо удобнее. Я подробно опишу процесс с применением sfdisk.

3.1 Скопируйте таблицу разделов

sfdisk -d /dev/sda | sfdisk /dev/sdb

3.2 Пересоздаете /dev/sdb3

fdisk /dev/sdb

удалите раздел (команда d)
создайте раздел (команда n, по умолчанию предложит максимальную емкость)
измените тип раздела на Linux raid autodetect (команда t, затем если хотите L для подсказки, нужный код — fd)
в конце — w для сохранения.

На выходе имеем те же самые разделы, что и на /dev/sda, только /dev/sdb3 больше

4. Включаем /dev/sdb в состав существующего RAID1

mdadm —add /dev/md0 /dev/sdb1
mdadm —add /dev/md1 /dev/sdb2
mdadm —add /dev/md2 /dev/sdb3

Во время процесса синхронизации, чтобы не терять времени добавьте загрузчик на /dev/sdb.

grub
grub>device (hd0) /dev/sdb
grub>root (hd0,1)
grub>setup (hd0)
grub>quit

Дождитесь окончания процесса синхронизации, наблюдать за прогрессом можно с помощью
watch cat /proc/mdstat

5. Удалите /dev/sda из состава RAID1 или выключите машину. Если выключали, то загрузитесь с /dev/sdb.

mdadm /dev/md0 —fail /dev/sda1 —remove /dev/sda1
mdadm /dev/md1 —fail /dev/sda2 —remove /dev/sda2
mdadm /dev/md2 —fail /dev/sda3 —remove /dev/sda3

6. Поменяйте /dev/sda на новый и выполните пункт 3 (/dev/sda <-> /dev/sdb)

7. При выполнении следующего этапа я бы порекомендовал несколько изменить последовательность действий в том случае, если вы не меняете жесткие диски, а работаете с изменением места на существующих.

7.1 Включайте только не измененные разделы /dev/sdа в состав существующего RAID1

mdadm —add /dev/md0 /dev/sda1
mdadm —add /dev/md1 /dev/sda2

Дождитесь окончания..
7.2 Увеличьте размер md2 до максимального

mdadm —grow /dev/md2 —size=max

7.3 Расширьте раздел md2

resize2fs /dev/md2

8. И вот только теперь включайте /dev/sda3 в состав /dev/md2. Это следует выполнить чтобы обезопасить себя от сбоя во время расширения раздела, т.к. если что-то пойдет не так вы потеряете все данные с /dev/md2 (ну естественно же есть бекап, да? ;))

mdadm —add /dev/md2 /dev/sda3

9. Далее, поставьте загрузчик на /dev/sda
grub
grub>device (hd0) /dev/sda
grub>root (hd0,1)
grub>setup (hd0)
grub>quit

Осталось дождаться выполнения синхронизации md2.

На этом все. Добавлю, что делал именно по второму пути, за исключением того, что винчестеры на ходу не перетыкал, Т.е. у меня было не занятое под разделы место в конце диска.

P.S. И еще, мне подсказали, что в случае изменения количества или нумерации md, перед перезагрузкой крайне рекомендуется делать update-initramfs чтобы избежать непредвиденных последствий.

Debian. Расширение раздела raid 1 на ходу.: 1 комментарий

  1. Спасибо за труд. Что-то из этого точно мне поможет завтра.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *