[libvirt-users] Detach disk from VM - virsh (working) vs. PHP (not working)

Martin Kletzander mkletzan at redhat.com
Fri Aug 2 09:27:07 UTC 2019


On Thu, Aug 01, 2019 at 10:12:15AM +0200, Jan Horak wrote:
>Hi all,
>
>i created a script in PHP for create a virtual server with two QCOW2 discs … one is our system for installation and second is target system.
>
>After successfully instalation (create a blank Debian system, prepare all files and grub partitions) i need a restart virtual without a installation disk.
>
>If i use Virsh:
>
>detach-disk --domain debian-test2 --persistent --target vda
>reset debian-test2
>

Hi,

I cannot really help you with the PHP part and I'm not sure about more things,
but this particular scenario is something that libvirt is actually prepared to
do (kind of) and for example virt-install uses it.  The approach is as follows:

1) You create the XML that you want the VM to have when installing the machine,
   let's call it the "install xml".

2) You create the XML that the VM should start with when it is already installed
   and it is the one that will persist in the libvirt configuration for long
   time (well, longer than the install xml).  Let's call this the "persistent xml".

3) You define the VM using the persistent xml.  That will get you a VM that is
   not started.

4) Then, you start the machine with the install xml, using the create API
   (analogous to virsh create vm.xml).  Just make sure the name and UUID are the
   same.

That will get you a VM running with the install xml that, when turned off and
then started again (without reboot/reset/restart, you need to have it shut down
completely before starting it) will start with the persistent xml.  No need to
have support for disk hot-(un)plug, no magic.

Even better way to use this is registering a callback for the VM's lifecycle
event, starting the VM after the event was fired.  That way you can automate the
installation to turn off the machine after it is completed and there is no need
for any polling.  I'm not sure, however, how relevant that is or if it is
possible to be used from the PHP bindings.

Have a nice day,
Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20190802/edc175db/attachment.sig>


More information about the libvirt-users mailing list