Помните, мы говорили про резервное копирование за NAT’ом? Так вот, поскольку резервное копирование без восстановление мертво, приходим к еще одной интересной теме. В моем случае, проблема образовалась из того, что хостинг предоставляет виртуалки на базе QEMU-KVM, а у меня только Hyper-V и VmWare. Мой рецепт успешно отработал на CentOS 7/8, остальное не обещаю.

Сложности связаны с тем, что CentOS типа умный и раздаёт разные имена дисковых накопителей в зависимости от того, что ему сообщает окружение или, в нашем случае, система виртуализации. В частности, диски QEMU монтируются как vdx, а VmWare – как sdx. Соответственно, загрузчик падает на бок и говорит, что нужного диска найти не может и отстаньте. Легких путей не будет, потому что “в лоб” восстановление всё равно не взлетит, можно особенно и не пытаться.

Первое – создаем виртуалку со схожими процессорно-памятными харатеристиками, чтобы система не прилегла прямо на старте. Добавляем в неё диск типа IDE или SATA соответствующего объема. Если оставить дефолтный ISCSI Paravirtual, мы получим ошибку “/dev/disk/by-uuid does not exist” и я не нашел, как её вылечить. Обязательно ставим режим загрузки BIOS, иначе будут сложности с поиском загрузочного тома в принципе.

Второе – монтируем диск восстановления Veeam и с его помощью один-в-один восстанавливаем диск из резервной копии. И да, если ваш сервер всё еще за NAT’ом, вам придется либо открывать нужные порты, указанные в соответствующей статье, либо городить огород с чистой системой на временном диске, куда будет поставлен VPN-клиент и Veeam-агент с восстановлением на второй диск, который станет постоянным. Уф….

Третье – подключаем LiveCD CentOS и грузимся в режиме Troubleshooting. Говорим, что мы хотим сделать Rescue a CentOS system и выбираем первый пункт. Если забыли или не знаем имя диска, спрашиваем:

fdisk -l

В моем случае диск назывался sda, а в оригинале было vda. Будем править конфиги. По идее, системный раздел должен примонтироваться в /mnt/sysimage. Если вдруг этого не произошло, монтируем его сами:

mount /dev/sda1 /mnt/sysimage

Чтобы всё отработало корректно, нужно также присоединить окружение нашего сервера:

mount --bind /proc /mnt/sysimage/proc
mount --bind /dev /mnt/sysimage/dev 
mount --bind /sys /mnt/sysimage/sys 
mount --bind /run /mnt/sysimage/run 
chroot /mnt/sysimage

Далее в конфигах меняем имя диска:

nano /etc/fstab
nano /boot/grub2/grub.cfg

Ну и, наконец, устанавливаем загрузчик со всеми изменениями на место

grub2-install /dev/sda

Перезагружаем сервер и наслаждаемся работой сервера. Кстати, можно попробовать всё это провернуть и без LiveCD, если система загружается хоть как-то.

Добавить комментарий