RAID, Debian · 5 min read · Nov 14, 2025

Расширение программного RAID на Debian путем миграции на новые большие жесткие диски

Настройка: два физических диска RAID 1 (зеркало) будут заменены на два более емких диска, мы сделаем “горячую” замену прямо из работающей операционной системы, без необходимости загружаться с внешнего загрузочного носителя. Этот гид был протестирован на дистрибутивах Debian 6, 7, 8 как 32, так и 64 бит.

Мы предполагаем, что два диска разделены на корневой и своп-разделы и что эти два раздела составляют два устройства RAID md0 и md1:

  • Разделы sda1 и sdb1, которые составляют объем md0 (корень)
  • Разделы sda2 и sdb2, которые составляют объем md1 (своп)

Сначала сделайте резервную копию всех ваших данных, даже если гид был протестирован несколько раз, неудача все еще возможна… Мы предоставляем (на мой взгляд, лучшее решение) для замены, мы отключаем один из двух старых дисков с выключенной машиной, затем подключаем один новый временный диск, затем повторно синхронизируем, так что RAID будет функционировать и один диск (с RAID в деградированном режиме), и вы все еще сможете восстановить функционирующий RAID, если что-то пойдет не так. Для этого просто введите эти команды после замены полного диска на пустой:

sfdisk -d /dev/hd source | sfdisk —force /dev/hd empty  
mdadm —zero-superblock /dev/hd empty  
mdadm —add /dev/md(raid) /dev/hd(empty)

Повторите последние две строки для каждого RAID / раздела в системе

(например:

mdadm -add /dev/md0 /dev/sdb1 

затем

mdadm -add /dev/md1 /dev/sdb2

и т.д..

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

Очевидно, вам нужно дождаться окончания процесса реконструкции, который можно контролировать с помощью:

watch cat / pro / mdstat

(И, конечно, CTRL + C для выхода из процесса)

Выключите машину в этот момент, добавьте два новых диска, которые станут соответственно sdc и sdd, затем запустите сервер и выполните команду:

fdisk -l

Результат должен выглядеть примерно так:

Диск /dev/sda: ……MB , ………….Bytes  
… heads, …sectors/track , ….. cylinders  
I/O size (minimum/optimal): 512 bytes / 512 bytes  
Диск: идентификатор : ………..
Устройство загрузки Начало Конец Блоки Id   Система
/dev/sda2        970           1044 602437+ fd   Linux raid autodetect
/dev/sda2            1 969 7783461 fd   Linux raid autodetect 
……
/dev/sdb1     *       1 969 7783461 fd   Linux raid autodetect 
/dev/sdb2            970        1044 602437+ fd   Linux raid autodetect 
……
Диск /dev/sdc: …Mb, …….Bytes
……
Диск /dev/sdd: …Mb, …….Bytes
……
Диск /dev/md0: …Mb, …….Bytes
…...
Диск /dev/md1: …Mb, …….Bytes

Теперь введите:

fdisk /dev/sdc

мы создаем новый раздел с помощью команды n,

мы выбираем p основной раздел,

мы выбираем номер раздела ( 1,2,3 и т.д.),

мы выбираем начальный цилиндр ( 1),

мы выбираем размер основного раздела, набрав символ +, за которым следует размер в ГБ и GB (например: +480GB)

мы делаем его загрузочным с помощью команды a, выбрав тот же номер раздела.

мы изменяем идентификатор раздела на “ fd “ (Linux Raid Autodetect) с помощью t, и записываем в качестве шестнадцатеричного кода просто “ fd

Затем мы повторяем ВСЕ команды для второго раздела (раздел будет свопом).

Мы сохраним изменения с помощью w.

Очевидно, обращайте внимание на размер разделов. Лучшее решение — вычесть текущий размер свопа из общего свободного пространства, чтобы создать рабочий раздел с максимально возможным пространством.

Теперь мы выполним точно такие же операции на диске SDD, убедившись, что создаем тот же раздел с теми же размерами, что и ранее.

На этом этапе мы производим обмен между первым диском “полным” и первым новым диском, добавляя последний в качестве резервного в RAID:

mdadm -add /dev/md0 /dev/sdc1

Затем мы должны проверить состояние диска RAID, оно должно быть таким:

md0: активный RAID 1 sdc1[S] sda1[2] sdb1[3]
 ………blocks super 1.2 [2/2] [UU]

Затем мы помещаем оригинальный диск:

mdadm -f /dev/md0 /dev/sda1

и удаляем его из RAID:

mdadm -r /dev/md0 /dev/sda1

Теперь мы проверяем, что реконструкция началась автоматически, и ждем, пока она завершится, снова контролируя с помощью:

watch cat /proc/mdstat

(И, конечно, CTRL + C для выхода из процесса)

В конце мы устанавливаем загрузчик (grub) на новый диск (/ dev / sdc):

grub-install /dev/sdc

Тот же процесс просто нужно повторить для каждого из системных разделов:

mdadm -add /dev/md0 /dev/sdd1
mdadm -f /dev/md0 /dev/sdb1
mdadm -r /dev/md0 /dev/sdb1

И мы снова ждем, пока реконструкция не завершится:

watch cat /proc/mdstat

(И, конечно, CTRL + C для выхода из процесса)

Далее, сделайте то же самое для первого своп-раздела двух новых дисков:

mdadm -add /dev/md1 /dev/sdc2
mdadm -f /dev/md0 /dev/sda2
mdadm -r /dev/md0 /dev/sda2

Снова ждем, пока завершится реконструкция:

watch cat /proc/mdstat

(И, конечно, CTRL + C для выхода из процесса)

И последний диск:

mdadm -add /dev/md1 /dev/sdd2
mdadm -f /dev/md0 /dev/sdb2
mdadm -r /dev/md0 /dev/sdb2

Снова ждем, пока завершится реконструкция:

watch cat /proc/mdstat

(И, конечно, CTRL + C для выхода из процесса)

На этом этапе переустановите загрузчик на оба диска:

grub-install /dev/sdc
grub-install /dev/sdd

На этом этапе мы имеем старый диск, исключенный из RAID, а новые диски установлены и работают. Но с используемым пространством ниже максимального, разрешенного разделом.

Затем мы продолжаем с увеличением раздела и его проверкой, как обычно для обоих томов:

mdadm —grow —raid-devices=2 /dev/md0
mdadm -A —scan
mdadm —grow /dev/md0 —size=max
mdadm —examine —scan
e2fsck -f /dev(md0
resize2fs /dev/md0
mdadm —grow —raid-devices=2 /dev/md1
mdadm -A —scan
mdadm —grow /dev/md1 —size=max
mdadm —examine —scan
e2fsck -f /dev/md1
resize2fs /dev/md1

Когда закончите, выключите ПК, отключите старые диски и перезапустите машину.

Даже если перезагрузка прошла успешно, мы реконструируем grub для безопасности, так как запуск нового диска возьмет имя старого (sda и sdb):

mv /boot/grub/device.map/boot/grub/device.map.old
grub-mkdevicemap
update-grub2 && grub-install /dev/sda && grub-install /dev/sdb

Если вы хотите быть абсолютно уверены, что новая настройка RAID работает, выключите машину, отключите один из новых дисков и снова запустите. Она должна запуститься без проблем. Затем снова выключите, подключите диск и запустите. Вы можете использовать эту команду, чтобы проверить состояние RAID.

watch cat /proc/mdstat

(И, конечно, CTRL + C для выхода из процесса)

Мы закончили работу, мы празднуем.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.