Hi Eric,
I was talking to Jonathon just now about feature gaps in nbdkit vs
qemu's curl and ssh drivers. Two that he has identified are below.
Mainly writing this email to document them, but your thoughts welcome.
(1) qemu curl has a "readahead" setting
Looking at the code, it seems this causes the read to be extended by a
fixed size (if I understand it all correctly, which may not be true!).
eg. If readahead = 64K, then every read will read the requested amount + 64K.
That seems a bit odd though. What happens if two adjacent requests
come in? Is the readahead coalesced with the second request?
Anyway, nbdkit-readahead-filter exists, but it has a lot of problems.
We actually _stopped_ using it with virt-v2v because it caused more
trouble than it is worth. In particular:
- Because it increases request sizes greatly, this ends up breaking
some plugins (notably VDDK which as you know has trouble handling
large requests). We could fix this by inserting a filter to break
up large requests, but that's just trouble mainly because of the
next point.
- It's completely synchronous, so it slows the read request because
you have to wait for the over-read.
- It tries to be "adaptive" but in practice isn't very. So it
guesses wrong most of the time about what you'd want to read next.
For these reasons I believe this filter needs a complete, from-scratch
rewrite.
(2) qemu ssh can create a remote disk
This is a simple feature request. I added something similar recently
for nbdkit-vddk-plugin:
https://gitlab.com/nbdkit/nbdkit/-/commit/a39d5773afc3ebab7e5768118a2bccb...
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages.
http://libguestfs.org