* QCOW2 to RBD format 2 in one step @ 2013-05-14 10:16 Wido den Hollander 2013-05-14 10:34 ` Leen Besselink 2013-05-14 19:57 ` Josh Durgin 0 siblings, 2 replies; 9+ messages in thread From: Wido den Hollander @ 2013-05-14 10:16 UTC (permalink / raw) To: ceph-devel@vger.kernel.org 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? The goal is to go from QCOW2 to RBD format 2 in one step. [0]: http://tracker.ceph.com/issues/4897 -- Wido den Hollander 42on B.V. Phone: +31 (0)20 700 9902 Skype: contact42on ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: QCOW2 to RBD format 2 in one step 2013-05-14 10:16 QCOW2 to RBD format 2 in one step Wido den Hollander @ 2013-05-14 10:34 ` Leen Besselink 2013-05-14 11:52 ` Wido den Hollander 2013-05-14 19:57 ` Josh Durgin 1 sibling, 1 reply; 9+ messages in thread From: Leen Besselink @ 2013-05-14 10:34 UTC (permalink / raw) To: ceph-devel@vger.kernel.org On Tue, May 14, 2013 at 12:16:32PM +0200, Wido den Hollander wrote: > Hi, > Hi Wido, > 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? > I'm no expert, but would it be possible to change qemu-img to support writing RAW to standard out ? So you can run qemu-img convert and pipe that drectly to the rbd import command ? rbd import already supports standard in I believe. Then you don't need any temporary storage. Maybe something more efficient than RAW is possible as well ? > The goal is to go from QCOW2 to RBD format 2 in one step. > > [0]: http://tracker.ceph.com/issues/4897 > > -- > Wido den Hollander > 42on B.V. > > Phone: +31 (0)20 700 9902 > Skype: contact42on > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: QCOW2 to RBD format 2 in one step 2013-05-14 10:34 ` Leen Besselink @ 2013-05-14 11:52 ` Wido den Hollander 2013-05-14 12:11 ` Damien Churchill 2013-05-14 12:15 ` Leen Besselink 0 siblings, 2 replies; 9+ messages in thread From: Wido den Hollander @ 2013-05-14 11:52 UTC (permalink / raw) To: leen; +Cc: ceph-devel@vger.kernel.org On 05/14/2013 12:34 PM, Leen Besselink wrote: > On Tue, May 14, 2013 at 12:16:32PM +0200, Wido den Hollander wrote: >> Hi, >> Hi Leen, > > Hi Wido, > >> 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? >> > > I'm no expert, but would it be possible to change qemu-img to support writing RAW to standard out ? > No, qemu-img can't write to stdout. Due to various formats it supports. > So you can run qemu-img convert and pipe that drectly to the rbd import command ? > If qemu-img would support writing to stdout there is the problem that I'm not using the rbd tool, but Java bindings for librbd and librados. I'm trying to avoid executing from Java. > rbd import already supports standard in I believe. > > Then you don't need any temporary storage. > > Maybe something more efficient than RAW is possible as well ? > >> The goal is to go from QCOW2 to RBD format 2 in one step. >> >> [0]: http://tracker.ceph.com/issues/4897 >> >> -- >> Wido den Hollander >> 42on B.V. >> >> Phone: +31 (0)20 700 9902 >> Skype: contact42on >> -- >> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- Wido den Hollander 42on B.V. Phone: +31 (0)20 700 9902 Skype: contact42on ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: QCOW2 to RBD format 2 in one step 2013-05-14 11:52 ` Wido den Hollander @ 2013-05-14 12:11 ` Damien Churchill 2013-05-14 12:15 ` Leen Besselink 1 sibling, 0 replies; 9+ messages in thread From: Damien Churchill @ 2013-05-14 12:11 UTC (permalink / raw) To: Wido den Hollander; +Cc: leen, ceph-devel@vger.kernel.org On 14 May 2013 12:52, Wido den Hollander <wido@42on.com> wrote: > > No, qemu-img can't write to stdout. Due to various formats it supports. > You could probably use qemu-nbd to mount the image as a nbd device and then read from that using all the standard gear. Although I've never actually used qemu-nbd myself... ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: QCOW2 to RBD format 2 in one step 2013-05-14 11:52 ` Wido den Hollander 2013-05-14 12:11 ` Damien Churchill @ 2013-05-14 12:15 ` Leen Besselink 2013-05-14 14:36 ` Alexandre DERUMIER 1 sibling, 1 reply; 9+ messages in thread From: Leen Besselink @ 2013-05-14 12:15 UTC (permalink / raw) To: ceph-devel@vger.kernel.org On Tue, May 14, 2013 at 01:52:28PM +0200, Wido den Hollander wrote: > On 05/14/2013 12:34 PM, Leen Besselink wrote: > >On Tue, May 14, 2013 at 12:16:32PM +0200, Wido den Hollander wrote: > >>Hi, > >> > > Hi Leen, > > > > >Hi Wido, > > > >>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? > >> > > > >I'm no expert, but would it be possible to change qemu-img to support writing RAW to standard out ? > > > > No, qemu-img can't write to stdout. Due to various formats it supports. > I meant extending qemu-img to support that, it would probably be less work than the work needed for the issue below. But the longer I think about it. It would only be able to do that for RAW. And RAW isn't very efficient anyway. > >So you can run qemu-img convert and pipe that drectly to the rbd import command ? > > > > If qemu-img would support writing to stdout there is the problem > that I'm not using the rbd tool, but Java bindings for librbd and > librados. I'm trying to avoid executing from Java. > > >rbd import already supports standard in I believe. > > > >Then you don't need any temporary storage. > > > >Maybe something more efficient than RAW is possible as well ? > > > >>The goal is to go from QCOW2 to RBD format 2 in one step. > >> > >>[0]: http://tracker.ceph.com/issues/4897 > >> > >>-- > >>Wido den Hollander > >>42on B.V. > >> > >>Phone: +31 (0)20 700 9902 > >>Skype: contact42on > >>-- > >>To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > >>the body of a message to majordomo@vger.kernel.org > >>More majordomo info at http://vger.kernel.org/majordomo-info.html > >-- > >To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > >the body of a message to majordomo@vger.kernel.org > >More majordomo info at http://vger.kernel.org/majordomo-info.html > > > > > -- > Wido den Hollander > 42on B.V. > > Phone: +31 (0)20 700 9902 > Skype: contact42on ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: QCOW2 to RBD format 2 in one step 2013-05-14 12:15 ` Leen Besselink @ 2013-05-14 14:36 ` Alexandre DERUMIER 2013-05-14 20:10 ` Josh Durgin 0 siblings, 1 reply; 9+ messages in thread From: Alexandre DERUMIER @ 2013-05-14 14:36 UTC (permalink / raw) To: leen; +Cc: ceph-devel Hi, we do it with proxmox, we create the target rbd volume at format v2 with "rbd .." commands, then, we use qemu-img convert to copy from qcow2 to rbd. We have patched qemu-img to be able to write to an existing volume. (By default qemu-img convert try to create the volume) https://git.proxmox.com/?p=pve-qemu-kvm.git;a=commit;h=c0cf085da9b6b1d21791dd88c34f7ad7f0b83359 If you want to test, you can try the coming proxmox 3.0 release here: http://forum.proxmox.com/threads/13733-Proxmox-VE-3-0-RC1-released!?p=73897#post73897 support vm cloning full clone, from any storage (raw,qcow2,lvm,rbd,sheepdog,iscsi) to any storage. Linked clones are also implemented for rbd :) Hope It can help. ----- Mail original ----- De: "Leen Besselink" <leen@consolejunkie.net> À: ceph-devel@vger.kernel.org Envoyé: Mardi 14 Mai 2013 14:15:21 Objet: Re: QCOW2 to RBD format 2 in one step On Tue, May 14, 2013 at 01:52:28PM +0200, Wido den Hollander wrote: > On 05/14/2013 12:34 PM, Leen Besselink wrote: > >On Tue, May 14, 2013 at 12:16:32PM +0200, Wido den Hollander wrote: > >>Hi, > >> > > Hi Leen, > > > > >Hi Wido, > > > >>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? > >> > > > >I'm no expert, but would it be possible to change qemu-img to support writing RAW to standard out ? > > > > No, qemu-img can't write to stdout. Due to various formats it supports. > I meant extending qemu-img to support that, it would probably be less work than the work needed for the issue below. But the longer I think about it. It would only be able to do that for RAW. And RAW isn't very efficient anyway. > >So you can run qemu-img convert and pipe that drectly to the rbd import command ? > > > > If qemu-img would support writing to stdout there is the problem > that I'm not using the rbd tool, but Java bindings for librbd and > librados. I'm trying to avoid executing from Java. > > >rbd import already supports standard in I believe. > > > >Then you don't need any temporary storage. > > > >Maybe something more efficient than RAW is possible as well ? > > > >>The goal is to go from QCOW2 to RBD format 2 in one step. > >> > >>[0]: http://tracker.ceph.com/issues/4897 > >> > >>-- > >>Wido den Hollander > >>42on B.V. > >> > >>Phone: +31 (0)20 700 9902 > >>Skype: contact42on > >>-- > >>To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > >>the body of a message to majordomo@vger.kernel.org > >>More majordomo info at http://vger.kernel.org/majordomo-info.html > >-- > >To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > >the body of a message to majordomo@vger.kernel.org > >More majordomo info at http://vger.kernel.org/majordomo-info.html > > > > > -- > Wido den Hollander > 42on B.V. > > Phone: +31 (0)20 700 9902 > Skype: contact42on -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: QCOW2 to RBD format 2 in one step 2013-05-14 14:36 ` Alexandre DERUMIER @ 2013-05-14 20:10 ` Josh Durgin 0 siblings, 0 replies; 9+ messages in thread From: Josh Durgin @ 2013-05-14 20:10 UTC (permalink / raw) To: Alexandre DERUMIER; +Cc: leen, ceph-devel On 05/14/2013 07:36 AM, Alexandre DERUMIER wrote: > Hi, > > we do it with proxmox, > > we create the target rbd volume at format v2 with "rbd .." commands, > > then, we use qemu-img convert to copy from qcow2 to rbd. > > We have patched qemu-img to be able to write to an existing volume. > (By default qemu-img convert try to create the volume) > https://git.proxmox.com/?p=pve-qemu-kvm.git;a=commit;h=c0cf085da9b6b1d21791dd88c34f7ad7f0b83359 It'd be nice to get that option into upstream qemu. > If you want to test, you can try the coming proxmox 3.0 release here: > http://forum.proxmox.com/threads/13733-Proxmox-VE-3-0-RC1-released!?p=73897#post73897 > > support vm cloning full clone, from any storage (raw,qcow2,lvm,rbd,sheepdog,iscsi) to any storage. > Linked clones are also implemented for rbd :) Good to know! Josh > Hope It can help. > > ----- Mail original ----- > > De: "Leen Besselink" <leen@consolejunkie.net> > À: ceph-devel@vger.kernel.org > Envoyé: Mardi 14 Mai 2013 14:15:21 > Objet: Re: QCOW2 to RBD format 2 in one step > > On Tue, May 14, 2013 at 01:52:28PM +0200, Wido den Hollander wrote: >> On 05/14/2013 12:34 PM, Leen Besselink wrote: >>> On Tue, May 14, 2013 at 12:16:32PM +0200, Wido den Hollander wrote: >>>> Hi, >>>> >> >> Hi Leen, >> >>> >>> Hi Wido, >>> >>>> 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? >>>> >>> >>> I'm no expert, but would it be possible to change qemu-img to support writing RAW to standard out ? >>> >> >> No, qemu-img can't write to stdout. Due to various formats it supports. >> > > I meant extending qemu-img to support that, it would probably be less > work than the work needed for the issue below. But the longer I think > about it. It would only be able to do that for RAW. And RAW isn't very > efficient anyway. > >>> So you can run qemu-img convert and pipe that drectly to the rbd import command ? >>> >> >> If qemu-img would support writing to stdout there is the problem >> that I'm not using the rbd tool, but Java bindings for librbd and >> librados. I'm trying to avoid executing from Java. >> >>> rbd import already supports standard in I believe. >>> >>> Then you don't need any temporary storage. >>> >>> Maybe something more efficient than RAW is possible as well ? >>> >>>> The goal is to go from QCOW2 to RBD format 2 in one step. >>>> >>>> [0]: http://tracker.ceph.com/issues/4897 >>>> >>>> -- >>>> Wido den Hollander >>>> 42on B.V. >>>> >>>> Phone: +31 (0)20 700 9902 >>>> Skype: contact42on >>>> -- >>>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in >>>> the body of a message to majordomo@vger.kernel.org >>>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> -- >>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in >>> the body of a message to majordomo@vger.kernel.org >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> >> >> >> -- >> Wido den Hollander >> 42on B.V. >> >> Phone: +31 (0)20 700 9902 >> Skype: contact42on -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: QCOW2 to RBD format 2 in one step 2013-05-14 10:16 QCOW2 to RBD format 2 in one step Wido den Hollander 2013-05-14 10:34 ` Leen Besselink @ 2013-05-14 19:57 ` Josh Durgin 2013-05-14 20:37 ` Wido den Hollander 1 sibling, 1 reply; 9+ messages in thread From: Josh Durgin @ 2013-05-14 19:57 UTC (permalink / raw) To: Wido den Hollander; +Cc: ceph-devel@vger.kernel.org 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? > The goal is to go from QCOW2 to RBD format 2 in one step. > > [0]: http://tracker.ceph.com/issues/4897 > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: QCOW2 to RBD format 2 in one step 2013-05-14 19:57 ` Josh Durgin @ 2013-05-14 20:37 ` Wido den Hollander 0 siblings, 0 replies; 9+ messages in thread From: Wido den Hollander @ 2013-05-14 20:37 UTC (permalink / raw) To: Josh Durgin; +Cc: ceph-devel@vger.kernel.org Op 14 mei 2013 om 21:59 heeft "Josh Durgin" <josh.durgin@inktank.com> 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 > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-05-14 20:37 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-05-14 10:16 QCOW2 to RBD format 2 in one step Wido den Hollander 2013-05-14 10:34 ` Leen Besselink 2013-05-14 11:52 ` Wido den Hollander 2013-05-14 12:11 ` Damien Churchill 2013-05-14 12:15 ` Leen Besselink 2013-05-14 14:36 ` Alexandre DERUMIER 2013-05-14 20:10 ` Josh Durgin 2013-05-14 19:57 ` Josh Durgin 2013-05-14 20:37 ` Wido den Hollander
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.