-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
virtio-fs: add Documentation/filesystems/virtiofs.rst
Add information about the new "virtiofs" file system. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
- Loading branch information
Stefan Hajnoczi
authored and
Miklos Szeredi
committed
Sep 18, 2019
1 parent
c4bb667
commit 2d1d25d
Showing
3 changed files
with
82 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
.. SPDX-License-Identifier: GPL-2.0 | ||
=================================================== | ||
virtiofs: virtio-fs host<->guest shared file system | ||
=================================================== | ||
|
||
- Copyright (C) 2019 Red Hat, Inc. | ||
|
||
Introduction | ||
============ | ||
The virtiofs file system for Linux implements a driver for the paravirtualized | ||
VIRTIO "virtio-fs" device for guest<->host file system sharing. It allows a | ||
guest to mount a directory that has been exported on the host. | ||
|
||
Guests often require access to files residing on the host or remote systems. | ||
Use cases include making files available to new guests during installation, | ||
booting from a root file system located on the host, persistent storage for | ||
stateless or ephemeral guests, and sharing a directory between guests. | ||
|
||
Although it is possible to use existing network file systems for some of these | ||
tasks, they require configuration steps that are hard to automate and they | ||
expose the storage network to the guest. The virtio-fs device was designed to | ||
solve these problems by providing file system access without networking. | ||
|
||
Furthermore the virtio-fs device takes advantage of the co-location of the | ||
guest and host to increase performance and provide semantics that are not | ||
possible with network file systems. | ||
|
||
Usage | ||
===== | ||
Mount file system with tag ``myfs`` on ``/mnt``: | ||
|
||
.. code-block:: sh | ||
guest# mount -t virtiofs myfs /mnt | ||
Please see https://virtio-fs.gitlab.io/ for details on how to configure QEMU | ||
and the virtiofsd daemon. | ||
|
||
Internals | ||
========= | ||
Since the virtio-fs device uses the FUSE protocol for file system requests, the | ||
virtiofs file system for Linux is integrated closely with the FUSE file system | ||
client. The guest acts as the FUSE client while the host acts as the FUSE | ||
server. The /dev/fuse interface between the kernel and userspace is replaced | ||
with the virtio-fs device interface. | ||
|
||
FUSE requests are placed into a virtqueue and processed by the host. The | ||
response portion of the buffer is filled in by the host and the guest handles | ||
the request completion. | ||
|
||
Mapping /dev/fuse to virtqueues requires solving differences in semantics | ||
between /dev/fuse and virtqueues. Each time the /dev/fuse device is read, the | ||
FUSE client may choose which request to transfer, making it possible to | ||
prioritize certain requests over others. Virtqueues have queue semantics and | ||
it is not possible to change the order of requests that have been enqueued. | ||
This is especially important if the virtqueue becomes full since it is then | ||
impossible to add high priority requests. In order to address this difference, | ||
the virtio-fs device uses a "hiprio" virtqueue specifically for requests that | ||
have priority over normal requests. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters