On Jun 7, 2013, at 5:01 PM, Josh Durgin <josh.durgin(a)inktank.com> wrote:
On 06/07/2013 02:41 PM, John Nielsen wrote:
> I am running some qemu-kvm virtual machines via libvirt using Ceph RBD as the
back-end storage. Today I was testing an update to libvirt-1.0.6 on one of my hosts and
discovered that it includes this change:
> [libvirt] [PATCH] Forbid use of ':' in RBD pool names
> ...People are known to be abusing the lack of escaping in current libvirt to pass
arbitrary args to QEMU.
>
> I am one of those people--I have been storing colon-separated arguments in my disk
source 'name' attribute to control the RBD cache settings on a per-volume basis.
Under libvirt-1.0.6 such VM's refuse to start:
> error: Failed to start domain foo
> error: unsupported configuration: ':' not allowed in RBD source volume name
'mypool/foo:rbd_cache_size=268435456:rbd_cache_max_dirty=134217728:rbd_cache_target_dirty=33554432:rbd_cache_max_dirty_age=5'
>
> So my question is how do I control the cache settings now?
You can set the cache mode with the cache attribute on the <driver>
element inside a <disk> [1]. This works for rbd with QEMU 1.2 or later.
QEMU will try to read /etc/ceph/ceph.conf by default as well, so you
can put more specific settings in a [global] or [client.foo] section
there. Note that if you enable writeback caching here, you need to
include cache='writeback' in the xml as well, or qemu will not send
flushes.
Thanks for the quick reply. Is it safe to assume that the "foo" in
"client.foo" should match the "auth username" attribute from the XML?
If I want different cache settings for different VM's or volumes on the same host is
there a way to specify that any more? Can I specify multiple profiles in ceph.conf or
point different qemu instances to different ceph.conf files?
JN