Общая часть: приготовление и восстановление бэкапа
В качестве исходной системы у нас Дебиан/Центось, установленные на один ext4-раздел, который зеркалится на 2 физических диска (скриншоты с центоси).
Легким движением руки выдираем один из дисков, создавая деградацию рейда.
Время делать бэкап =)
Конечно лучше если бэкап уже есть, но в нашем простом случае сделать бэкап также легко:
Эта команда создаст сжатую копию всего корня, за исключением трех директорий содержимое которых регенерируется автоматически, и директории /mnt, в которой у нас в данном случае нет ничего, кроме файла бэкапа.tar -czpvf /mnt/backup.tgz --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/mnt /
Когда бэкап приготовился, гасим машину и устанавливаем 2 новых харда, которые составят новое зеркало.
Также я использую убунтовый live cd "Boot-Repair" для дальнейших операции, но, собственно, встроенной функцией автоматического восстановления пользоваться не буду. Так что на месте этого диска может быть любой другой Live CD, главное чтобы совпадала архитектура и были доступны утилиты mdadm, chroot, и parted (в моем случае он идет с GUI)
Итак, теперь у нас есть машинка с тремя дисками: половинка бывшего рейда, от которой нам нужен только файл бэкапа; и два новых неотформатированных диска.
После загрузки с лайва, закрываем все выплывающие окошки и открываем редактор разделов. sda1 - бэкап, sdb и sdc - пустые
На дисках sdb и sdc создаем таблицу разделов (Device -> Create Partition Table). Я использую GPT, потому что она подразумевает возможность использования разделов большого объема, а также создает дополнительные сложности для восстановления системы.
После создания таблицы, на обоих дисках создаем симметричную конфигурацию: 2 неотформатированных раздела - первый большой под систему, второй маленький (я оставил буквально 10 мегабайт в конце диска).
1 2 | sudo bash apt install mdadm |
Так как архив у нас лежит не на простом диске, а диске, который некогда был частью рейда, необходимо этот самый рейд обнаружить.
(Warning! Обратите внимание, что в результате выполнения первой команды, при восстановлении центоси создается устройство /dev/md127, а при восстановлении дебиана - /dev/md0. Нижеследующий блок справедлив для центоси)
(Warning! Обратите внимание, что в результате выполнения первой команды, при восстановлении центоси создается устройство /dev/md127, а при восстановлении дебиана - /dev/md0. Нижеследующий блок справедлив для центоси)
1 2 3 4 5 6 7 | # сканируем систему на наличие рейдов # эта команда создаст устройство, в моем случае /dev/md127 - нашу # половинку зеркала с бэкапом mdadm --assemble --scan # создаем папку /mnt/backup и монтируем в нее найденный рейд mkdir /mnt/backup mount /dev/md127 /mnt/backup |
Файлик бэкапа у нас в каталоге /mnt/backup/mnt/, теперь нужно приготовить новый рейд и залить на него бэкап.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # создаем новое устройство рейда # имя может быть любым незанятым, # например /dev/md1 # --level=1 - зеркало # --raid-devices=2 - 2 диска в рейде mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 # форматируем новый рейд mkfs.ext4 /dev/md1 # создаем директорию и монтируем рейд в нее mkdir /mnt/root mount /dev/md1 /mnt/root # распаковываем архив tar -xpvf /mnt/backup/mnt/backup.tgz -C /mnt/root/ |
После распаковки нужно чрутнуться в корень восстанавливаемой системы.
1 2 3 4 5 6 7 8 9 10 11 | # создаем недостающие директории mkdir /mnt/root/dev mkdir /mnt/root/proc mkdir /mnt/root/sys mkdir /mnt/root/mnt # к первым трем монтируем рабочие директории лайва mount -o bind /dev/ /mnt/root/dev/ mount -o bind /proc/ /mnt/root/proc/ mount -o bind /sys/ /mnt/root/sys/ # чрутимся chroot /mnt/root/ |
С этого момента пути восстановления дебиана и центоси расходятся
Debian
После чрута выполняем команду
blkid
Она покажет ID нашего рейда /dev/md1.
Этот ID нужно прописать в /etc/fstab вместо имеющегося там.
Далее выполняем
1 2 3 4 5 6 7 8 9 10 | # прописываем в конфиг данные актуального рейда mdadm --detail --scan | grep md1 > /etc/mdadm/mdadm.conf # пересобираем initrd update-initramfs -u # обновляем конфиг загрузчика update-grub2 # устанавливаем загрузчик на оба # физических диска grub-install /dev/sdb grub-install /dev/sdc |
Собственно всё. Вытаскиваем старые диски, отключаем сидиром, перезагружаемся и видим наш дебиан в целости и сохранности.
CentOS
С центосью возни чуть больше, чем с дебианом, но ненамного.
После чрута правим /etc/fstab, заменяя айдишник корня на имя устройства. В нашем случае /dev/md1
(Attention! на картинках ниже везде используется /dev/md0 - не обращайте внимания, просто я его так назвал во время экспериментов с центосью)
(Attention! на картинках ниже везде используется /dev/md0 - не обращайте внимания, просто я его так назвал во время экспериментов с центосью)
После этого правим /etc/dracut.conf, раскомментируем параметр mdadmconf и присвоим ему значение yes.
Далее выполняем
mdadm --detail --scan | grep md1
Эта команда выдаст ID нашего нового рейда.
Этот ID нужно указать в файлике /etc/default/grub вместо старого
Теперь
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # прописываем в конфиг данные актуального рейда mdadm --detail --scan | grep md1 > /etc/mdadm.conf # пересобираем initrd, # смотрим на ВАШ файлик *.img в директории /boot # и меняем версию по аналогии, если она отлична от моей dracut /boot/initramfs-3.10.0-514.el7.x86_64.img 3.10.0-514.el7.x86_64 --force # обновляем конфиг загрузчика grub2-mkconfig -o /boot/grub2/grub.conf # устанавливаем загрузчик на оба # физических диска grub2-install /dev/sdb grub2-install /dev/sdc # создаем специальный файлик, без которого магии не случится touch /.autorelabel |
Перезагружаемся (один раз система перезагрузится автоматически - это нормально) и радуемся ожившей системе.
Комментариев нет:
Отправить комментарий