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/sdd1mdadm -f /dev/md0 /dev/sdb1mdadm -r /dev/md0 /dev/sdb1И мы снова ждем, пока реконструкция не завершится:
watch cat /proc/mdstat(И, конечно, CTRL + C для выхода из процесса)
Далее, сделайте то же самое для первого своп-раздела двух новых дисков:
mdadm -add /dev/md1 /dev/sdc2mdadm -f /dev/md0 /dev/sda2mdadm -r /dev/md0 /dev/sda2Снова ждем, пока завершится реконструкция:
watch cat /proc/mdstat(И, конечно, CTRL + C для выхода из процесса)
И последний диск:
mdadm -add /dev/md1 /dev/sdd2mdadm -f /dev/md0 /dev/sdb2mdadm -r /dev/md0 /dev/sdb2Снова ждем, пока завершится реконструкция:
watch cat /proc/mdstat(И, конечно, CTRL + C для выхода из процесса)
На этом этапе переустановите загрузчик на оба диска:
grub-install /dev/sdcgrub-install /dev/sddНа этом этапе мы имеем старый диск, исключенный из RAID, а новые диски установлены и работают. Но с используемым пространством ниже максимального, разрешенного разделом.
Затем мы продолжаем с увеличением раздела и его проверкой, как обычно для обоих томов:
mdadm —grow —raid-devices=2 /dev/md0mdadm -A —scanmdadm —grow /dev/md0 —size=maxmdadm —examine —scane2fsck -f /dev(md0resize2fs /dev/md0mdadm —grow —raid-devices=2 /dev/md1mdadm -A —scanmdadm —grow /dev/md1 —size=maxmdadm —examine —scane2fsck -f /dev/md1resize2fs /dev/md1Когда закончите, выключите ПК, отключите старые диски и перезапустите машину.
Даже если перезагрузка прошла успешно, мы реконструируем grub для безопасности, так как запуск нового диска возьмет имя старого (sda и sdb):
mv /boot/grub/device.map/boot/grub/device.map.oldgrub-mkdevicemapupdate-grub2 && grub-install /dev/sda && grub-install /dev/sdbЕсли вы хотите быть абсолютно уверены, что новая настройка RAID работает, выключите машину, отключите один из новых дисков и снова запустите. Она должна запуститься без проблем. Затем снова выключите, подключите диск и запустите. Вы можете использовать эту команду, чтобы проверить состояние RAID.
watch cat /proc/mdstat(И, конечно, CTRL + C для выхода из процесса)
Мы закончили работу, мы празднуем.
Get new posts in your inbox
No spam. Unsubscribe anytime.