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

Настройка программного RAID1 на работающей Debian Etch

• 7 min read • Системное администрирование • Обновлено 23 Nov 2025
RAID1 на Debian Etch — настройка без простоя
RAID1 на Debian Etch — настройка без простоя

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

Содержание

  • Введение и цель
    1. Предварительное замечание
    1. Установка mdadm и загрузка модулей
    1. Подготовка /dev/sdb и копирование таблицы разделов
  • Проверки и тестирование
  • Когда этот подход не подходит и альтернативы
  • Мини‑методология и проверочный чеклист для ролей
  • Риски и меры смягчения
  • Краткое резюме
  • Однострочный глоссарий

Введение и цель

Эта инструкция объясняет, как на уже работающей системе Debian Etch организовать программный RAID1 (зеркалирование) таким образом, чтобы загрузчик GRUB позволял системе загружаться, если выйдет из строя любой из жестких дисков. Основная идея: подготовить второй диск, скопировать на него структуру и данные, затем создать массивы RAID из пар разделов и настроить загрузчик.

1. Предварительное замечание

В примере используется система Debian Etch с двумя физическими дисками /dev/sda и /dev/sdb одинакового размера. В текущем состоянии /dev/sdb пуст, а /dev/sda содержит разделы:

  • /dev/sda1: раздел /boot, файловая система ext3;
  • /dev/sda2: swap;
  • /dev/sda3: корневой раздел /, ext3.

Задача — в результате получить:

  • /dev/md0 — зеркальный /boot (из /dev/sda1 и /dev/sdb1), ext3;
  • /dev/md1 — зеркальный swap (из /dev/sda2 и /dev/sdb2);
  • /dev/md2 — зеркальный корень / (из /dev/sda3 и /dev/sdb3), ext3.

Текущее состояние можно посмотреть командами и их выводом ниже (оставлено исходное):

df -h
server1:~#df-h  
FilesystemSizeUsedAvailUse%Mountedon  
/dev/sda34.4G29M3.4G%/  
tmpfs126M0126M% /lib/init/rw  
udev10M6K10M% /dev  
tmpfs126M06M% /dev/shm  
/dev/sda1137M12M8M% /boot  
server1:~#
fdisk -l
server1:~#fdisk-l  
  
Disk/dev/sda:5368MB,5368709120bytes  
255heads,63sectors/track,652cylinders  
Units=cylindersof16065*512=8225280bytes  
  
   DeviceBootStartEnd BlocksIdSystem  
/dev/sda1*118144553+83Linux  
/dev/sda28049801582Linuxswap/Solaris  
/dev/sda381652459459083Linux  
  
Disk/dev/sdb:5368MB,5368709120bytes  
255heads,63sectors/track,652cylinders  
Units=cylindersof16065*512=8225280bytes  
  
Disk/dev/sdbdoesn'tcontainavalidpartitiontable  
server1:~#

2. Установка mdadm и загрузка модулей

Для управления программными RAID в Linux используется утилита mdadm. Установите её и сопутствующий пакет initramfs-tools:

apt-get install initramfs-tools mdadm

Во время установки вам будет задан вопрос:

MD arrays needed for the root filesystem: <– all

Подтвердите, что массивы MD нужны для корневой файловой системы (обычно ответ “all” или выбор подходящего варианта).

Чтобы не перезагружать систему, загрузим необходимые модули ядра сразу:

modprobe md  
modprobe linear  
modprobe multipath  
modprobe raid0  
modprobe raid1  
modprobe raid5  
modprobe raid6  
modprobe raid10

Проверим доступные личности (personalities) md:

cat /proc/mdstat

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

server1:~# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
unused devices:   
server1:~#

Если в списке присутствует raid1 — модуль доступен.

3. Подготовка /dev/sdb

План действий:

  1. Скопировать таблицу разделов с /dev/sda на /dev/sdb.
  2. Изменить тип разделов на /dev/sdb на “Linux raid autodetect” (hex fd).
  3. Очистить возможные остатки суперблоков RAID на /dev/sdb.
  4. Создать массивы md, синхронизировать и настроить загрузку.

Шаг 1 — копирование таблицы разделов:

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

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

server1:~#sfdisk-d/dev/sda|sfdisk/dev/sdb  
Checkingthatno-oneisusingthisdiskrightnow...  
OK  
  
Disk/dev/sdb:652cylinders,255heads,63sectors/track  
  
sfdisk:ERROR:sector0doesnothaveanmsdossignature  
 /dev/sdb:unrecognizedpartitiontabletype  
Oldsituation:  
Nopartitionsfound  
Newsituation:  
Units=sectorsof512bytes,countingfrom0  
  
   DeviceBootStartEnd#sectorsIdSystem  
/dev/sdb1*328916928910783Linux  
/dev/sdb2289170128519999603082Linuxswap/Solaris  
/dev/sdb38520010474379918918083Linux  
/dev/sdb40Empty  
Successfullywrotethenewpartitiontable  
  
Re-readingthepartitiontable...  
  
IfyoucreatedorchangedaDOSpartition,/dev/foo7,say,thenusedd(1)  
tozerothefirst512bytes:ddif=/dev/zeroof=/dev/foo7bs=512count=1  
(Seefdisk(8).)  
server1:~#

После этого fdisk -l должен показать одинаковую разметку на обоих дисках (пример вывода оставлен):

server1:~#fdisk-l  
  
Disk/dev/sda:5368MB,5368709120bytes  
255heads,63sectors/track,652cylinders  
Units=cylindersof16065*512=8225280bytes  
  
   DeviceBootStartEnd BlocksIdSystem  
/dev/sda1*118144553+83Linux  
/dev/sda28049801582Linuxswap/Solaris  
/dev/sda381652459459083Linux  
  
Disk/dev/sdb:5368MB,5368709120bytes  
255heads,63sectors/track,652cylinders  
Units=cylindersof16065*512=8225280bytes  
  
   DeviceBootStartEnd BlocksIdSystem  
/dev/sdb1*118144553+83Linux  
/dev/sdb28049801582Linuxswap/Solaris  
/dev/sdb381652459459083Linux  
server1:~#

Шаг 2 — изменить тип разделов на /dev/sdb на fd (Linux raid autodetect):

fdisk /dev/sdb

В интерактивном режиме нужно выбрать t → номер раздела → ввести fd. В примере ниже показан диалог команд fdisk (оригинальный вывод сохранён):

server1:~#fdisk/dev/sdb  
  
Command(mforhelp):<--m  
Commandaction  
atoggleabootableflag  
beditbsddisklabel  
ctogglethedoscompatibilityflag  
ddeleteapartition  
llistknownpartitiontypes  
mprintthismenu  
naddanewpartition  
ocreateanewemptyDOSpartitiontable  
pprintthepartitiontable  
qquitwithoutsavingchanges  
screateanewemptySundisklabel  
tchangeapartition'ssystemid  
uchangedisplay/entryunits  
vverifythepartitiontable  
wwritetabletodiskandexit  
xextrafunctionality(expertsonly)  
  
Command(mforhelp):<--t  
Partitionnumber(1-4):<--1  
Hexcode(typeLtolistcodes):<--L  
  
0EmptyHiddenW95FAT180OldMinixbeSolarisboot  
1FAT1224NECDOS81Minix/oldLinbfSolaris  
2XENIXroot39Plan982Linuxswap/Soc1DRDOS/sec(FAT-  
3XENIXusr3cPartitionMagic83Linux  
4FAT16<32M0Venix84OS/2hiddenC:c6DRDOS/sec(FAT-  
5Extended1PPCPRePBoot85Linuxextended  
6FAT162SFS86NTFSvolumesetdaNon-FSdata  
7HPFS/NTFS4dQNX4.x87NTFSvolumesetdbCP/M/CTOS/.  
8AIX4eQNX4.x2ndpart88LinuxplaintextdeDellUtility  
9AIXbootable10OPUS55EZ-Drivea6OpenBSDefEFI(FAT-12/16/  
... (список обрезан для краткости в примере) ...  
Hexcode(typeLtolistcodes):<--fd  
Changedsystemtypeofpartition1tofd(Linuxraidautodetect)  
  
Command(mforhelp):<--t  
Partitionnumber(1-4):<--2  
Hexcode(typeLtolistcodes):<--fd  
Changedsystemtypeofpartition2tofd(Linuxraidautodetect)  
  
Command(mforhelp):<--t  
Partitionnumber(1-4):<--3  
Hexcode(typeLtolistcodes):<--fd  
Changedsystemtypeofpartition3tofd(Linuxraidautodetect)  
  
Command(mforhelp):<--w  
Thepartitiontablehasbeenaltered!  
  
Callingioctl()tore-readpartitiontable.  
Syncingdisks.  
server1:~#

Шаг 3 — очистка старых md суперблоков на /dev/sdb (если они есть):

mdadm --zero-superblock /dev/sdb1  
mdadm --zero-superblock /dev/sdb2  
mdadm --zero-superblock /dev/sdb3

Если на диске не было предыдущих RAID‑компонентов, команды выдадут ошибку наподобие:

server1:~# mdadm --zero-superblock /dev/sdb1  
mdadm: Unrecognised md component device - /dev/sdb1  
server1:~#

Это нормально: отсутствие суперблоков не критично.

Шаг 4 — создание массивов md и синхронизация

Этот шаг описан в отдельных разделах и зависит от того, хотите ли вы постепенно переводить разделы в RAID (создавать массивы с одним активным членом и одним запчастным) или сделать offline операции. Типичный безопасный сценарий для работающей системы:

  1. Создать RAID1 массив для /boot на /dev/sdb1 как деградированный массив с одним участником (/dev/sdb1) и без /dev/sda1, затем скопировать содержимое /boot и установить загрузчик на оба диска.
  2. Повторить для swap и корня: создать /dev/md2 как RAID1 с одним участником, смонтировать, синхронизировать данные, затем добавить /dev/sdaX в массив как второй участник или наоборот в зависимости от выбранной стратегии.

Примеры команд (внимательно проверьте перед выполнением):

  • Создать массив с одной копией (degraded):
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing
  • Форматировать и копировать /boot (из /dev/sda1 → /dev/md0):
mkfs.ext3 /dev/md0
mount /dev/md0 /mnt
mount /dev/sda1 /boot-old
cp -a /boot-old/* /mnt/
  • Установить GRUB на оба диска (примерные команды):
grub-install /dev/sda
grub-install /dev/sdb
update-grub
  • Добавить второй член в массив (после того, как в /dev/md0 появятся нужные данные):
mdadm --add /dev/md0 /dev/sda1

После добавления второго устройства массив начнет синхронизироваться; статус можно наблюдать через cat /proc/mdstat.

Важно: конкретные команды для создания и перехода корневого раздела в RAID требуют осторожности и обычно включают пересоздание initramfs и обновление /etc/fstab, чтобы корневой раздел монтировался как /dev/md2. Эти шаги зависят от конфигурации вашей системы и выходят за рамки базовой подготовки диска.

Проверки и тестирование

  • Всегда проверяйте вывод cat /proc/mdstat для отслеживания синхронизации массивов.
  • Перед установкой GRUB убедитесь, что /boot доступен и содержит правильные файлы ядра и initrd.
  • Проведите тестовую перезагрузку после установки загрузчика и перед переводом корневого раздела в массив, если это возможно в безопасное окно.
  • Тест отказоустойчивости: после синхронизации массива можно физически отключить один диск и проверить, что система загружается с оставшегося.

Когда этот подход не подходит и альтернативы

Когда метод не подходит:

  • Если диски разного размера и вы хотите использовать весь объём — зеркалирование неэффективно. В таких случаях лучше использовать LVM поверх RAID (гибрид) или отдельные методы репликации.
  • Если система критична по времени простоя и нельзя перезагружать систему — перевод корневого раздела в RAID онлайн требует сложных манипуляций и иногда плановой остановки.
  • Если у вас аппаратный RAID контроллер с хорошей поддержкой — аппаратный RAID может быть проще в управлении.

Альтернативы:

  • Настроить регулярное и атомарное резервное копирование (rsync, borg, bacula) вместо RAID для обеспечения целостности данных.
  • Использовать LVM + mirroring или DRBD для репликации на уровне блоков между серверами.

Мини‑методология (пошаговый шаблон принятия решений)

  1. Оцените риски и создайте резервную копию.
  2. Убедитесь, что второй диск равен или больше по объёму.
  3. Скопируйте таблицу разделов: sfdisk -d /dev/sda | sfdisk /dev/sdb.
  4. Поменяйте тип разделов на fd на втором диске.
  5. Очистите суперблоки mdadm –zero-superblock.
  6. Создайте массивы md в режиме degraded, отформатируйте и перенесите данные.
  7. Установите загрузчик на оба диска.
  8. Добавьте второй член массива и дождитесь синхронизации.
  9. Обновите initramfs и /etc/fstab при необходимости.
  10. Проведите тесты отказоустойчивости.

Чеклист ролей

Администратор (подготовка):

  • Резервная копия данных
  • Проверено место на втором диске
  • Установлен mdadm
  • Скопирована таблица разделов

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

  • Изменён тип разделов на fd
  • Очистка суперблоков выполнена
  • Созданы массивы в degraded режиме
  • Данные /boot и другие разделы синхронизированы
  • GRUB установлен на оба диска
  • Проверена синхронизация mdstat

Тестирование (QA/инженер):

  • Тест перезагрузки в контролируемом окне
  • Тест отключения одного диска
  • Мониторинг после внесения изменений

Риски и меры смягчения

  • Риск: потеря данных при ошибке в разметке. Мера: перед началом — полная резервная копия.
  • Риск: неправильная установка GRUB на второй диск. Мера: повторная установка grub-install на оба диска и тестовые перезагрузки.
  • Риск: массив не синхронизируется. Мера: проверка /proc/mdstat, логов dmesg и mdadm –detail.

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

  • Все требуемые RAID‑массивы присутствуют и в состоянии clean в /proc/mdstat.
  • GRUB установлен на обоих физических дисках и система успешно загружается при физическом отключении любого диска.
  • /etc/fstab, initramfs и конфигурация mdadm актуальны и соответствуют новой разметке.

Однострочный глоссарий

  • mdadm: утилита для управления программными массивами RAID под Linux; используйте её для создания/управления md‑устройствами.

Краткое резюме

Пошаговое переведение работающей Debian Etch системы на программный RAID1 состоит из: копирования таблицы разделов, установки типа разделов на Linux RAID, очистки старых метаданных, создания массивов в degraded режиме, переноса данных, установки GRUB на оба диска и добавления второго члена массива для синхронизации. Всегда выполняйте резервное копирование и тесты отказоустойчивости.

Если нужны конкретные команды для создания и перевода корневого раздела в RAID на вашей системе, укажите текущую конфигурацию /etc/fstab и вывод lsblk или blkid — я помогу составить точный план действий.

Поделиться: 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 быстро