cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marcus Sorensen <>
Subject Re: [DISCUSS] getting rid of KVM patchdisk
Date Tue, 05 Mar 2013 00:27:45 GMT
I tested this with Rohit's systemvm from master. It works fine,
provided you install the qemu-guest-agent software and modify the
libvirt xml definition of the system vm to include something like:

   <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/v-2-VM.agent'/>
      <target type='virtio' name='org.qemu.guest_agent.0'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>

Then on the host you can connect to the
/var/lib/libvirt/qemu/v-2-VM.agent unix socket and send QMP JSON to do
things like write files. We can't execute the various scripts through
it, but we also don't have to use qemu-ga; we could have our own thing
listening on the unix socket.

On Mon, Mar 4, 2013 at 3:24 PM, Marcus Sorensen <> wrote:
> I think this just requires an updated system vm (the virtio-serial
> portion). I've played a bit with the old debian 2.6.32-5-686-bigmem
> one and can't get the device nodes to show up, even though the
> /boot/config shows that it has CONFIG_VIRTIO_CONSOLE=y. However, if I
> try this with a CentOS 6.3 VM, on a CentOS 6.3 or Ubuntu 12.04 KVM
> host it works. So I'm not sure what's being used for the ipv6 update,
> but we can probably make one that works. We'll need to install qemu-ga
> and start it within the systemvm as well.
> On Mon, Mar 4, 2013 at 12:41 PM, Edison Su <> wrote:
>>> -----Original Message-----
>>> From: Marcus Sorensen []
>>> Sent: Sunday, March 03, 2013 12:13 PM
>>> To:
>>> Subject: [DISCUSS] getting rid of KVM patchdisk
>>> For those who don't know (this probably doesn't matter, but...), when KVM
>>> brings up a system VM, it creates a 'patchdisk' on primary storage. This
>>> patchdisk is used to pass along 1) the authorized_keys file and 2) a 'cmdline'
>>> file that describes to the systemvm startup services all of the various
>>> properties of the system vm.
>>> Example cmdline file:
>>>  template=domP type=secstorage host= port=8250 name=s-1-
>>> VM
>>> zone=1 pod=1 guid=s-1-VM
>>> instance=SecStorage sslcopy=true role=templateProcessor mtu=1500
>>> eth2ip= eth2mask= gateway=
>>> eth0ip= eth0mask=
>>> eth1ip= eth1mask= mgmtcidr=
>>> localgw= eth3ip=
>>> eth3mask= storageip=
>>> storagenetmask= storagegateway=
>>> internaldns1= dns1=
>>> This patch disk has been bugging me for awhile, as it creates a volume that
>>> isn't really tracked anywhere or known about in cloudstack's database. Up
>>> until recently these would just litter the KVM primary storages, but there's
>>> been some triage done to attempt to clean them up when the system vms
>>> go away. It's not perfect. It also can be inefficient for certain primary storage
>>> types, for example if you end up creating a bunch of 10MB luns on a SAN for
>>> these.
>>> So my question goes to those who have been working on the system vm.
>>> My first preference (aside from a full system vm redesign, perhaps
>>> something that is controlled via an API) would be to copy these up to the
>>> system vm via SCP or something. But the cloud services start so early on that
>>> this isn't possible. Next would be to inject them into the system vm's root
>>> disk before starting the server, but if we're allowing people to make their
>>> own system vms, can we count on the partitions being what we expect? Also
>>> I don't think this will work for RBD, which qemu directly connects to, with the
>>> host OS unaware of any disk.
>>> Options?
>> Could you take a look at the status of this projects in KVM?
>> Basically, we need a way to talk to guest VM(sending parameters to KVM guest) after
VM is booted up. Both VMware/Xenserver has its own way to send parameters to guest VM through
PV driver, but there is no such thing for KVM few years ago.

View raw message