Martin Kletzander
2016-Apr-20 06:17 UTC
Re: [libvirt-users] Create multiple domains from single saved domain state (is UUID/name fixed?)
On Tue, Apr 19, 2016 at 03:22:18PM -0700, Jonas Finnemann Jensen wrote:>> >> You'll also need to change the name and uuid of the domain at the very >> least. > >Agree, but is that possible with libvirt? >Not in a supported way. But you can, technically, edit the save file (not using virsh), change the name and uuid and restore it. But don't seek help when something doesn't work for you after that =)>If you do that (restore a previously running image with a different MAC >> address) > >Yeah, probably I wouldn't change the MAC address. As I want to attach the >VMs to different networks. >I rely on the IP being in a different subnet to identify the VM in my >metadata service. >Using IP filters to enforce the subnet seems like the most robust way of >being sure which VM I'm talking to. > >possibly by having the host toggle the interface offline and back on > >Yeah, I think unplugging the virtual network cable before I save the VM >memory, and plugging it back in after I load the VM, then DHCP would run >immediately. >As an added benefit any guest program I have talking to my meta-data >service would be able to detect that the VM has been loaded, by looking for >network connection. > > >-- >Regards Jonas Finnemann Jensen. > >2016-04-19 14:26 GMT-07:00 Laine Stump <laine@laine.org>: > >> (please don't top-post. Put your responses inline, in context) >> >> On 04/19/2016 01:09 PM, Jonas Finnemann Jensen wrote: >> >>> virt-builder looks like some fancy guest/host interaction related to >>> building VM images. >>> >>> What I'm looking for is more like: >>> virsh save running_domain saved-domain-A.img >>> cp saved-domain-A.img saved-domain-B.img >>> virsh save-image-edit saved-domain-B.img // Change the network, >>> possibly MAC, VNC port >>> >> >> You'll also need to change the name and uuid of the domain at the very >> least. And I assume these will all be transient domains, not persistent. >> >> >>> Then in parallel I want to do: >>> virsh restore saved-domain-A.img >>> virsh restore saved-domain-B.img >>> >> >> If you do that (restore a previously running image with a different MAC >> address), at the very least the guest OS will be confused about the MAC >> address of the network card, and you'll very likely end up with both guests >> responding to ARP requests for the original MAC address. There's likely >> other problems that I haven't thought of that will happen as well. >> >> >>> So that I have two instances of the same virtual machine starting from >>> the same state. >>> This way I can reset the VMs without having to reboot them (booting is >>> rather slow). >>> >>> I practice I'll probably have ~16 instances at the same time. Constantly >>> being reset to the same state. >>> I tried with QEMU, and it's seems totally doable with savevm, copy file, >>> then doing loadvm twice in parallel. >>> (I'll be using a separate network for each VM, so I can be sure which one >>> I'm talking to). >>> >> >> Well, as long as they're completely isolated from each other, you may have >> a better chance of success. However there will still be the issue of the IP >> address of the network interface. You can't have two networks using the >> same IP range (since libvirt doesn't use network namespaces for its >> networks), so the guest will need to change its IP, which means it will >> need to be notified of this need, possibly by having the host toggle the >> interface offline and back on - you can use virsh domif-setlink to do this. >> >> >> >>> Is this doable with libvirt, or am I better off using QEMU directly? and >>> how? I couldn't do internal snapshots with --live, and snapshot-revert says >>> it can't revert to external snapshots yet :) >>> (using QEMU directly would certainly leave me with a lot of manual >>> network configuration) >>> >> >> Someone else will have to talk about the particulars of snapshots... >> >>
Jonas Finnemann Jensen
2016-Apr-20 06:24 UTC
Re: [libvirt-users] Create multiple domains from single saved domain state (is UUID/name fixed?)
Fair enough :) I just wanted to make sure it wasn't supported... I'm probably better off using QEMU directly. I totally understand that libvirt makes some sane decisions that makes sense for data center management. I'm not sure why it couldn't be done. But honestly hacking libvirt to violate a core invariant is probably asking for trouble :) Den 19. apr. 2016 11.17 PM skrev "Martin Kletzander" <mkletzan@redhat.com>:> On Tue, Apr 19, 2016 at 03:22:18PM -0700, Jonas Finnemann Jensen wrote: > >> >>> You'll also need to change the name and uuid of the domain at the very >>> least. >>> >> >> Agree, but is that possible with libvirt? >> >> > Not in a supported way. But you can, technically, edit the save file > (not using virsh), change the name and uuid and restore it. But don't > seek help when something doesn't work for you after that =) > > If you do that (restore a previously running image with a different MAC >> >>> address) >>> >> >> Yeah, probably I wouldn't change the MAC address. As I want to attach the >> VMs to different networks. >> I rely on the IP being in a different subnet to identify the VM in my >> metadata service. >> Using IP filters to enforce the subnet seems like the most robust way of >> being sure which VM I'm talking to. >> >> possibly by having the host toggle the interface offline and back on >> >> Yeah, I think unplugging the virtual network cable before I save the VM >> memory, and plugging it back in after I load the VM, then DHCP would run >> immediately. >> As an added benefit any guest program I have talking to my meta-data >> service would be able to detect that the VM has been loaded, by looking >> for >> network connection. >> >> >> -- >> Regards Jonas Finnemann Jensen. >> >> 2016-04-19 14:26 GMT-07:00 Laine Stump <laine@laine.org>: >> >> (please don't top-post. Put your responses inline, in context) >>> >>> On 04/19/2016 01:09 PM, Jonas Finnemann Jensen wrote: >>> >>> virt-builder looks like some fancy guest/host interaction related to >>>> building VM images. >>>> >>>> What I'm looking for is more like: >>>> virsh save running_domain saved-domain-A.img >>>> cp saved-domain-A.img saved-domain-B.img >>>> virsh save-image-edit saved-domain-B.img // Change the network, >>>> possibly MAC, VNC port >>>> >>>> >>> You'll also need to change the name and uuid of the domain at the very >>> least. And I assume these will all be transient domains, not persistent. >>> >>> >>> Then in parallel I want to do: >>>> virsh restore saved-domain-A.img >>>> virsh restore saved-domain-B.img >>>> >>>> >>> If you do that (restore a previously running image with a different MAC >>> address), at the very least the guest OS will be confused about the MAC >>> address of the network card, and you'll very likely end up with both >>> guests >>> responding to ARP requests for the original MAC address. There's likely >>> other problems that I haven't thought of that will happen as well. >>> >>> >>> So that I have two instances of the same virtual machine starting from >>>> the same state. >>>> This way I can reset the VMs without having to reboot them (booting is >>>> rather slow). >>>> >>>> I practice I'll probably have ~16 instances at the same time. Constantly >>>> being reset to the same state. >>>> I tried with QEMU, and it's seems totally doable with savevm, copy file, >>>> then doing loadvm twice in parallel. >>>> (I'll be using a separate network for each VM, so I can be sure which >>>> one >>>> I'm talking to). >>>> >>>> >>> Well, as long as they're completely isolated from each other, you may >>> have >>> a better chance of success. However there will still be the issue of the >>> IP >>> address of the network interface. You can't have two networks using the >>> same IP range (since libvirt doesn't use network namespaces for its >>> networks), so the guest will need to change its IP, which means it will >>> need to be notified of this need, possibly by having the host toggle the >>> interface offline and back on - you can use virsh domif-setlink to do >>> this. >>> >>> >>> >>> Is this doable with libvirt, or am I better off using QEMU directly? and >>>> how? I couldn't do internal snapshots with --live, and snapshot-revert >>>> says >>>> it can't revert to external snapshots yet :) >>>> (using QEMU directly would certainly leave me with a lot of manual >>>> network configuration) >>>> >>>> >>> Someone else will have to talk about the particulars of snapshots... >>> >>> >>>
Martin Kletzander
2016-Apr-20 06:30 UTC
Re: [libvirt-users] Create multiple domains from single saved domain state (is UUID/name fixed?)
On Tue, Apr 19, 2016 at 11:24:56PM -0700, Jonas Finnemann Jensen wrote:>Fair enough :) >I just wanted to make sure it wasn't supported... I'm probably better off >using QEMU directly. I totally understand that libvirt makes some sane >decisions that makes sense for data center management. > >I'm not sure why it couldn't be done. But honestly hacking libvirt to >violate a core invariant is probably asking for trouble :) >We could add some --i-know-what-i-am-doing flag to allow such things if there's a use case for such scenario. Patches are welcome ;)))>Den 19. apr. 2016 11.17 PM skrev "Martin Kletzander" <mkletzan@redhat.com>: > >> On Tue, Apr 19, 2016 at 03:22:18PM -0700, Jonas Finnemann Jensen wrote: >> >>> >>>> You'll also need to change the name and uuid of the domain at the very >>>> least. >>>> >>> >>> Agree, but is that possible with libvirt? >>> >>> >> Not in a supported way. But you can, technically, edit the save file >> (not using virsh), change the name and uuid and restore it. But don't >> seek help when something doesn't work for you after that =) >> >> If you do that (restore a previously running image with a different MAC >>> >>>> address) >>>> >>> >>> Yeah, probably I wouldn't change the MAC address. As I want to attach the >>> VMs to different networks. >>> I rely on the IP being in a different subnet to identify the VM in my >>> metadata service. >>> Using IP filters to enforce the subnet seems like the most robust way of >>> being sure which VM I'm talking to. >>> >>> possibly by having the host toggle the interface offline and back on >>> >>> Yeah, I think unplugging the virtual network cable before I save the VM >>> memory, and plugging it back in after I load the VM, then DHCP would run >>> immediately. >>> As an added benefit any guest program I have talking to my meta-data >>> service would be able to detect that the VM has been loaded, by looking >>> for >>> network connection. >>> >>> >>> -- >>> Regards Jonas Finnemann Jensen. >>> >>> 2016-04-19 14:26 GMT-07:00 Laine Stump <laine@laine.org>: >>> >>> (please don't top-post. Put your responses inline, in context) >>>> >>>> On 04/19/2016 01:09 PM, Jonas Finnemann Jensen wrote: >>>> >>>> virt-builder looks like some fancy guest/host interaction related to >>>>> building VM images. >>>>> >>>>> What I'm looking for is more like: >>>>> virsh save running_domain saved-domain-A.img >>>>> cp saved-domain-A.img saved-domain-B.img >>>>> virsh save-image-edit saved-domain-B.img // Change the network, >>>>> possibly MAC, VNC port >>>>> >>>>> >>>> You'll also need to change the name and uuid of the domain at the very >>>> least. And I assume these will all be transient domains, not persistent. >>>> >>>> >>>> Then in parallel I want to do: >>>>> virsh restore saved-domain-A.img >>>>> virsh restore saved-domain-B.img >>>>> >>>>> >>>> If you do that (restore a previously running image with a different MAC >>>> address), at the very least the guest OS will be confused about the MAC >>>> address of the network card, and you'll very likely end up with both >>>> guests >>>> responding to ARP requests for the original MAC address. There's likely >>>> other problems that I haven't thought of that will happen as well. >>>> >>>> >>>> So that I have two instances of the same virtual machine starting from >>>>> the same state. >>>>> This way I can reset the VMs without having to reboot them (booting is >>>>> rather slow). >>>>> >>>>> I practice I'll probably have ~16 instances at the same time. Constantly >>>>> being reset to the same state. >>>>> I tried with QEMU, and it's seems totally doable with savevm, copy file, >>>>> then doing loadvm twice in parallel. >>>>> (I'll be using a separate network for each VM, so I can be sure which >>>>> one >>>>> I'm talking to). >>>>> >>>>> >>>> Well, as long as they're completely isolated from each other, you may >>>> have >>>> a better chance of success. However there will still be the issue of the >>>> IP >>>> address of the network interface. You can't have two networks using the >>>> same IP range (since libvirt doesn't use network namespaces for its >>>> networks), so the guest will need to change its IP, which means it will >>>> need to be notified of this need, possibly by having the host toggle the >>>> interface offline and back on - you can use virsh domif-setlink to do >>>> this. >>>> >>>> >>>> >>>> Is this doable with libvirt, or am I better off using QEMU directly? and >>>>> how? I couldn't do internal snapshots with --live, and snapshot-revert >>>>> says >>>>> it can't revert to external snapshots yet :) >>>>> (using QEMU directly would certainly leave me with a lot of manual >>>>> network configuration) >>>>> >>>>> >>>> Someone else will have to talk about the particulars of snapshots... >>>> >>>> >>>>
Maybe Matching Threads
- Re: Create multiple domains from single saved domain state (is UUID/name fixed?)
- Re: Create multiple domains from single saved domain state (is UUID/name fixed?)
- Re: Create multiple domains from single saved domain state (is UUID/name fixed?)
- Re: Create multiple domains from single saved domain state (is UUID/name fixed?)
- Re: Create multiple domains from single saved domain state (is UUID/name fixed?)