wiki/gofurther/virtiofs.md

2.8 KiB

title description published date tags editor dateCreated
Share a host directory with a guest using virtiofs true 2023-05-29T09:20:05.658Z markdown 2022-08-13T00:16:17.437Z

Sharing a directory between the host and the guest

Virtio-fs in a nutshell

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. It is therefore a perfect fit for Phyllome OS.

Just as with other virtio devices, virtio-fs requires specialized drivers to be written for the host and the guest operating system.

Guest configuration

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}

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, add the following line to /etc/fstab:
share /mnt/ virtiofs rw,noatime,_netdev 0 2
  • Make sure it works before rebooting the guest virtual machine, by unmounting the share and reloading the systemd daemon`
# umount /mnt/ && systemctl daemon-reload
  • and then mounting all share available in fstab:
# mount -all

Resources


Go to parent page