Chapter 20. Sharing files between the host and its virtual machines


You might frequently require to share data between your host system and the virtual machines (VMs) it runs. To do so quickly and efficiently, you can use the virtio file system (virtiofs).

20.1. Sharing files between the host and its virtual machines by using virtiofs

By using the virtio file system (virtiofs), you can share files between your host and your virtual machines (VM) as a directory tree that works the same as the local file system structure.

20.1.1. Sharing files between the host and Windows virtual machines by using the command line

When using RHEL 10 as your hypervisor, you can efficiently share files between your host system and Windows virtual machines (VM) using the virtiofs feature along with the virtio-win package.

Note

You can run the virtiofs service in case-insensitive mode on a Windows VM using the virtiofs.exe command and the -i parameter.

Prerequisites

  • A directory that you want to share with your VMs. If you do not want to share any of your existing directories, create a new one, for example named shared-files.

    # mkdir /root/shared-files
    Copy to Clipboard
  • You have attached the virtio driver installation media to the VM.
  • You have installed the virtio-win package on your Windows VM.

Procedure

  1. For each directory on the host that you want to share with your VM, set it as a virtiofs file system in the VM’s XML configuration.

    1. Open the XML configuration of the intended VM.

      # virsh edit vm-name
      Copy to Clipboard
    2. Add an entry similar to the following to the <devices> section of the VM’s XML configuration.

      <filesystem type='mount' accessmode='passthrough'>
        <driver type='virtiofs'/>
        <binary path='/usr/libexec/virtiofsd' xattr='on'/>
        <source dir='/root/shared-files'/>
        <target dir='host-file-share'/>
      </filesystem>
      Copy to Clipboard

      This example sets the /root/shared-files directory on the host to be visible as host-file-share to the VM.

  2. Set up shared memory for the VM. To do so, add shared memory backing to the <domain> section of the XML configuration:

    <domain>
     [...]
     <memoryBacking>
       <access mode='shared'/>
     </memoryBacking>
     [...]
    </domain>
    Copy to Clipboard
  3. Boot up the VM.

    # virsh start vm-name
    Copy to Clipboard
  4. On your Windows VM, install WinFsp. To do so, mount the virtio-win ISO image, start the winfsp MSI installer, and follow the prompts.

    In the Custom Setup window of the installation wizard, select the features you want to install on the VM.

  5. Start the virtiofs service:

    # sc start VirtioFsSvc
    Copy to Clipboard
  6. Navigate to This PC:

    File Explorer This PC

    If configured correctly, virtiofs is available on the Windows VM as the first available drive letter starting with Z: and going backwards. For example, my_viofs (Z:).

    Important

    You must restart the virtiofs service after each VM reboot to access the shared directory.

  7. Optional: To set up additional virtiofs instances:

    1. Stop the virtiofs service:

      # sc stop VirtioFsSvc
      # sc config VirtioFsSvc start=demand
      Copy to Clipboard
    2. Configure the WinFSP.Launcher service to set up multiple virtiofs instances:

      # "C:\Program Files (x86)\WinFsp\bin\fsreg.bat" virtiofs "<path to the binary>\virtiofs.exe" "-t %1 -m %2"
      Copy to Clipboard
    3. Mount virtiofs instances to drives.

      For example, to mount virtiofs with the tag mount_tag0 to the Y: drive:

      "C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" start virtiofs viofsY mount_tag0 Y:
      Copy to Clipboard
    4. Repeat the previous step to mount all of your virtiofs instances.
    5. To unmount the virtiofs instance:

      "C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" stop virtiofs viofsY
      Copy to Clipboard

Verification

  1. On your Windows VM, navigate to This PC:

    File Explorer This PC

    • If you did not specify a mount point when setting up the virtiofs service, it will use the first available drive letter starting with z: and going backwards.
    • If you have multiple virtiofs instances set up, they will appear as drives with the letters you had assigned to the instances.
Back to top
Red Hat logoGithubredditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust. Explore our recent updates.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

Theme

© 2025 Red Hat