CentOS8のSR-IOV設定方法を記載します。
基本的な注意事項などは過去記事と同様となりますので、そちらを参照してください。
1.環境
筐体 :ProLiant DL360e Gen8 System ROM :P73 01/22/2018 NIC :Intel X540-AT2 *1 OS :CentOS8.0 Installed Environment Groups: @^graphical-server-environment @container-management @development @virtualization-client @virtualization-hypervisor @virtualization-tools
2.iommuの有効化
vi /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet intel_iommu=on iommu=pt pci=realloc" もしくは sed -i -e "/GRUB_CMDLINE_LINUX=/s/\"$/ intel_iommu=on iommu=pt pci=realloc\"/g" /etc/default/grub
以下のコマンドでgrub2.cfgに反映
grub2-mkconfig -o /etc/grub2.cfg
3.SR-IOVの自動起動設定
vi /etc/rc.local echo 2 > /sys/class/net/ens1f0/device/sriov_numvfs echo 2 > /sys/class/net/ens1f1/device/sriov_numvfs exit 0 chmod +x /etc/rc.d/rc.local
4.modprobeのblacklistへの追加
ixgbevfを外すことによりホストOS上でVFがNICとして認識されるのを防ぎます。
但し、ホストOS上ではPCIデバイスとして認識しているため、ゲストOSにアタッチすることは可能です。
vi /lib/modprobe.d/dist-blacklist.conf
# ixgbevf driver
blacklist ixgbevf
もしくは
cat << EOF >> /lib/modprobe.d/dist-blacklist.conf
# ixgbevf driver
blacklist ixgbevf
EOF
ここで一旦再起動してください。
5.仮想マシンでの設定方法
Cockpitでは設定できないため、Virt-Managerで設定していきます。
仮想マシンをOpenで開き、Add Hardwareをクリック。
PCI Host Deviceを選択。
Host Device:から、Virtual Functionを選択。
以下の通り、VFとPFのポートは偶数と奇数で分かれています。*2
Domain:Bus:Slot:Function -> PFのポート 0000 :08 :10 :0 -> enp1s0(0000:08:00:0) 0000 :08 :10 :1 -> enp1s1(0000:08:00:1) 0000 :08 :10 :2 -> enp1s0(0000:08:00:0) 0000 :08 :10 :3 -> enp1s1(0000:08:00:1) 0000 :08 :10 :4 -> enp1s0(0000:08:00:0) 0000 :08 :10 :5 -> enp1s1(0000:08:00:1) 0000 :08 :10 :6 -> enp1s0(0000:08:00:0) 0000 :08 :10 :7 -> enp1s1(0000:08:00:1)
上記のようになっていればOKです。
仮想マシンを起動してください。
仮想マシン起動後にホストOSにて、ip link showコマンドにより、仮想マシンがVFを掴んでいることが確認できます。
仮想マシン上でも同一MACアドレスになっていればOKです。
[root@c80g240 ~]# ip link show 6: ens1f0:mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether a0:36:9f:3e:6d:68 brd ff:ff:ff:ff:ff:ff vf 0 MAC 12:af:d7:6e:fa:20, spoof checking on, link-state auto, trust off, query_rss off vf 1 MAC 00:00:00:00:00:00, spoof checking on, link-state auto, trust off, query_rss off vf 2 MAC 00:00:00:00:00:00, spoof checking on, link-state auto, trust off, query_rss off vf 3 MAC 00:00:00:00:00:00, spoof checking on, link-state auto, trust off, query_rss off 7: ens1f1: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether a0:36:9f:3e:6d:6a brd ff:ff:ff:ff:ff:ff vf 0 MAC 00:00:00:00:00:00, spoof checking on, link-state auto, trust off, query_rss off vf 1 MAC 00:00:00:00:00:00, spoof checking on, link-state auto, trust off, query_rss off vf 2 MAC 00:00:00:00:00:00, spoof checking on, link-state auto, trust off, query_rss off vf 3 MAC 00:00:00:00:00:00, spoof checking on, link-state auto, trust off, query_rss off
以上です。
6.最後に
小ネタ集は一旦終了しようと思いますが、今後もちょくちょく追加できればと考えています。