💡 简单说:你想“分一个口给虚机”,但用的是“整卡独占”的玩法,天然矛盾。
Socket/IIO Config → Intel VT for Directed I/O (VT-d) = Enabled
Advanced → PCI Subsystem Settings → SR-IOV Support = Enabled
Virtualization Mode = SR-IOV(BCM57810 这种要在端口级单独开,两个口一起改)
cat /proc/cmdline 里有 intel_iommu=on 或 amd_iommu=on
dmesg | grep -i iommu 能看到 DMAR/AMD-Vi 初始化日志
num_vfs,ixgbe 用 max_vfs),或平台界面里配
lspci | grep -i virtual 能看到新增的 VF 设备
# 共享模式(默认)分配 VF 给虚机
vmm
add sriov vm <虚机名> pf <pfid> vf <vfid> [vlan <vlan-id>]# CVK 底层
lspci -vv | grep -i "Single Root I/O Virtualization"cat /proc/cmdline 有没有 iommu 参数
1. 关机虚机
2. BIOS 开 VT-d + SR-IOV(端口级也开)
3. 平台主机开 IOMMU,重启 CVK
4. 网卡驱动加载时设 VF 数量(比如 4 个)
5. 虚机添加“SR-IOV 直通网卡”(不是 PCI 设备)
6. 选 VF + VLAN,开机
7. 虚机内装 VF 驱动⚠️ 千万别再把“管理网口/存储网口”拿去直通,否则集群直接崩。
这个现象是 IOMMU 分组硬件机制决定的:IOMMU Group 是直通最小隔离单元,同一 IOMMU Group 里所有 PCI 功能必须一次性全部直通给虚拟机,不能单独挑其中一个网口。 你这块双口 / 四口网卡的多个 Port(PF)在 BIOS / 服务器固件里被分到了同一个 IOMMU Group,所以在 CVM 页面勾选其中一个,系统自动把同组所有接口一起选中。
注意:不是 CAS 平台 bug,是硬件固件 PCI ACS、IOMMU 隔离粒度问题。
原理:开启 PCIe ACS(Access Control Services),把同一个网卡的多个 PF 拆分成独立 IOMMU Group,之后才能单独直通单口。 操作步骤:
ACS Control / PCI Access Control Services,设置为Enabled⚠️注意:很多国产网卡、老网卡、板载网卡不支持 ACS 拆分,开启后无效,甚至网卡异常。
for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU Group %s ' "$n"; lspci -nns "${d##*/}"; done
⚠️风险提醒:开启 ACS 有小概率引发 PCIe 设备不稳定、网卡丢包、SSD 异常,生产环境先测试。
如果你目标只是给虚机单独分配一个物理网口、不需要独占整 PF,不要用 PF 原始 PCI 直通,改用 SR‑IOV:
暂无评论
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论