Man вики
Редактировать страницу

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы ваша отмена правки была сохранена.

Текущая версия Ваш текст
Строка 1: Строка 1:
  +
  +
  +
 
=Задача=
 
=Задача=
  +
 
* Необходимо создать надежную отказоустойчивую дисковую систему. При выходе из строя любого жесткого диска, система должна продолжить работу
 
* Необходимо создать надежную отказоустойчивую дисковую систему. При выходе из строя любого жесткого диска, система должна продолжить работу
  +
 
* Перенос на RAID должен происходить без прерывания работы системы и без потери данных
 
* Перенос на RAID должен происходить без прерывания работы системы и без потери данных
  +
 
* Необходимо использовать средства, не требующие привязки к оборудованию, т.е. без использования как встроенных так и внешних RAID контроллеров
 
* Необходимо использовать средства, не требующие привязки к оборудованию, т.е. без использования как встроенных так и внешних RAID контроллеров
  +
 
* Необходимо обеспечить систему надежными средствами уведомления о сбоях дисков для оперативной замены
 
* Необходимо обеспечить систему надежными средствами уведомления о сбоях дисков для оперативной замены
  +
 
* Замена жестких дисков должна производиться без прерывания работы в "горячем" режиме.
 
* Замена жестких дисков должна производиться без прерывания работы в "горячем" режиме.
  +
  +
  +
   
 
=Перенос PROXMOX на RAID1 (Зеркало)=
 
=Перенос PROXMOX на RAID1 (Зеркало)=
  +
 
==Принцип работы==
 
==Принцип работы==
  +
 
* Добавляем в систему жесткий диск идентичный по размеру (до сектора) в идеале той-же модели, что и исходный
 
* Добавляем в систему жесткий диск идентичный по размеру (до сектора) в идеале той-же модели, что и исходный
  +
 
* Создаем на нем 2 раздела (под загрузку и под данные)
 
* Создаем на нем 2 раздела (под загрузку и под данные)
  +
 
* Создаем 2 зеркальных рейд массива в degrade (разрушенном) состоянии (это когда массив который должен состоять из 2-х дисков, а состоит всего из одного.
 
* Создаем 2 зеркальных рейд массива в degrade (разрушенном) состоянии (это когда массив который должен состоять из 2-х дисков, а состоит всего из одного.
  +
 
* Переносим всё (загрузочный раздел и раздел с данными) с первого диска на рейд массивы второго диска
 
* Переносим всё (загрузочный раздел и раздел с данными) с первого диска на рейд массивы второго диска
  +
 
* Уничтожаем данные и структуру разделов на первом диске и подключаем его в качестве не хватающего диска в уже созданный рейд массив
 
* Уничтожаем данные и структуру разделов на первом диске и подключаем его в качестве не хватающего диска в уже созданный рейд массив
  +
 
* Делаем оба диска загрузочными
 
* Делаем оба диска загрузочными
  +
 
==Подготовительные работы==
 
==Подготовительные работы==
  +
 
*Перед началом работ, не помешает проверить состояние SMART жестких дисков и настроить его контроль. [[Сервер_NAS_(сетевая_система_хранения_данных)#Мониторинг и уведомления о неисправностях]]
 
*Перед началом работ, не помешает проверить состояние SMART жестких дисков и настроить его контроль. [[Сервер_NAS_(сетевая_система_хранения_данных)#Мониторинг и уведомления о неисправностях]]
  +
 
Затем надо полностью очистить от всех имеющихся данных и разделов второй (добавленный) диск.
 
Затем надо полностью очистить от всех имеющихся данных и разделов второй (добавленный) диск.
  +
  +
  +
   
 
==Создание новой структуры разделов на втором диске==
 
==Создание новой структуры разделов на втором диске==
  +
 
Посмотрим список обнаруженных в системе физических дисков:
 
Посмотрим список обнаруженных в системе физических дисков:
  +
dmesg | egrep 'logical blocks|Direct-Access'
 
  +
dmesg | egrep 'logical blocks|Direct-Access'
  +
 
Убедимся, что система загружается с первого жесткого диска /dev/sda
 
Убедимся, что система загружается с первого жесткого диска /dev/sda
  +
df -h | grep '/boot'
 
  +
df -h | grep '/boot'
  +
 
Мы должны увидить нечто подобное:
 
Мы должны увидить нечто подобное:
  +
  +
  +
   
 
<code>'''/dev/sda1 504M 34M 445M 8% /boot'''</code>
 
<code>'''/dev/sda1 504M 34M 445M 8% /boot'''</code>
  +
  +
  +
   
 
Если раздел boot находится не на /dev/sda1, необходимо отключить компьютер и поменять местами sata кабеля подключенные к жестким дискам.
 
Если раздел boot находится не на /dev/sda1, необходимо отключить компьютер и поменять местами sata кабеля подключенные к жестким дискам.
  +
  +
  +
   
 
Скопируем структуру разделов с первого диска на второй
 
Скопируем структуру разделов с первого диска на второй
  +
sfdisk -d /dev/sda | sfdisk /dev/sdb --force
 
  +
sfdisk -d /dev/sda | sfdisk /dev/sdb --force
  +
 
Сменим тип разделов на fd (Linux raid autodetect)
 
Сменим тип разделов на fd (Linux raid autodetect)
  +
sfdisk -c /dev/sdb 1 fd --force
 
sfdisk -c /dev/sdb 2 fd --force
+
sfdisk -c /dev/sdb 1 fd --force
  +
  +
sfdisk -c /dev/sdb 2 fd --force
  +
 
Проверим список разделов
 
Проверим список разделов
  +
sfdisk -l /dev/sdb
 
  +
sfdisk -l /dev/sdb
  +
  +
  +
   
 
==Загрузка и установка компонентов==
 
==Загрузка и установка компонентов==
  +
 
* mdadm - менеджер программного RAID для Linix
 
* mdadm - менеджер программного RAID для Linix
  +
 
* initramfs -временная файловая система, использующаяся ядром при начальной загрузке
 
* initramfs -временная файловая система, использующаяся ядром при начальной загрузке
  +
apt-get update
 
  +
apt-get update
apt-get install -y mdadm initramfs-tools
 
  +
  +
apt-get install -y mdadm initramfs-tools
  +
 
Все параметры по умолчанию
 
Все параметры по умолчанию
  +
  +
  +
   
 
==Подключение модуля RAID==
 
==Подключение модуля RAID==
  +
modprobe raid1
 
  +
modprobe raid1
echo alias md-personality-3 raid1 >> /etc/modprobe.conf
 
  +
  +
echo alias md-personality-3 raid1 >> /etc/modprobe.conf
  +
 
Далее необходимо убедится, что на дисках не осталось суперблоков. Эти блоки являются метками, которые проставляются в конец диска если он являлся частью рейд массива ранее. Часто они не удаляются в процессе форматирования жесткого диска при установке PROXMOX и их нужно затереть вручную!
 
Далее необходимо убедится, что на дисках не осталось суперблоков. Эти блоки являются метками, которые проставляются в конец диска если он являлся частью рейд массива ранее. Часто они не удаляются в процессе форматирования жесткого диска при установке PROXMOX и их нужно затереть вручную!
  +
 
* Проверяем, нет ли суперблоков
 
* Проверяем, нет ли суперблоков
  +
mdadm --misc --examine /dev/sda
 
mdadm --misc --examine /dev/sdb
+
mdadm --misc --examine /dev/sda
  +
mdadm --misc --examine /dev/sdb1
 
mdadm --misc --examine /dev/sdb2
+
mdadm --misc --examine /dev/sdb
  +
  +
mdadm --misc --examine /dev/sdb1
  +
  +
mdadm --misc --examine /dev/sdb2
  +
 
Если все в порядке и суперблоков нет, то увидим нечто подобное:
 
Если все в порядке и суперблоков нет, то увидим нечто подобное:
  +
mdadm: No md superblock detected on /dev/sdb
 
  +
mdadm: No md superblock detected on /dev/sdb
  +
 
Если есть, то перед продолжением настройки их необходимо удалить! [[Удаление суперблоков]]
 
Если есть, то перед продолжением настройки их необходимо удалить! [[Удаление суперблоков]]
  +
  +
  +
   
 
Настроем почтовую подсистему и параметры локали [[Отправка почты]]
 
Настроем почтовую подсистему и параметры локали [[Отправка почты]]
  +
 
==Настройка параметров mdadm==
 
==Настройка параметров mdadm==
  +
 
Создадим файл настроек, предварительно сохранив оригинальный
 
Создадим файл настроек, предварительно сохранив оригинальный
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.orig
 
echo "" > /etc/mdadm/mdadm.conf
 
nano /etc/mdadm/mdadm.conf
 
   
  +
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.orig
# Автоматическое назначение прав на новые массивы
 
  +
CREATE owner=root group=disk mode=0660 auto=yes
 
  +
echo "" > /etc/mdadm/mdadm.conf
 
  +
# Почтовый адрес для уведомлений о событиях происходящих с массивом
 
  +
nano /etc/mdadm/mdadm.conf
MAILADDR it.khabarovsk@dns-shop.ru
 
  +
  +
  +
  +
  +
# Автоматическое назначение прав на новые массивы
  +
  +
CREATE owner=root group=disk mode=0660 auto=yes
  +
  +
  +
  +
  +
# Почтовый адрес для уведомлений о событиях происходящих с массивом
  +
  +
MAILADDR it.khabarovsk@dns-shop.ru
  +
  +
  +
   
 
==Предварительная настройка RAID в режиме деградации==
 
==Предварительная настройка RAID в режиме деградации==
  +
mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
 
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2
+
mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
  +
  +
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2
  +
 
Если все впорядке и массивы создались, сохраним параметры массива в конфигурационном файле:
 
Если все впорядке и массивы создались, сохраним параметры массива в конфигурационном файле:
  +
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
 
  +
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
  +
 
Проверим, что информация о наших массивах записалась в файл параметров
 
Проверим, что информация о наших массивах записалась в файл параметров
  +
cat /etc/mdadm/mdadm.conf
 
  +
cat /etc/mdadm/mdadm.conf
  +
  +
  +
   
 
==настройка загрузочного меню grub==
 
==настройка загрузочного меню grub==
  +
 
Добавим загрузочный образ initramfs
 
Добавим загрузочный образ initramfs
  +
mkinitramfs -o /boot/initrd.img-`uname -r`-raid1 -r /dev/mapper/pve-root
 
  +
mkinitramfs -o /boot/initrd.img-`uname -r`-raid1 -r /dev/mapper/pve-root
  +
 
Заменим файл загрузочного меню и создадим свой, предварительно сохранив оригинальный
 
Заменим файл загрузочного меню и создадим свой, предварительно сохранив оригинальный
  +
cp /boot/grub/menu.lst /boot/grub/menu.lst.orig
 
echo "default 0" > /boot/grub/menu.lst
+
cp /boot/grub/menu.lst /boot/grub/menu.lst.orig
  +
echo "timeout 5" >> /boot/grub/menu.lst
 
echo "title Proxmox VE on soft-RAID" >> /boot/grub/menu.lst
+
echo "default 0" > /boot/grub/menu.lst
  +
echo "root (hd0,0)" >> /boot/grub/menu.lst
 
echo "kernel /vmlinuz-`uname -r` root=/dev/mapper/pve-root ro" >> /boot/grub/menu.lst
+
echo "timeout 5" >> /boot/grub/menu.lst
  +
echo "initrd /initrd.img-`uname -r`-raid1" >> /boot/grub/menu.lst
 
  +
echo "title Proxmox VE on soft-RAID" >> /boot/grub/menu.lst
  +
  +
echo "root (hd0,0)" >> /boot/grub/menu.lst
  +
  +
echo "kernel /vmlinuz-`uname -r` root=/dev/mapper/pve-root ro" >> /boot/grub/menu.lst
  +
  +
echo "initrd /initrd.img-`uname -r`-raid1" >> /boot/grub/menu.lst
  +
 
Проверим:
 
Проверим:
  +
cat /boot/grub/menu.lst
 
  +
cat /boot/grub/menu.lst
  +
  +
  +
   
 
==Перенос данных из LVM на второй диск==
 
==Перенос данных из LVM на второй диск==
  +
 
Создаем LVM-раздел на втором диске и добавляем его в группу pve
 
Создаем LVM-раздел на втором диске и добавляем его в группу pve
  +
pvcreate /dev/md1
 
vgextend pve /dev/md1
+
pvcreate /dev/md1
  +
  +
vgextend pve /dev/md1
  +
 
Переместим данные с LVM-раздела первого диска, на RAID-LVM-раздел второго диска. Процедура может продолжаться очень долго. Время зависит от объема и скорости жестких дисков.
 
Переместим данные с LVM-раздела первого диска, на RAID-LVM-раздел второго диска. Процедура может продолжаться очень долго. Время зависит от объема и скорости жестких дисков.
  +
pvmove /dev/sda2 /dev/md1
 
  +
pvmove /dev/sda2 /dev/md1
  +
 
Убираем из LVM первый диск
 
Убираем из LVM первый диск
  +
vgreduce pve /dev/sda2
 
  +
vgreduce pve /dev/sda2
  +
  +
  +
   
 
==Перенос загрузочных файлов на RAID==
 
==Перенос загрузочных файлов на RAID==
  +
 
Подготовим загрузочный RAID-раздел второго диска и скопируем на него все файлы из папки /boot первого диска
 
Подготовим загрузочный RAID-раздел второго диска и скопируем на него все файлы из папки /boot первого диска
  +
mkfs.ext3 /dev/md0
 
mkdir /mnt/md0
+
mkfs.ext3 /dev/md0
  +
mount /dev/md0 /mnt/md0
 
cp -ax /boot/* /mnt/md0
+
mkdir /mnt/md0
  +
umount /mnt/md0
 
rmdir /mnt/md0
+
mount /dev/md0 /mnt/md0
  +
  +
cp -ax /boot/* /mnt/md0
  +
  +
umount /mnt/md0
  +
  +
rmdir /mnt/md0
  +
 
Настроим параметры подключения системных дисков с учетом загрузки с raid. Пересоздадим конфигурационный файл fstab предварительно сохранив оригинальный.
 
Настроим параметры подключения системных дисков с учетом загрузки с raid. Пересоздадим конфигурационный файл fstab предварительно сохранив оригинальный.
cp /etc/fstab /etc/fstab.orig
 
echo "" > /etc/fstab
 
nano /etc/fstab
 
   
  +
cp /etc/fstab /etc/fstab.orig
/dev/pve/root / ext3 errors=remount-ro 0 1
 
  +
/dev/pve/data /var/lib/vz ext3 defaults 0 1
 
  +
echo "" > /etc/fstab
/dev/md0 /boot ext3 defaults 0 1
 
  +
/dev/pve/swap none swap sw 0 0
 
  +
nano /etc/fstab
proc /proc proc defaults 0 0
 
  +
  +
  +
  +
  +
/dev/pve/root / ext3 errors=remount-ro 0 1
  +
  +
/dev/pve/data /var/lib/vz ext3 defaults 0 1
  +
  +
/dev/md0 /boot ext3 defaults 0 1
  +
  +
/dev/pve/swap none swap sw 0 0
  +
  +
proc /proc proc defaults 0 0
  +
 
Перемонтируем загрузочный раздел
 
Перемонтируем загрузочный раздел
  +
umount /boot
 
mount /boot
+
umount /boot
  +
  +
mount /boot
  +
 
==Подключаем первый (исходный) диск в RAID==
 
==Подключаем первый (исходный) диск в RAID==
  +
 
Копируем структуру разделов со второго диска на первый
 
Копируем структуру разделов со второго диска на первый
  +
sfdisk -d /dev/sdb | sfdisk /dev/sda --force
 
  +
sfdisk -d /dev/sdb | sfdisk /dev/sda --force
  +
 
Добавим разделы первого диска в RAID
 
Добавим разделы первого диска в RAID
  +
mdadm --add /dev/md0 /dev/sda1
 
mdadm --add /dev/md1 /dev/sda2
+
mdadm --add /dev/md0 /dev/sda1
  +
  +
mdadm --add /dev/md1 /dev/sda2
  +
 
Осталось обновить загрузчик на обоих дисках. Запускаем
 
Осталось обновить загрузчик на обоих дисках. Запускаем
  +
grub
 
  +
grub
  +
 
И последовательно вводим:
 
И последовательно вводим:
  +
root (hd0,0)
 
setup (hd0)
+
root (hd0,0)
  +
root (hd1,0)
 
setup (hd1)
+
setup (hd0)
  +
quit
 
  +
root (hd1,0)
  +
  +
setup (hd1)
  +
  +
quit
  +
 
Проверить в каком состоянии находится массив можно командой:
 
Проверить в каком состоянии находится массив можно командой:
  +
cat /proc/mdstat
 
  +
cat /proc/mdstat
  +
  +
  +
   
 
=Замена жесткого диска=
 
=Замена жесткого диска=
  +
 
Смысл резервирования дисковой системы заключается не в факте самого наличия резервирования, а в возможности в случае возникновения неисправности любого из жестких дисков оперативно и без риска для данных его заменить. В этом должны помочь своевременные уведомления на почту и четкая инструкция по замене неисправного диска с восстановлением избыточности.
 
Смысл резервирования дисковой системы заключается не в факте самого наличия резервирования, а в возможности в случае возникновения неисправности любого из жестких дисков оперативно и без риска для данных его заменить. В этом должны помочь своевременные уведомления на почту и четкая инструкция по замене неисправного диска с восстановлением избыточности.
  +
 
==Определение неисправного диска==
 
==Определение неисправного диска==
  +
 
* Выясняем какой из жестких дисков "вылетел" из массива
 
* Выясняем какой из жестких дисков "вылетел" из массива
  +
cat /proc/mdstat
 
  +
cat /proc/mdstat
  +
 
видим примерно следующее
 
видим примерно следующее
  +
md1 : active raid1 '''sda2[2](F)''' sdb2[1]
 
  +
md1 : active raid1 '''sda2[2](F)''' sdb2[1]
243665792 blocks [2/1] [_U]
 
  +
 
  +
243665792 blocks [2/1] [_U]
md0 : active raid1 '''sda1[2](F)''' sdb1[1]
 
  +
530048 blocks [2/1] [_U]
 
  +
  +
  +
md0 : active raid1 '''sda1[2](F)''' sdb1[1]
  +
  +
530048 blocks [2/1] [_U]
  +
  +
  +
  +
  +
   
   
 
[_U] - Означает что в массиве отсутствует диск (рабочий массив выглядит так [UU]) (F) - означает, что диск дал сбой. В примере вылетел из массива и дал сбой диск '''sda'''. Всё дальнейшее описание будет описывать ситуацию с заменой диска '''sda''', при этом рабочим остался диск '''sdb'''.
 
[_U] - Означает что в массиве отсутствует диск (рабочий массив выглядит так [UU]) (F) - означает, что диск дал сбой. В примере вылетел из массива и дал сбой диск '''sda'''. Всё дальнейшее описание будет описывать ситуацию с заменой диска '''sda''', при этом рабочим остался диск '''sdb'''.
  +
  +
  +
   
 
* Необходимо выяснить, какой из дисков нужно физически отключить. В этом поможет информация о серийных номерах. Например смотрим информацию о модели и серийном номере оставшегося рабочего диска '''sdb''':
 
* Необходимо выяснить, какой из дисков нужно физически отключить. В этом поможет информация о серийных номерах. Например смотрим информацию о модели и серийном номере оставшегося рабочего диска '''sdb''':
udevadm info --query=env --name='''sdb''' | grep -E '(ID_SERIAL_SHORT|ID_MODEL)'
 
   
  +
udevadm info --query=env --name='''sdb''' | grep -E '(ID_SERIAL_SHORT|ID_MODEL)'
ID_SERIAL_SHORT='''9QZCNTNH'''
 
  +
  +
  +
  +
  +
ID_SERIAL_SHORT='''9QZCNTNH'''
  +
 
Смотрим серийники на наклейках жестких дисков. Соответственно диск с серийным номером '''9QZCNTNH''' оставляем в системе, другой отключаем.
 
Смотрим серийники на наклейках жестких дисков. Соответственно диск с серийным номером '''9QZCNTNH''' оставляем в системе, другой отключаем.
  +
  +
  +
   
 
==Замена неисправного диска==
 
==Замена неисправного диска==
  +
 
Выполнять будем горячую замену диска без выключения и перезагрузок сервера.
 
Выполнять будем горячую замену диска без выключения и перезагрузок сервера.
  +
  +
  +
   
 
1. Очистим информацию о диске '''sda''' в массивах.
 
1. Очистим информацию о диске '''sda''' в массивах.
  +
mdadm /dev/md0 --fail /dev/sda1 --remove detached /dev/sda1
 
mdadm /dev/md1 --fail /dev/sda1 --remove detached /dev/sda1
+
mdadm /dev/md0 --fail /dev/sda1 --remove detached /dev/sda1
  +
  +
mdadm /dev/md1 --fail /dev/sda1 --remove detached /dev/sda1
  +
 
2. Удаляем диск физически отключив sata шлейф.
 
2. Удаляем диск физически отключив sata шлейф.
  +
  +
  +
   
 
3. Подключаем новый жесткий диск (SATA) равного до байта или большего размера на "на горячую".
 
3. Подключаем новый жесткий диск (SATA) равного до байта или большего размера на "на горячую".
  +
  +
  +
   
 
4. Выполняем сканирование порта, в который подключили жесткий диск.
 
4. Выполняем сканирование порта, в который подключили жесткий диск.
  +
echo "- - -" >/sys/class/scsi_host/'''host0'''/scan
 
  +
echo "- - -" >/sys/class/scsi_host/'''host0'''/scan
  +
 
где '''host0''' номер порта.
 
где '''host0''' номер порта.
  +
 
* Если нет точной уверенности, в какой именно порт воткнут новый диск, необходимо просканировать все имеющиеся порты. Список портов можно узнать:
 
* Если нет точной уверенности, в какой именно порт воткнут новый диск, необходимо просканировать все имеющиеся порты. Список портов можно узнать:
  +
ls /sys/class/scsi_host/
 
  +
ls /sys/class/scsi_host/
  +
 
5. Смотрим системный журнал, какое имя получил новый жесткий диск в системе:
 
5. Смотрим системный журнал, какое имя получил новый жесткий диск в системе:
  +
dmesg | grep "logical blocks"
 
  +
dmesg | grep "logical blocks"
  +
 
Ищем последнюю строку, например:
 
Ищем последнюю строку, например:
  +
sd 0:0:0:0: '''[sda]''' 234439535 512-byte logical blocks: (120 GB/111 GiB)
 
  +
sd 0:0:0:0: '''[sda]''' 234439535 512-byte logical blocks: (120 GB/111 GiB)
  +
 
Значит имя нового диска - '''sda'''
 
Значит имя нового диска - '''sda'''
  +
 
* Если новый диск физически при подключении получил другое имя например '''sdc''', надо отключить его программно выполнив:
 
* Если новый диск физически при подключении получил другое имя например '''sdc''', надо отключить его программно выполнив:
  +
echo "1" > /sys/block/'''sdc'''/device/delete
 
  +
echo "1" > /sys/block/'''sdc'''/device/delete
  +
 
После чего убедится что имя старого диска /dev/sda отсутствует в описании массива и если это не так выполним очистку как описано выше выше в пунке 1.
 
После чего убедится что имя старого диска /dev/sda отсутствует в описании массива и если это не так выполним очистку как описано выше выше в пунке 1.
  +
cat /proc/mdstat
 
  +
cat /proc/mdstat
  +
 
Затем выполнить сканирование sata портов.
 
Затем выполнить сканирование sata портов.
  +
  +
  +
   
 
==Активация нового диска==
 
==Активация нового диска==
  +
 
Чтобы не ошибиться в дальнейших действиях и не испортить данные создадим переменные с именами дисков.
 
Чтобы не ошибиться в дальнейших действиях и не испортить данные создадим переменные с именами дисков.
  +
cleandsk='''sda''' # чистый, пустой диск
 
  +
cleandsk='''sda''' # чистый, пустой диск
workdsk='''sdb''' # Диск, который содержит систему
 
  +
  +
workdsk='''sdb''' # Диск, который содержит систему
  +
 
Произведем копирование структуры разделов с рабочего на чистый диск и подключим его к массиву
 
Произведем копирование структуры разделов с рабочего на чистый диск и подключим его к массиву
  +
dd if=/dev/$workdsk of=/dev/$cleandsk bs=512 count=34
 
blockdev --rereadpt /dev/$cleandsk
+
dd if=/dev/$workdsk of=/dev/$cleandsk bs=512 count=34
  +
mdadm --add /dev/md0 /dev/${cleandsk}2
 
mdadm --add /dev/md1 /dev/${cleandsk}3
+
blockdev --rereadpt /dev/$cleandsk
  +
  +
mdadm --add /dev/md0 /dev/${cleandsk}2
  +
  +
mdadm --add /dev/md1 /dev/${cleandsk}3
  +
 
* Устанавливаем загрузчик на новый диск
 
* Устанавливаем загрузчик на новый диск
  +
grub
 
  +
grub
  +
 
И последовательно вводим, где 0 это номер диска:
 
И последовательно вводим, где 0 это номер диска:
  +
root (hd'''0''',0)
 
setup (hd'''0''')
+
root (hd'''0''',0)
  +
quit
 
  +
setup (hd'''0''')
  +
  +
quit
  +
 
Смотрим процесс синхронизации
 
Смотрим процесс синхронизации
  +
watch cat /proc/mdstat
 
  +
watch cat /proc/mdstat
  +
 
Как только процесс завершиться, новый диск станет полноценным участником массива и в случае выхода из строя другого диска, система загрузится с него.
 
Как только процесс завершиться, новый диск станет полноценным участником массива и в случае выхода из строя другого диска, система загрузится с него.

Обратите внимание, что все правки на Man вики публикуются по лицензии CC-BY-SA