LINUX.ORG.RU
решено ФорумAdmin

Операции с образом XENserver

 , , ,


1

1

Здравствуйте, уважаемые!

У меня возникла неприятная проблемка, решение которой не нашел нигде. Есть хостовая машина под Centos-7, на ней установлен XENserver. Под ксеном вертится несколько виртуальных машин, на каждой из которых тоже центос. Случилось следующее: на одной из виртуалок «сломался» файл правил iptables, вернее все ip, которые в нем прописаны для захода, оказались недоступны, поэтому к данной виртуалке пропал доступ и по ftp и по ssh и по webmin. Единственное что я могу сделать, это скачать образ этой виртуалки с хостовой машины вида site.img.

Вопрос у меня к вам такой: Можно ли хоть каким-то образом этот ксеновский образ site.img «разархивировать», исправить в нем файл iptables и «заархивировать» обратно, но так, чтобы XEN его принял как родной?

Квм умеет поднимать vnc с доступом к консоли как раз для таких случаев. Ксен не?

Deleted
()

site.img

Если он в raw-формате, то можно через losetup:

losetup -f -P disk.img
После этого все разделы будут видны на отдельном лупдевайсе.

Deleted
()
Ответ на: комментарий от Deleted

Умеет по идее, но на виртуалке должен быть открыт нужный порт. Я попробую посмотреть что там с портами.

Shmel282
() автор топика
Ответ на: комментарий от Shmel282

Можешь не писать эту опцию. Она для того, чтобы автоматом найти все разделы на поднятом loopdevice. Потом просто partprobe сделаешь.

Deleted
()
Ответ на: комментарий от Deleted

Походу образ не в raw-формате. losetup не видит его никаким боком.

Shmel282
() автор топика
Ответ на: комментарий от Shmel282

Нет. Это задается в настройках ВМ. Можно добавить в конфиг vnc-консоль и рестартануть виртуалку. В квм так, по крайней мере, зен не щупал.

Deleted
()

Решено!

Итак, друзья, я нашёл решение, может быть кому-то пригодится.

Метод я взял вот из этой статьи https://www.certdepot.net/rhel7-access-virtual-machines-console/

Итак, у меня была виртуальная машина Xen с названием например vm_name, к которой пропал любой удалённый доступ из-за правил iptables. Подключение с помощью virsh console вешало консоль намертво на строке «Escape character is ^]».

Как оказалось, это из-за того, что в grub.cfg не прописана строчка разрешающая доступ через консоль «console=ttyS0». Но как ее исправить, если нет доступа к виртуалке ни по ftp, ни по ssh?

Я сделал следующее: 1)Принудительно останавливаем работу нужной виртуалки: virsh destroy vm_name. 2)Делаем мэппинг образа виртуалки, которые обычно лежат в /var/lib/libvirt/images/.

kpartx -av /var/lib/libvirt/images/vm_name.img

3)Монтируем загрузочный раздел(тот который меньше размером):

mount /dev/mapper/loop0p1 /mnt

4)В папке /mnt находим файл либо grub.cfg либо grub.conf(В статье написан адрес /mnt/grub2/grub.cfg, но у меня он лежал в /mnt/grub/grub.conf)

5)В нем, в конце каждой строки, которая начинается с /vmlinuz добавляем console=ttyS0. Сохраняем изменения в файле grub.cfg

6)Размонтируем раздел

umount /mnt

7)Выполняем анмаппинг

kpartx -dv /var/lib/libvirt/images/vm_name.img

8)Заново запускаем нашу виртуалку virsh start vm_name

9)Далее просто заходим на виртуалку через virsh console vm_name и получаем полный доступ.

Вы всё это и так знаете, но поскольку я ламо, то для меня этот метод был в новинку) Спасибо всем, кто пытался подсказать.

Shmel282
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.