On 12/19/2015 12:28 PM, Nux! wrote: > IMHO the idea is nice, but not sure if it's worth the effort. > So we'll have primary storage, secondary storage and HTTP ISO library, might > be a little bit confusing to users and the gain doesn't seem that big. If > your NFS store is not working properly, then you already have other problems > as well and you need to fix it. >
Sure, you can say that the NFS should just *work*, but we all know stuff fails. The problem with NFS is that it goes through kernelspace. A fread() or fwrite() will just block for ever until the NFS works again. In userspace and with HTTP you can easily timeout after 30 seconds or so. > Now if we could have the whole secondary storage in HTTP/Webdav, that'd be > early Xmas indeed. :-) > That's the whole idea. I think it should be possible to put the whole Secondary Storage in HTTP. This could be S3/Swift/WebDAV. Qemu has a lot of support for HTTP nowadays, so technically it should be possible. Wido > Lucian > > -- > Sent from the Delta quadrant using Borg technology! > > Nux! > www.nux.ro > > ----- Original Message ----- >> From: "Wido den Hollander" <w...@widodh.nl> >> To: dev@cloudstack.apache.org >> Sent: Saturday, 19 December, 2015 09:26:52 >> Subject: [BRAINDUMP][KVM] ISO attachment via HTTP to Instance > >> Hi, >> >> So I just ran into a issue (again) where a NFS mount was hanging and a >> ISO could not be attached. Long story short, NFS goes through kernel >> space and causes timeouts, hanging kernels, processes in status D, etc, etc. >> >> Qemu already supports attaching a CD-Rom via HTTP to a VM, I just tried: >> http://widodh.o.auroraobjects.eu/qemu_cdrom_iso.png >> >> Thought about this for 30 minutes and figured I write it down here and >> maybe work on this later. >> >> Idea would be to implement a HTTP storage pool in libvirt which could talk: >> - S3 >> - WebDAV >> >> It requires the HV to have direct access to the HTTP store, but we do >> not need a staging NFS in between. >> >> Since the HTTP talks happen in userspace (Qemu) we can properly timeout >> on hanging HTTP requests, get back a status-code if stuff doesn't work >> instead of just waiting for ever. >> >> cURL is just a great HTTP library which can do this for us. >> >> With a pre-signed URL you can attach a S3 URL directly to Qemu and via >> WebDAV you only need to give in the username+password (if required). >> >> On S3 you can also set the ACL of the ISO objects to Public, that would >> rule out the need for a pre-signed URL. >> >> I would love to get rid of NFS here! >> >> This e-mail doesn't mean I'm about to implement it though :) The first >> work would be libvirt. >> >> I still have some pending RBD work for libvirt, so maybe I'll take a >> look at this. >> >> Wido