跳到主要內容

PVE SATA controller 直通

SATA controller 比 RDM 直通複雜一些,但可以讓客體看到SMART。

參考

https://gist.github.com/emanuellopes/a43d978f1b3604b07209a12cdf951ae3

https://blog.csdn.net/Devout_programming/article/details/129109114

https://qiedd.com/1894.html

https://upsangel.com/htpc-nas/iommu-vfio-gpo-proxmox-pve-pcie%E7%9B%B4%E9%80%9A%E5%92%8C%E6%A0%B8%E9%A1%AFhdmi%E7%9B%B4%E9%80%9A%E8%A8%AD%E7%BD%AE%E5%8F%83%E6%95%B8%E8%A7%A3%E9%87%8B/

https://hackmd.io/@davidho9713/pve_pci_passthrough

裡面雖然有些是說GPU直通,但其實直通都會遇到類似的問題 (包括 nvme)


https://gist.github.com/r15ch13/ba2d738985fce8990a4e9f32d07c6ada

這個 sh 好用,可以看 IOMMU group。


原因: 多個裝置可能會被分在同一個 IOMMU group 下,如果你想把其中一個裝置直通給客體,那客體啟動時,可能會因為要抓裝置reset,影響到同 group 下的其他裝置導致整個系統不穩。

所以要利用 iommu、 vfio 和 ACS override 讓裝置盡量分到不同的 group 中。


1. 用上面附的 iommu.sh 看 group 


可以看到我的 ASM1166 被分配到了 group,我直接在 VM 使用會導致 host 跟著死機

 

2. 改開機設定,分為

2-1. grub (一般把PVE安裝在 ext4,會用這個引導開機)

https://blog.csdn.net/Devout_programming/article/details/129109114

https://docs.redhat.com/zh_hans/documentation/red_hat_virtualization/4.1/html/installation_guide/appe-configuring_a_hypervisor_host_for_pci_passthrough#appe-Configuring_a_Hypervisor_Host_for_PCI_Passthrough

編輯 grub

nano /etc/default/grub

找到 GRUB_CMDLINE_LINUX_DEFAULT,加上 amd_iommu=on pcie_acs_override=downstream,multifunction;如果是 intel CPU請把 amd_iommu 改成 intel_iommu

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on pcie_acs_override=downstream,multifunction"

2.2. systemd-boot (如果把PVE安裝在 zfs 上,則會用這個引導開機)


ssh:
nano /etc/kernel/cmdline
root後方加入iommu的設定
root=ZFS=rpool/ROOT/pve-1 boot=zfs amd_iommu=on iommu=pt pcie_acs_override=downstream,multifunction
ssh:
proxmox-boot-tool refresh


3. 編輯 modules 加入 vfio 模組

nano /etc/modules
加入 vfio 模組
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

啟用iommu unsafe interrupts

nano /etc/modprobe.d/iommu_unsafe_interrupts.conf

加入

options vfio_iommu_type1 allow_unsafe_interrupts=1

套用

update-grub
update-initramfs -u -k all 
reboot

4.再度用 iommu.sh 

 

可以看到 ASM1166 被配到獨立的 group 裡面了,此時就可以正常地把它直通客體了

後續直接用 VM web GUI,設定 PCI 裝置直通即可

 

 

留言

這個網誌中的熱門文章

PVE 相關工具網站

 UBU  https://winraid.level1techs.com/t/tool-guide-news-uefi-bios-updater-ubu/30357 魔都水滴的 blog,裡面也是整理,有 pve_source 的連結 https://blog.margrop.net/post/proxmox-ve-daily-maintain/ pve_source  (似乎不能訪問) https://bbs.x86pi.cn/thread?topicId=20   AMD核顯直通 顯示輸出 HDMI/DP 簡單方法完整版 vbios提取 無需定制OVMF 可顯示開機BIOS啓動畫面 附送pve_source使用方法 https://www.youtube.com/watch?v=BElSsyLSX5c   PVE7 AMD 5700G 核显直通 (iGPU Passthrough) https://www.bilibili.com/video/BV11d4y1G7Nk    

PVE 設定 (2)

1. 安裝PVE source wget -q -O /root/pve_source.tar.gz \ 'https://bbs.x86pi.cn/file/topic/2023-11-28/file/01ac88d7d2b840cb88c15cb5e19d4305b2.gz' \ && tar zxvf /root/pve_source.tar.gz && /root/./pve_source  利用 PVE source,可以設定資訊於 Web UI 顯示 以及去除無效訂閱源提示 2. 移除 local_lvm,改用 ZFS (建議直接於安裝時選用 ZFS,會簡單很多) https://kawsing.gitbook.io/opensystem/andoid-shou-ji/pomoxve/fu-lu/shan-chu-nei-jian-de-lvm-thinlocallvm 3. 匯入既有的 zpool zpool import 然後照著做