Metonymical Deflection

ゆるく日々のコト・たまにITインフラ

CentOS8 小ネタ集その4:SR-IOVの設定

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

BIOS上でSR-IOVを有効化する方法はHPガイドを参照してください。

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で設定していきます。
f:id:metonymical:20191013214413p:plain
仮想マシンをOpenで開き、Add Hardwareをクリック。
f:id:metonymical:20191013214505p:plain
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)

f:id:metonymical:20191013215103p:plain
上記のようになっていれば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.最後に

小ネタ集は一旦終了しようと思いますが、今後もちょくちょく追加できればと考えています。

*1:X540-T2として販売されているもので、HP純正ではなくAmazonで購入したOEM提供のものです。

*2:Slotの箇所は、Deviceと記載されている場合もあります。