[kata-dev] About the future kata rootfs, qcow2 or nfs/vsock

Tao Peng bergwolf at hyper.sh
Wed Sep 26 09:27:18 UTC 2018


On Wed, Sep 26, 2018 at 4:35 PM, Dr. David Alan Gilbert
<dgilbert at redhat.com> wrote:
> * Tao Peng (bergwolf at hyper.sh) wrote:
>> On Mon, Sep 24, 2018 at 10:32 PM, Dr. David Alan Gilbert
>> <dgilbert at redhat.com> wrote:
>> > * Qixuan Wu (qixuan.wu at linux.alibaba.com) wrote:
>> >> Hi Stefan,
>> >
>> > Hi,
>> >   Stefan is out at the moment, so I thought I'd reply.
>> >
>> >> Now we found 9pfs performance is poor, we are thinking of other solution
>> >> for the rootfs of kata container.
>> >>
>> >> As per the link, https://github.com/kata-containers/runtime/issues/279.
>> >> Seem you are doing about nfs/vsock optimization, and nfs/vsock seems
>> >> that can possible be the future default rootfs of kata container.
>> >>
>> >> And I heard about qcow2+snapshot+virtio_scsi also. And how do you think
>> >> about it as the rootfs of kata container? And do you know how the kata
>> >> commumity think about this solution also and compare it with nfs/vsock ?
>> >
>> > 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.
>> >   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.
>> >
>> Hi Dave,
>>
>> Thanks for sharing and sorry to chime in late. IIUC this is pretty
>> like a vhost-user-fuse design. On the guest side, it uses a
>> virtio-fuse frontend that takes any fs IO and encode it in fuse wire
>> protocol and send through virtio. And the host daemon is a
>> vhost-user-fuse process that just need to talk in fuse wire protocol
>> with vhost-user fd rather than /dev/fuse. Am I understanding
>> correctly?
>
>
> Yes! That's exactly what it is.
Thanks for confirming! It's a brilliant idea IMO and a truly native
solution to the host fs sharing problem. Since it's based on FUSE, I
suppose we can get better POSIX compliance than 9pfs. And I don't
think it requires any host kernel change, right?

>
>> Does it require any modification to the fuse wire protocol
>> (e.g., include/uapi/linux/fuse.h)?
>
> We've got a couple of extra opcodes for a performance trick, but
> otherwise it's just the same.
Great, I'm really looking forward to it!

Thanks,
Tao

-- 
bergwolf at hyper.sh



More information about the kata-dev mailing list