Как смонтировать виртуальный диск виртуальной машины на гипервизоре KVM с помощью Libguestfs Tools

Как смонтировать виртуальный диск виртуальной машины на гипервизоре KVM с помощью Libguestfs Tools

 

Некоторое время я управляю несколькими виртуальными машинами на гипервизоре Vanilla KVM. Предположим, у вас есть виртуальная машина, виртуальный диск которой вы хотите смонтировать на гипервизоре, как это сделать? — Например, для сброса пароля root, проверки некоторых файлов или, возможно, виртуальная машина была взломана, и вы хотите выполнить дополнительный анализ источника атаки, не переводя виртуальную машину в рабочий режим.

Как смонтировать виртуальный диск ВМ на гипервизор KVM

В моей настройке у меня есть сервер CentOS 7 с установленным KVM и запущенным несколькими виртуальными машинами. Чтобы смонтировать виртуальный диск виртуальной машины, вам необходимо установить Libguestfs.

libguestfs — это набор инструментов, используемых для доступа и изменения образов дисков виртуальных машин (ВМ). Вы можете использовать это для:

  • просмотр и редактирование файлов внутри гостей
  • изменение сценариев для виртуальных машин
  • мониторинг используемого диска / бесплатная статистика
  • создание гостей
  • P2V
  • V2V
  • выполнение резервного копирования и т. д.

Установите libguestfs на CentOS:

Чтобы установить libguestfs на сервер CentOS, запустите:

sudo yum -y install libguestfs-tools

Установите libguestfs в Ubuntu / Debian

sudo apt-get -y install libguestfs-tools

Установите libguestfs в Arch Linux

Сначала включите AUR в  /etc/pacman.conf

$ sudo vim /etc/pacman.conf

# Should have below lines
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

Затем обновите свои базы данных Pacman.

sudo pacman -Syy

Установите инструменты libguestfs с помощью помощника AUR.

sudo pacman -S yaourt
yaourt -S --noconfirm --needed libguestfs

Монтирование виртуального диска на KVM с помощью libguestfs

Теперь, когда у вас установлены инструменты libguestfs, вы монтируете с ним виртуальный диск виртуальной машины. Перед установкой виртуальной машины рекомендуется выключить ее. Запись на диски работающей виртуальной машины может привести к повреждению диска. Рекомендуется либо использовать доступ только для чтения, либо, если гость запускает демон guestfsd , указать прямой доступ. В большинстве libguestfs инструментов эти варианты -ro или -live соответственно.

Сначала проверьте свои активные виртуальные машины:

sudo virsh list

Выключите рассматриваемую виртуальную машину:

sudo virsh shutdown <domain-name or ID>

Затем смонтируйте диск,

sudo guestmount -d <domain> -i /mnt/

Пример:

sudo guestmount -d centos7 -i /mnt/

Подтвердите, что монтирование прошло успешно:

# df -hT | egrep "/mnt"
/dev/fuse fuse 20G 3.9G 16G 20% /mnt

Объяснение используемых опций

-d |–domain : добавить диски из libvirt guest
-i |–inspector : автоматически монтировать файловые системы

Ниже приведен полный список параметров, которые вы можете использовать с командой guestmount. Это доступно по адресу:

$ guestmount --help

Все варианты гостевой системы:

-a |--add image --> Add image
-c|--connect uri --> Specify libvirt URI for -d option
--dir-cache-timeout --> Set readdir cache timeout (default 5 sec)
-d |--domain --> Add disks from libvirt guest
--echo-keys --> Don't turn off echo for passphrases
--fd=FD --> Write to pipe FD when mountpoint is ready
--format[=raw|..] --> Force disk format for -a option
--fuse-help --> Display extra FUSE options
-i |--inspector --> Automatically mount filesystems 
--help --> Display help message and exit
--keys-from-stdin --> Read passphrases from stdin
--live --> Connect to a live virtual machine
-m |--mount dev[:mnt[:opts[:fstype]] --> Mount dev on mnt (if omitted, /)
--no-fork --> Don't daemonize
-n |--no-sync --> Don't autosync
-o |--option --> opt Pass extra option to FUSE
--pid-file --> filename Write PID to filename
-r |--ro --> Mount read-only
--selinux --> For backwards compat only does nothing
-v |--verbose --> Verbose messages
-V |--version --> Display version and exit
-w |--rw --> Mount read-write
-x |--trace --> Trace guestfs API calls

Смонтировать виртуальный диск запущенной ВМ

Для работающей виртуальной машины я ранее говорил, что вы должны монтировать ее как — ro  или используя  флаг –live  .

sudo guestmount --ro -d <domain> -i /mnt/

Пример сброса пароля root:

Я покажу вам, как можно сбросить пароль root, используя подключенный виртуальный диск. Мы будем использовать  команду chroot,  которая представляет собой инструмент, используемый для запуска команды или интерактивной оболочки со специальным корневым каталогом.

sudo chroot /mnt
passwd

Установите пароль и отключите диск после завершения

sudo guestunmount  /mnt

Запустите виртуальную машину и проверьте, можете ли вы пройти аутентификацию с установленным паролем.

sudo virsh start <domain>

Отключить виртуальный диск

Если вы закончили работу с смонтированным диском, отключите его, выполнив команды:

$ sudo guestunmount mountpoint
Например
$ sudo guestunmount  /mnt