Гид по технологиям

Создание RAID и перенос данных на RAID в Debian

• 5 min read • Linux • Обновлено 23 Nov 2025
RAID в Debian: создание и перенос данных
RAID в Debian: создание и перенос данных

Введение

Ниже — пошаговая инструкция по созданию RAID1-массивов на Debian, интеграции одного из массивов в LVM и безопасному переносу данных с диска /dev/sda на новый диск /dev/sdb. Команды и примеры вывода сохранены неизменными для удобства воспроизведения.

Важно: некоторые операции выполняются на работающей системе — используйте заглушку missing при создании массива, если текущий диск занят.

Создание RAID-массивов (/dev/md0 и /dev/md1)

Добавим /dev/sdb1 в /dev/md0 и /dev/sdb5 в /dev/md1. Так как /dev/sda1 и /dev/sda5 в данный момент используются системой, при создании массивов укажем временную метку missing:

mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1  
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb5

Проверить состояние RAID можно через:

cat /proc/mdstat

В результате вы должны увидеть два деградированных массива ([U] или [U] — массив деградирован; [UU] — массив нормальный):

server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sdb5[1]  
      4988032 blocks [2/1] [_U]  
  
md0 : active raid1 sdb1[1]  
      248896 blocks [2/1] [_U]  
  
unused devices:   
server1:~#

Создание файловой системы на /dev/md0

Файловая систему ext3 создаём на не-LVM массиве /dev/md0:

mkfs.ext3 /dev/md0

Подготовка /dev/md1 для LVM

Подготавливаем /dev/md1 как физический том LVM:

pvcreate /dev/md1

Добавляем /dev/md1 в volume group debian:

vgextend debian /dev/md1

Проверить физические тома:

pvdisplay

Пример ожидаемого вывода (состояние до окончательной синхронизации):

server1:~# pvdisplay  
  --- Physical volume ---  
  PV Name               /dev/sda5  
  VG Name               debian  
  PV Size               4.76 GB / not usable 3.24 MB  
  Allocatable           yes (but full)  
  PE Size (KByte)       4096  
  Total PE              1217  
  Free PE               0  
  Allocated PE          1217  
  PV UUID               biVzjB-5f9A-yeZx-WDgY-RWaH-d2Ek-xlp4to  
  
  --- Physical volume ---  
  PV Name               /dev/md1  
  VG Name               debian  
  PV Size               4.76 GB / not usable 3.12 MB  
  Allocatable           yes  
  PE Size (KByte)       4096  
  Total PE              1217  
  Free PE               1217  
  Allocated PE          0  
  PV UUID               rwRQ4h-Cxii-coUC-ibA0-2tV0-umae-3XC083  
  
server1:~#

Проверка группы томов:

vgdisplay

Ожидаемый вывод:

server1:~# vgdisplay  
  --- Volume group ---  
  VG Name               debian  
  System ID  
  Format                lvm2  
  Metadata Areas        2  
  Metadata Sequence No  4  
  VG Access             read/write  
  VG Status             resizable  
  MAX LV                0  
  Cur LV                2  
  Open LV               2  
  Max PV                0  
  Cur PV                2  
  Act PV                2  
  VG Size               9.51 GB  
  PE Size               4.00 MB  
  Total PE              2434  
  Alloc PE / Size       1217 / 4.75 GB  
  Free  PE / Size       1217 / 4.75 GB  
  VG UUID               4UfyCV-s32P-uZ5R-asRH-9Jjg-pkF6-d5wi32  
  
server1:~#

Обновление конфигураций mdadm и монтирования

Скопируем текущий mdadm.conf и добавим автоматически найденные массивы:

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig  
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Показать содержимое файла:

cat /etc/mdadm/mdadm.conf

В файле вы должны увидеть информацию о двух (пока деградированных) массивах:

| # mdadm.conf # # Please refer to mdadm.conf(5) for information about this file. # # by default, scan all partitions (/proc/partitions) for MD superblocks. # alternatively, specify devices to scan, using wildcards if desired. DEVICE partitions # auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes # automatically tag new arrays as belonging to the local system HOMEHOST # instruct the monitoring daemon where to send mail alerts MAILADDR root # definitions of existing MD arrays # This file was auto-generated on Wed, 19 Aug 2009 16:13:09 +0200 # by mkconf $Id$ ARRAY /dev/md0 level=raid1 num-devices=2 UUID=00d834dc:29cbe6c1:325ecf68:79913751 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8ce23a63:d17dd58b:325ecf68:79913751 |

Примечание: файл mdadm.conf используется демоном mdadm для автоматического собирания массивов при загрузке.

Обновление /etc/fstab

Замените /dev/sda1 на /dev/md0 в /etc/fstab, чтобы загрузка использовала массив /dev/md0 для /boot:

vi /etc/fstab

| # /etc/fstab: static file system information. # # proc /proc proc defaults 0 0 /dev/mapper/debian-root / ext3 errors=remount-ro 0 1 /dev/md0 /boot ext3 defaults 0 2 /dev/mapper/debian-swap_1 none swap sw 0 0 /dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 |

Аналогично замените запись в /etc/mtab (пока вручную, затем система будет поддерживать её автоматически):

vi /etc/mtab

| /dev/mapper/debian-root / ext3 rw,errors=remount-ro 0 0 tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0 proc /proc proc rw,noexec,nosuid,nodev 0 0 sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0 udev /dev tmpfs rw,mode=0755 0 0 tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0 devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 /dev/md0 /boot ext3 rw 0 0 |

Настройка GRUB для загрузки с второго диска

Откройте /boot/grub/menu.lst и добавьте fallback 1 сразу после default 0:

vi /boot/grub/menu.lst

| [...] default 0 fallback 1 [...] |

Это означает, что если первый (номер 0) образ не загрузится, загрузчик попытается второй образ.

Далее скопируйте первую секцию ядра и вставьте её перед первой существующей, поменяв root (hd0,0) на root (hd1,0):

| [...] ## ## End Default Options ## title Debian GNU/Linux, kernel 2.6.26-2-686 root (hd1,0) kernel /vmlinuz-2.6.26-2-686 root=/dev/mapper/debian-root ro quiet initrd /initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 root (hd0,0) kernel /vmlinuz-2.6.26-2-686 root=/dev/mapper/debian-root ro quiet initrd /initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode) root (hd0,0) kernel /vmlinuz-2.6.26-2-686 root=/dev/mapper/debian-root ro single initrd /initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-1-686 root (hd0,0) kernel /vmlinuz-2.6.26-1-686 root=/dev/mapper/debian-root ro quiet initrd /initrd.img-2.6.26-1-686 title Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode) root (hd0,0) kernel /vmlinuz-2.6.26-1-686 root=/dev/mapper/debian-root ro single initrd /initrd.img-2.6.26-1-686 ### END DEBIAN AUTOMAGIC KERNELS LIST |

root (hd1,0) соответствует /dev/sdb, который уже задействован в RAID. После перезагрузки система попытается загрузиться с RAID; если это не удастся, сработает fallback на /dev/sda.

Обновление initramfs

Обновите initramfs, чтобы он содержал актуальные настройки RAID/LVM:

update-initramfs -u

Перенос данных на RAID (/dev/md1 и /dev/md0)

После обновления конфигураций можно переносить данные.

Перенос LVM томов с /dev/sda5 на /dev/md1

Переносим содержимое физического тома /dev/sda5 на /dev/md1:

pvmove /dev/sda5 /dev/md1

Операция может занять значительное время — дождитесь её завершения.

После завершения удаляем /dev/sda5 из volume group debian:

vgreduce debian /dev/sda5

И говорим системе больше не использовать /dev/sda5 как PV:

pvremove /dev/sda5

Проверяем pvdisplay — теперь в списке должен остаться только /dev/md1:

server1:~# pvdisplay  
  --- Physical volume ---  
  PV Name               /dev/md1  
  VG Name               debian  
  PV Size               4.76 GB / not usable 3.12 MB  
  Allocatable           yes (but full)  
  PE Size (KByte)       4096  
  Total PE              1217  
  Free PE               0  
  Allocated PE          1217  
  PV UUID               rwRQ4h-Cxii-coUC-ibA0-2tV0-umae-3XC083  
  
server1:~#

Добавление /dev/sda5 в RAID-массив /dev/md1

Сменим тип раздела /dev/sda5 на Linux raid autodetect и добавим его в массив /dev/md1:

fdisk /dev/sda

Пример интерактивной сессии:

server1:~# fdisk /dev/sda

Command (m for help): <– t
Partition number (1-5): <– 5
Hex code (type L to list codes): <– fd
Changed system type of partition 5 to fd (Linux raid autodetect)

Command (m for help): <– w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
server1:~#

Добавляем раздел в массив:

mdadm --add /dev/md1 /dev/sda5

Проверяем прогресс синхронизации:

cat /proc/mdstat

Пример вывода во время восстановления:

server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sda5[2] sdb5[1]  
      4988032 blocks [2/1] [_U]  
      [======>..............]  recovery = 33.4% (1672128/4988032) finish=0.5min speed=104508K/sec  
  
md0 : active raid1 sdb1[1]  
      248896 blocks [2/1] [_U]  
  
unused devices:   
server1:~#

Вы можете использовать:

watch cat /proc/mdstat

чтобы следить за прогрессом в реальном времени. Нажмите CTRL+C, чтобы выйти из watch.

Дождитесь окончания синхронизации — после этого массив /dev/md1 должен быть в состоянии [UU]:

server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sda5[0] sdb5[1]  
      4988032 blocks [2/2] [UU]  
  
md0 : active raid1 sdb1[1]  
      248896 blocks [2/1] [_U]  
  
unused devices:   
server1:~#

Монтирование массива /dev/md0 и копирование /boot

Создаём точку монтирования и монтируем /dev/md0:

mkdir /mnt/md0
mount /dev/md0 /mnt/md0

Проверим, что массив смонтирован:

mount

Пример вывода:

server1:~# mount  
/dev/mapper/debian-root on / type ext3 (rw,errors=remount-ro)  
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)  
proc on /proc type proc (rw,noexec,nosuid,nodev)  
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)  
udev on /dev type tmpfs (rw,mode=0755)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)  
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)  
/dev/md0 on /boot type ext3 (rw)  
/dev/md0 on /mnt/md0 type ext3 (rw)  
server1:~#

Копируем содержимое /boot на /dev/md0 (смонтирован в /mnt/md0):

cd /boot  
cp -dpRx . /mnt/md0

Важно: ключи cp (-dpRx) сохраняют разрешения, символьные ссылки и рекурсивно копируют содержимое. Проверьте, что файлы скопированы корректно перед перезагрузкой.

Контрольные проверки и критерии приёмки

Критерии приёмки:

  • /proc/mdstat показывает [UU] для /dev/md1 и как минимум [_U] для /dev/md0 до перезагрузки; после добавления /dev/sda1 и синхронизации — [UU] для обоих.
  • /boot доступен с /dev/md0: запись в /etc/fstab и /etc/mtab корректны.
  • grub настроен с fallback и имеет запись root (hd1,0).
  • initramfs обновлён (update-initramfs прошёл без ошибок).
  • После перезагрузки система загружается с RAID; при отказе — с fallback на первый диск.

Шпаргалка — основные команды

  • Создание RAID: mdadm –create /dev/mdX –level=1 –raid-disks=2 missing /dev/sdY
  • Проверка статуса: cat /proc/mdstat
  • Добавление PV: pvcreate /dev/md1
  • Расширение VG: vgextend debian /dev/md1
  • Перенос PV: pvmove /dev/sda5 /dev/md1
  • Удаление из VG: vgreduce debian /dev/sda5
  • Удаление PV: pvremove /dev/sda5
  • Добавление раздела в RAID: mdadm –add /dev/md1 /dev/sda5
  • Обновить initramfs: update-initramfs -u

Частые ошибки и рекомендации

  • Ошибка: ioctl() re-read partition table failed (Device or resource busy). Решение: перезагрузка потребуется для применения изменений таблицы разделов, если kernel продолжает использовать старую таблицу.
  • Если /boot не монтируется после перезагрузки — проверьте /etc/fstab, UUID и записи mdadm.conf.
  • Не добавляйте активные корневые разделы в массив без fallback-стратегии и актуальной копии загрузчика на втором диске.

Ролевой чеклист для команды

Администратор (перед началом):

  • Сделать полную резервную копию /boot и LVM-снимок, если возможно.
  • Проверить свободное место и целостность диска /dev/sdb.

Оператор (выполнение):

  • Выполнить mdadm –create с missing и проверить /proc/mdstat.
  • Запустить pvcreate, vgextend и pvmove по плану.
  • Добавить разделы в RAID и дождаться синхронизации.

Проверяющий (после изменений):

  • Убедиться, что /boot присутствует на /dev/md0 и файлы корректны.
  • Выполнить перезагрузку и проверить загрузку с RAID; при проблемах вернуть из резервной копии.

Резюме

Мы создали два RAID1-массива, подготовили один из них для использования под LVM, скорректировали конфигурацию mdadm и загрузчика, перенесли LVM-данные с /dev/sda5 на /dev/md1 и скопировали /boot на /dev/md0. Ключевые моменты — проверять /proc/mdstat, дождаться синхронизации массивов и обновить initramfs перед перезагрузкой.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро