mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Add a section to show the mount option and a subsection to show the atime behavior. Signed-off-by: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
		
			
				
	
	
		
			76 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. SPDX-License-Identifier: GPL-2.0
 | 
						|
 | 
						|
.. _virtiofs_index:
 | 
						|
 | 
						|
===================================================
 | 
						|
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.
 | 
						|
 | 
						|
Mount options
 | 
						|
-------------
 | 
						|
 | 
						|
virtiofs supports general VFS mount options, for example, remount,
 | 
						|
ro, rw, context, etc. It also supports FUSE mount options.
 | 
						|
 | 
						|
atime behavior
 | 
						|
^^^^^^^^^^^^^^
 | 
						|
 | 
						|
The atime-related mount options, for example, noatime, strictatime,
 | 
						|
are ignored. The atime behavior for virtiofs is the same as the
 | 
						|
underlying filesystem of the directory that has been exported
 | 
						|
on the host.
 | 
						|
 | 
						|
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.
 |