Назад | Перейти на главную страницу

Как создать виртуальную машину в зашифрованном контейнере с помощью virsh

Я хотел бы использовать механизм шифрования тома libvirt. Однако мне не удалось найти информацию о том, как использовать эту функцию при запуске virt-install.

Как передать соответствующие параметры?

Редактировать 1

Основываясь на ответе Коула Робинсона, я попробовал следующее:

virsh --connect qemu:///system secret-define /tmp/testSecret.xml

MYSECRET=`printf %s "blablablaOpen" | base64`

virsh --connect qemu:///system secret-set-value f52a81b2-424e-490c-823d-6bd4235bc572 $MYSECRET

virsh --connect qemu:///system vol-create vm_images /tmp/testLuks.xml

virt-install --disk source_pool=vm_images,source_volume=MyLuks.img --connect qemu:///system -n luksTest -r 2048 --os-type=linux --os-variant debian10 --vnc --location ftp://ftp2.de.debian.org/debian/dists/buster/main/installer-amd64

с testSecret.xml:

<secret ephemeral='no' private='yes'>
   <description>Secret to protect File System</description>
   <uuid>f52a81b2-424e-490c-823d-6bd4235bc572</uuid>
   <usage type='volume'>
      <volume>/opt/vm_images/MyLuks.img</volume>
   </usage>
</secret>

и testLuks.xml:

<volume>
  <name>MyLuks.img</name>
  <capacity unit="G">5</capacity>
  <target>
    <path>/opt/vm_images/MyLuks.img</path>
    <format type='raw'/>
    <encryption format='luks'>
      <secret type='passphrase' uuid='f52a81b2-424e-490c-823d-6bd4235bc572'/>
    </encryption>
  </target>
</volume>

Однако я получаю сообщение об ошибке:

ERROR    internal error: process exited while connecting to monitor: 2019-10-15T05:29:57.582967Z qemu-system-x86_64: -drive file=/opt/vm_images/MyLuks.img,format=raw,if=none,id=drive-virtio-disk0: Could not open '/opt/vm_images/MyLuks.img': Permission denied

Я предполагаю, что это вызвано тем, что virt-install не поддерживает зашифрованные файловые системы.

Таким образом, я повтори мой вопрос:

Как попасть на загрузочную виртуальную машину (например, Debian) внутри зашифрованного контейнера?

Одна из идей может заключаться в клонировании системы в зашифрованный контейнер.

virt-install не поддерживает его создание изначально. вам нужно будет создать том напрямую с помощью libvirt (virsh vol-create или аналогичного). Также virt-install еще не поддерживает <disk><encryption> XML тоже нет. Возможно, вы сможете заставить libvirt делать правильные вещи с помощью:

virt-install --disk source.pool=POOLNAME,source.volume=VOLNAME

Но сам не пробовал.