快轉到主要內容

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

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

* 註解:根據 Github Wiki記載,截至2023年,目前VirtIO-FS的開發狀態處於早期階段(Tech Preview),可能會有很多問題。

本文討論如何在安裝好Virt Manager + QEMU/KVM之後,給Linux宿主機與Windows虛擬機設定共享資料夾。

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與宿主機共享檔案。

測試環境
#

  • 宿主機系統:Ubuntu 24.04
  • 虛擬機系統:Windows 11 23H2
  • QEMU版本:6.0
  • VirtIO驅動版本:0.1.240

1. 安裝QEMU/KVM與Virt Manager
#

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

請安裝套件:sudo apt install virtiofsd

然後參見 Ubuntu安裝Virt Manager

接著 設定Windows 11虛擬機

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

  1. 編輯虛擬機硬體,在分配記憶體的選單,點選啟用共享記憶體(Enable Shared Memory)

  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

Linux虛擬機
#

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

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

參考資料
#

相關文章

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

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

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