We're currently experimenting with something a bit different; we've got a setup that uses a modified version of the FUSE protocol running over vhost-user; it's: a) Got the filesystem access split out of qemu into a separate daemon - that's just a modified version of a normal FUSE filesystem daemon with the nice bit being that since it's a separate process you can do whatever isolation on it you want. b) But the latency is low because vhost-user means the daemon can read the request queue straight out of the guest memory c) We've got a setup with DAX so that the files are mapped straight into guest address space, so the overhead is very low for large files. That's so cool. I guess it will not use virtio. And this way maybe the new para-virtualization method, it's specific about the file system for the data shared between guest and host.
d) We've got a caching scheme for metadata, which again removes a lot of latency. e) We've got some patches to use it in KATA; I can start a basic KATA guest with it.
This is the first public mention of it because I didn't want you waiting for a reply; but our code is still rather messy and experimental; give us a few weeks and as soon as it survives some smoke tests we'll make the code public.
Because we're reusing both FUSE and vhost-user the kernel changes are quite small, as are the qemu changes.
I realise that's not much detail yet; we're starting to write some of it up; feel free to ask any specifics.
Thank for the replay. Seems that the file data are mmapping direct, but the control plane, like metadata are still using some other simple protocal, maybe new protocal ? Because 9p and nfs are very complex, they are not developed for the file sharing between guest and host. I always hope there is a simple file sharing protocal. I am very looking forward for the code. :-). Thanks & Regards Qixuan Wu.