[libvirt PATCH 1/2] docs: virtiofs: move legacy docs to the bottom
Stefan Hajnoczi
stefanha at redhat.com
Tue Sep 14 14:40:43 UTC 2021
On Thu, Sep 09, 2021 at 03:58:28PM +0100, Stefan Hajnoczi wrote:
> A number of legacy issues make the virtiofs kbase article hard to
> understand. Most users don't need to configure NUMA or a memory backend
> other than memfd. Move that information to the bottom of the article so
> the recommended syntax is most prominent.
>
> Suggested-by: Richard W.M. Jones <rjones at redhat.com>
> Signed-off-by: Stefan Hajnoczi <stefanha at redhat.com>
> ---
> docs/kbase/virtiofs.rst | 171 +++++++++++++++++++++-------------------
> 1 file changed, 91 insertions(+), 80 deletions(-)
Sebastian mentioned that explicitly setting <source type='memfd'/> is
unnecessary because libvirt will use the shm memory backing path by
default:
<memoryBacking>
<access mode='shared'/>
</memoryBacking>
Should we simplify the kbase example further and drop memfd?
>
> diff --git a/docs/kbase/virtiofs.rst b/docs/kbase/virtiofs.rst
> index 6ba7299a72..75e740bf96 100644
> --- a/docs/kbase/virtiofs.rst
> +++ b/docs/kbase/virtiofs.rst
> @@ -13,8 +13,82 @@ is designed to offer local file system semantics and performance.
>
> See https://virtio-fs.gitlab.io/
>
> -Host setup
> -==========
> +Sharing a host directory with a guest
> +=====================================
> +
> +#. Add the following domain XML elements to share the host directory `/path`
> + with the guest
> +
> + ::
> +
> + <domain>
> + ...
> + <memoryBacking>
> + <source type='memfd'/>
> + <access mode='shared'/>
> + </memoryBacking>
> + ...
> + <devices>
> + ...
> + <filesystem type='mount' accessmode='passthrough'>
> + <driver type='virtiofs'/>
> + <source dir='/path'/>
> + <target dir='mount_tag'/>
> + </filesystem>
> + ...
> + </devices>
> + </domain>
> +
> + Don't forget the ``<memoryBacking>`` elements. They are necessary for the
> + vhost-user connection with the ``virtiofsd`` daemon.
> +
> + Note that despite its name, the ``target dir`` is an arbitrary string called
> + a mount tag that is used inside the guest to identify the shared file system
> + to be mounted. It does not have to correspond to the desired mount point in the
> + guest.
> +
> +#. Boot the guest and mount the filesystem
> +
> + ::
> +
> + guest# mount -t virtiofs mount_tag /mnt/mount/path
> +
> + Note: this requires virtiofs support in the guest kernel (Linux v5.4 or later)
> +
> +Optional parameters
> +===================
> +
> +More optional elements can be specified
> +
> +::
> +
> + <driver type='virtiofs' queue='1024'/>
> + <binary path='/usr/libexec/virtiofsd' xattr='on'>
> + <cache mode='always'/>
> + <lock posix='on' flock='on'/>
> + </binary>
> +
> +Externally-launched virtiofsd
> +=============================
> +
> +Libvirtd can also connect the ``vhost-user-fs`` device to a ``virtiofsd``
> +daemon launched outside of libvirtd. In that case socket permissions,
> +the mount tag and all the virtiofsd options are out of libvirtd's
> +control and need to be set by the application running virtiofsd.
> +
> +::
> +
> + <filesystem type='mount'/>
> + <driver type='virtiofs' queue='1024'/>
> + <source socket='/var/virtiofsd.sock'/>
> + <target dir='tag'/>
> + </filesystem>
> +
> +Other options for vhost-user memory setup
> +=========================================
> +
> +The following information is necessary if you are using older versions of QEMU
> +and libvirt or have special memory backend requirements.
>
> Almost all virtio devices (all that use virtqueues) require access to
> at least certain portions of guest RAM (possibly policed by DMA). In
> @@ -29,34 +103,31 @@ NUMA. As of QEMU 5.0.0 and libvirt 6.9.0, it is possible to
> specify the memory backend without NUMA (using the so called
> memobject interface).
>
> -One of the following:
> +#. Set up the memory backend
>
> -* Use memfd memory
> + * Use memfd memory
>
> - No host setup is required when using the Linux memfd memory backend.
> + No host setup is required when using the Linux memfd memory backend.
>
> -* Use file-backed memory
> + * Use file-backed memory
>
> - Configure the directory where the files backing the memory will be stored
> - with the ``memory_backing_dir`` option in ``/etc/libvirt/qemu.conf``
> + Configure the directory where the files backing the memory will be stored
> + with the ``memory_backing_dir`` option in ``/etc/libvirt/qemu.conf``
>
> - ::
> + ::
>
> - # This directory is used for memoryBacking source if configured as file.
> - # NOTE: big files will be stored here
> - memory_backing_dir = "/dev/shm/"
> + # This directory is used for memoryBacking source if configured as file.
> + # NOTE: big files will be stored here
> + memory_backing_dir = "/dev/shm/"
>
> -* Use hugepage-backed memory
> + * Use hugepage-backed memory
>
> - Make sure there are enough huge pages allocated for the requested guest memory.
> - For example, for one guest with 2 GiB of RAM backed by 2 MiB hugepages:
> + Make sure there are enough huge pages allocated for the requested guest memory.
> + For example, for one guest with 2 GiB of RAM backed by 2 MiB hugepages:
>
> - ::
> + ::
>
> - # virsh allocpages 2M 1024
> -
> -Guest setup
> -===========
> + # virsh allocpages 2M 1024
>
> #. Specify the NUMA topology (this step is only required for the NUMA case)
>
> @@ -122,63 +193,3 @@ Guest setup
> </memoryBacking>
> ...
> </domain>
> -
> -#. Add the ``vhost-user-fs`` QEMU device via the ``filesystem`` element
> -
> - ::
> -
> - <domain>
> - ...
> - <devices>
> - ...
> - <filesystem type='mount' accessmode='passthrough'>
> - <driver type='virtiofs'/>
> - <source dir='/path'/>
> - <target dir='mount_tag'/>
> - </filesystem>
> - ...
> - </devices>
> - </domain>
> -
> - Note that despite its name, the ``target dir`` is actually a mount tag and does
> - not have to correspond to the desired mount point in the guest.
> -
> - So far, ``passthrough`` is the only supported access mode and it requires
> - running the ``virtiofsd`` daemon as root.
> -
> -#. Boot the guest and mount the filesystem
> -
> - ::
> -
> - guest# mount -t virtiofs mount_tag /mnt/mount/path
> -
> - Note: this requires virtiofs support in the guest kernel (Linux v5.4 or later)
> -
> -Optional parameters
> -===================
> -
> -More optional elements can be specified
> -
> -::
> -
> - <driver type='virtiofs' queue='1024'/>
> - <binary path='/usr/libexec/virtiofsd' xattr='on'>
> - <cache mode='always'/>
> - <lock posix='on' flock='on'/>
> - </binary>
> -
> -Externally-launched virtiofsd
> -=============================
> -
> -Libvirtd can also connect the ``vhost-user-fs`` device to a ``virtiofsd``
> -daemon launched outside of libvirtd. In that case socket permissions,
> -the mount tag and all the virtiofsd options are out of libvirtd's
> -control and need to be set by the application running virtiofsd.
> -
> -::
> -
> - <filesystem type='mount'/>
> - <driver type='virtiofs' queue='1024'/>
> - <source socket='/var/virtiofsd.sock'/>
> - <target dir='tag'/>
> - </filesystem>
> --
> 2.31.1
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20210914/02d7fc04/attachment-0001.sig>
More information about the libvir-list
mailing list