快轉到主要內容

VirtIO-FS:Linux與Windows虛擬機共享資料夾設定方式(Virt Manager + QEMU/KVM)

· 民國113年甲辰年
·
切換繁體/簡體
分類   資訊科技 虛擬機與容器技術
標籤   QEMU-KVM Windows VirtIO
目錄

Add a shared directory/folder between Linux host and Windows guest using VirtIO-FS.

本文Ivon討論如何給Linux宿主機與Windows虛擬機設定共用資料夾/目錄。

QEMU/KVM搭配Virt Manager,提供兩種目錄共享方式:

  • VirtIO-FS:半虛擬化的目錄共享
  • VirtIO-9P:移植自Plan 9的半虛擬化網路檔案系統

其中VirtIO-FS (virtiofs) 是專為分享本機檔案系統打造的半虛擬化技術,原理圖如下:

圖片取自virtio-fs.gitlab.io

下面是「Linux宿主機KDiskMark讀取硬碟速度」與「Windows虛擬機Crystaldiskmark透過VirtIO-FS讀取硬碟速度」的比較。

論效能,VirtIO-FS檔案的傳輸速度高於VirtIO-9P,且勝過網路檔案系統(例如SSHFS、SAMBA、NFS、WebDAV),僅低於PCI-E硬碟直通。

相較VirtIO-9P僅支援Linux虛擬機,VirtIO-FS是跨平台的。不論是Windows還是Linux虛擬機,都可以使用VirtIO-FS與宿主機共享檔案。

QEMU需要4.2.0以上版本才支援這個技術。Linux的Virt Manager把設定界面給圖形化了,讓使用者可以便利地添加共享目錄。

1. 安裝QEMU/KVM與Virt Manager
#

VirtIO-FS所需要的virtiofsd可以交給libvirtd自動啟動。

Ubuntu宿主機安裝套件:sudo apt install virtiofsd

然後參見Ubuntu安裝Virt Manager

接著設定Windows 11虛擬機

2. 宿主機新增VirtIO-FS共享目錄
#

VirtIO-FS共享目錄是可以在虛擬機執行的時候加入的,不需要重開機。

  1. 編輯虛擬機硬體,在分配記憶體的選單,點選啟用共享記憶體(Enable Shared Memory),讓虛擬機與宿主機共享一部分RAM。

  2. 點選新增硬體 → 檔案系統,驅動程式選virtios-fs,源路徑選取要分享的Linux目錄(例如/home/user/下載),目標路徑隨意填寫,例如host_shared

  3. virtios-fs硬體裝置可以新增很多個,這樣Windows虛擬機就會將每個virtio-fs裝置視為不同的磁碟掛載。

3. 虛擬機內的操作
#

Windows虛擬機
#

  1. 安裝WinFSP,這個軟體可以在Windows模擬FUSE檔案系統。

  2. 安裝Stable分支的virtio驅動,下載virtio-win-guest-tools.exe並安裝

  3. 重新啟動Windows虛擬機

  4. 搜尋並開啟Windows「服務」視窗,設定開機自動啟動VirtIO-FS Service (VirtoFsSvc)。再點選啟動。

  5. 這樣virtio-fs共享的資料夾應該就會出現在檔案總管的磁碟列表了,預設自動掛載在Z槽。

有時候virto-fs掛載的資料夾在Windows看來會變成唯讀模式,可能是VirtoFsSvc的bug。根據Github issue的討論,請將該服務停用,改用批次檔來啟動VirtoFsSvc。或者嘗試在Windows安裝最新版的lastest-virtio套件。

還有,由於VirtIO-FS對各個檔案系統實作的差異,在virtio-fs掛載的資料夾執行exe程式可能會出問題,詳見Github Discussion。有時候複製大量檔案之時,宿主機的RAM佔用會飆高。

Linux虛擬機
#

需要Linux 5.4以上核心才支援VirtIO-FS。

  1. Linux虛擬機內可以直接用mount指令掛載VirtIO-FS的目錄。上面我們在Virt Manager填寫的目標路徑是host_shared,那麼我們使用以下指令將其掛載到Linux虛擬機的/mnt/host_shared/目錄。
sudo mkdir /mnt/host_shared

sudo mount -t virtiofs host_shared /mnt/host_shared/
  1. 如果要虛擬機開機自動掛載VirtIO-FS的目錄,在虛擬機裡面編輯/etc/fstab,加入掛載資訊:
host_shared /mnt/host_shared/ virtiofs rw 0 0

參考資料
#

相關文章

啟用巢狀Hyper-V,讓Windows 11 QEMU/KVM虛擬機支援WSL與WSA
分類   資訊科技 虛擬機與容器技術
標籤   Libvirt WSL QEMU-KVM Windows Hyper-V
【圖解】如何在Linux系統安裝Windows 11虛擬機(QEMU/KVM) + 常用技巧
分類   資訊科技 虛擬機與容器技術
標籤   QEMU-KVM Windows Libvirt
QEMU/KVM虛擬機繞過遊戲Easy Anti-Cheat的方法,隱藏KVM狀態
分類   資訊科技 虛擬機與容器技術
標籤   QEMU-KVM Linux Windows

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。