Op 14 mei 2013 om 21:59 heeft "Josh Durgin" <josh.durgin@xxxxxxxxxxx> het volgende geschreven: > On 05/14/2013 03:16 AM, Wido den Hollander wrote: >> Hi, >> >> While working on the CloudStack code for 4.2 I'm running into some >> problems with QCOW2 and RBD format 2. >> >> A quick cap of the problem: >> >> CloudStack stores all the templates on "Secondary Storage" as QCOW2 files. >> >> When a VM is deployed, this image will be copied (once) from Secondary >> Storage to Primary Storage, this is done by qemu-img which does the >> conversion. >> >> When the image is on Primary Storage it will be copied to the >> destination volume and the Instance/VM is started. >> >> In that last step I want to use layering, but the problem is that my >> image is RBD format 1 due to the qemu-img copy. >> >> I can skip the qemu-img copy, but I have to find a way to go from QCOW2 >> to RBD format 2 in preferably one step. There is a issue about this in >> the tracker [0], but that won't be finished on time. >> >> Another idea would be to do QCOW2 -> RAW -> RBD format 2, but that extra >> step will take a lot of time. It would also require some temporary >> storage on the hypervisor. >> >> I also thought of creating the RBD image prior to converting to it, but >> that fails, since qemu-img won't let you convert to a already existing >> image. >> >> Any brights ideas? Maybe even doing the QCOW2 -> RAW format in memory? >> In Java? > > One way that wouldn't require a change in qemu would be adding ceph > configuration options to change the behavior of librbd's rbd_create[2|3](). > > For example, there could be just: > > rbd_create_default_format UINT default 1 > > or we could add other options to adjust the rest of the image creation > parameters i.e.: > > rbd_create_default_object_order INT default 22 > > // these only apply to format 2 > rbd_create_default_features UINT64 default 1 # 1 for layering, 3 for layering+stripingv2 > rbd_create_default_stripe_count UINT64 default 1 # changing requires stripingv2 feature > rbd_create_default_stripe_unit UINT64 default 4194304 # changing to non-object size requires stripingv2 feature > > For backwards compatibility, the default values preserve the existing > behavior of rbd_create(), but when you run qemu-img you could change > them to create format 2 images and potentially change the striping > as well. These options could be easily backported to cuttlefish > and bobtail. > > What do you think? Something like that crossed my mind for a moment and seems like a very good solution! On existing Ubuntu systems you could simply upgrade librbd and have it all working. Wido > >> The goal is to go from QCOW2 to RBD format 2 in one step. >> >> [0]: http://tracker.ceph.com/issues/4897 > -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html