wiki/gofurther/virtiofs.md

2.5 KiB

title description published date tags editor dateCreated
Share a host directory with a guest using virtiofs true 2023-02-02T19:13:08.447Z markdown 2022-08-13T00:16:17.437Z

Sharing a directory

For KVM/QEMU, as of January 2023, virtio-fs is only available for virtual machines managed by the system libvirt instance (qemu:///system) {.is-warning}

As of January 2023, virtio-fs does not support read-only mode, meaning a guest will be able to write to the host's folder. {.is-warning}

Virtio-fs, shorts for virtio shared filesystem, allows for a directory located on the host to be shared with a guest.

It is designed to be fast and optimized for local usage, when the host and the guest are located on the same physical machine.

Just as with other virtio devices, it requires specialized drivers to be written for the guest operating system.

The guest

Edit XML configuration

  • Memory backing needs to be added to the XML definition:
<domain type="kvm">
[...]
    <memoryBacking>
        <source type="memfb"/>
        <access mode="shared/>"
    </memoryBacking>
[...]
</domain>
  • Add the filesystem device to the guest. In this the following case, the directory /opt/share/ will be shared with the guest:
<domain type="kvm">
[...]
    <devices>
    [...]
        <filesystem type="mount" accessmode="passthrough">
            <driver type="virtiofs"/>
            <source dir="/opt/share"> # The host directory to be shared with the guest
            <target dir="share"> # The target dir value refers to the mount tag used inside the guest, not the target dir inside the guest
        </filesystem>
    [...]
    </devices>
[...]
</domain>    

Mount the folder inside the guest

  • Inside the guest VM, mount the folder using the following command to mount the /opt/share host directory to the guest, using also the /mnt point:

# mount -t virtiofs share /mnt/

  • To make it permanent, edit /etc/fstab to look like the following:
share /mnt/ virtiofs rw,noatime,_netdev 0 0
  • Make sure it works before rebooting the guest virtual machine, by un-mounting the share

# umount /mnt/

  • and then mounting all share available in fstab:

# mount all

Resources