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

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

• 6 min read • Системное администрирование • Обновлено 23 Nov 2025
Создание RAID‑массивов и перенос данных
Создание RAID‑массивов и перенос данных

Введение

В этой инструкции описан практический пример создания двух RAID1‑массивов на существующем сервере, один «не‑LVM» для /boot и один для LVM‑томов. Описанные действия сохраняют текущую загрузочную систему, позволяют постепенно переместить данные и затем восстановить зеркалирование на второй диск. Краткие определения:

  • RAID1 — зеркалирование данных между дисками. Гарантирует доступность при отказе одного диска.
  • LVM — слой логического управления томами поверх физических устройств; позволяет перемещать PV и динамически управлять LV.

Важно: все команды выполняются от root или через sudo; перед изменениями рекомендуется сделать резервную копию важных данных.

4 Создание наших RAID‑массивов

Теперь создадим RAID‑массивы /dev/md0 и /dev/md1. /dev/sdb1 добавится в /dev/md0, /dev/sdb5 — в /dev/md1. /dev/sda1 и /dev/sda5 сейчас нельзя добавить, потому что система загружается с них. Поэтому при создании используем placeholder 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

После выполнения команды статус массивов можно проверить командой:

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

На нек‑LVM массиве /dev/md0 создаём файловую систему ext3:

mkfs.ext3 /dev/md0

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

Подготовим /dev/md1 для LVM:

pvcreate /dev/md1

Добавляем /dev/md1 в группу томов debian:

vgextend debian /dev/md1

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

pvdisplay

Ожидаемый вывод будет похож на этот (в примере видно, что /dev/sda5 всё ещё в группе, а /dev/md1 пуст и доступен):

server1:~# pvdisplay — Physical volume — PV Name /dev/sda5 VG Name debian PV Size 4.75 GB / not usable 0 Allocatable yes (but full) PE Size (KByte) 4096 Total PE 1217 Free PE 0 Allocated PE 1217 PV UUID l2G0xJ-b9JF-RLsZ-bbcd-yRGd-kHfl-QFSpdg

— Physical volume — PV Name /dev/md1 VG Name debian PV Size 4.75 GB / not usable 0 Allocatable yes PE Size (KByte) 4096 Total PE 1217 Free PE 1217 Allocated PE 0 PV UUID YAnBb4-NJdb-aM68-Ks22-g851-IshG-bNgOXp

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 j5BV1u-mQSa-Q0KW-PH4n-VHab-DB92-LyxFIU

server1:~#

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

Файл /etc/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 Tue, 18 Mar 2008 19:28:19 +0100 # by mkconf $Id: mkconf 261 2006-11-09 13:32:35Z madduck $ ARRAY /dev/md0 level=raid1 num-devices=2 UUID=6fe4b95e:4ce1dcef:01b5209e:be9ff10a ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa4ab7bb:df7ddb72:01b5209e:be9ff10a |

Примечание: в некоторых системах путь mdadm.conf может отличаться; проверьте путь и служебные скрипты сборки initramfs.

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

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

vi /etc/fstab

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

Аналогично обновите /etc/mtab (или выполните монтирование и let system update it автоматически):

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 [...] |

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

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

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

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

Пересбор initramfs

Обновите ramdisk, чтобы в него попали новые конфигурации md и LVM:

update-initramfs -u

5 Перенос данных на RAID‑массивы

После изменения конфигураций можно копировать содержимое /dev/sda на /dev/sdb, включая изменения конфигов.

Перемещение LVM‑данных на /dev/md1

Для переноса физических томов LVM используйте pvmove:

pvmove /dev/sda5 /dev/md1

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

После окончания удаляем /dev/sda5 из группы:

vgreduce debian /dev/sda5

И отмечаем /dev/sda5 как не‑LVM:

pvremove /dev/sda5

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

server1:~# pvdisplay — Physical volume — PV Name /dev/md1 VG Name debian PV Size 4.75 GB / not usable 0 Allocatable yes (but full) PE Size (KByte) 4096 Total PE 1217 Free PE 0 Allocated PE 1217 PV UUID YAnBb4-NJdb-aM68-Ks22-g851-IshG-bNgOXp

server1:~#

Присоединение старого раздела в RAID и синхронизация

Поменяем тип раздела /dev/sda5 на Linux raid autodetect и добавим его в md1.

fdisk /dev/sda

Пример интерактивной сессии (нажмите t, затем номер 5, затем введите fd, затем w):

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 = 52.5% (2623232/4988032) finish=0.5min speed=74705K/sec

md0 : active raid1 sdb1[1] 248896 blocks [2/1] [_U]

unused devices: server1:~#


Можно использовать watch для наблюдения:

watch cat /proc/mdstat


Дождитесь, пока синхронизация завершится — массив покажет [UU] для md1.

### Монтирование и копирование /boot

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

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


Проверим вывод mount — /dev/md0 должен быть смонтирован на /boot и /mnt/md0:

server1:~# mount
/dev/mapper/debian-root on / type ext3 (rw,errors=remount-ro)
...
/dev/md0 on /boot type ext3 (rw)
/dev/md0 on /mnt/md0 type ext3 (rw)
server1:~#

Теперь копируем содержимое /boot (выполняется из /boot):

cd /boot cp -dpRx . /mnt/md0


Копирование флагов, атрибутов и симлинков выполняется флагами cp -dpRx.

Важно: после успешного копирования можно обновить GRUB на обоих дисках (установить загрузчик на /dev/sda и /dev/sdb) для полной отказоустойчивости.

Примечание: синтаксис и команды grub-install/update-grub зависят от версии GRUB и дистрибутива.

## Когда этот подход не подходит

- На системах с нестандартной разметкой или нестандартными загрузчиками (например, UEFI + GPT и старые инструкции для GRUB legacy) порядок действий отличается.
- Если у вас единственный накопитель без горячей замены, сначала необходимо добавить второй диск.
- На больших объёмах перенос pvmove может занимать очень много времени; оцените окно обслуживания.

## Альтернативные подходы

- Использовать RAID10 или RAID6 для более высокой отказоустойчивости и производительности (подходит для нескольких дисков).
- Создать RAID только для / и /boot с помощью md и затем разместить LVM на RAID (вариант, обратный описанному).
- Использовать аппаратный RAID-контроллер — снимает нагрузку с CPU, но снижает гибкость и переносимость.

## Мини‑методология: чеклист перед началом работ

1. Сделать резервную копию критичных данных.
2. Проверить состояние SMART дисков.
3. Убедиться, что есть второй физический диск с подходящей разметкой.
4. Подготовить live‑USB или доступную консоль для восстановления.
5. Провести все команды сначала в тестовой среде, если возможно.

## Ролевые обязанности (кто что делает)

- Системный администратор: выполняет команды, проверяет логи и mdstat, обновляет GRUB и initramfs.
- Оператор хранения: проверяет SMART, физическую установку дисков, кабели и RAID‑контроллеры.
- Руководитель смены: утверждает окно обслуживания и подтверждает откатные планы.

## Дерево принятия решения (Mermaid)

flowchart TD A[Начать: есть второй диск?] –>|Да| B[Создать md0/md1 с missing] A –>|Нет| Z[Добавить диск] B –> C[Создать FS на md0 и pvcreate md1] C –> D[vgextend debian /dev/md1] D –> E[Скопировать /boot -> md0] E –> F[Запустить pvmove /dev/sda5 /dev/md1] F –> G[Добавить /dev/sda5 в md1 и дождаться синхр.] G –> H[Установить GRUB на оба диска и обновить initramfs] H –> I[Тестирование и перезагрузка]


## Краткий глоссарий (1‑строчно)

- mdadm — утилита для управления программными RAID (Linux MD).
- pvcreate/vgextend/pvmove — LVM‑команды для создания PV, расширения VG и миграции данных.
- initramfs — начальный RAM‑образ, содержащий модули и скрипты для загрузки системы.

## Итог и проверка

- Проверьте /proc/mdstat — массивы должны быть [UU].
- Убедитесь, что /boot монтируется с /dev/md0 после перезагрузки.
- Проверьте, что все PV находятся на /dev/md1 и свободных PE нет на старом /dev/sda5.

Важное: если после перезагрузки система не грузится с RAID, используйте fallback, проверьте конфигурацию GRUB и содержимое /mnt/md0, затем откатите изменения согласно резервной копии.

Краткое резюме и следующие шаги в разделе «Ключевые выводы».

---

Ключевые выводы:

- Создайте массивы с missing, затем последовательно добавляйте старые разделы.
- Обновите mdadm.conf, fstab, mtab, GRUB и initramfs.
- Перенесите LVM через pvmove, затем vgreduce и pvremove.
- Дождитесь полной синхронизации md‑массивов прежде чем считать работу завершённой.
Поделиться: 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 быстро