基本的にはAWSの VPC 内の Linux インスタンスでの拡張ネットワーキングの有効化 を参照すれば良いのだが、RHEL(CentOS)の手順は簡略化されていたので、補足の意味合いで残します。
まずは、前提として拡張ネットワーキングを使う下記要件を満たして下さい。
要件
- Linux カーネルバージョン 2.6.32 以上である事
- VPC内で稼働しているHVM インスタンスである事
- 拡張ネットワーキングがサポートされているインスタンスタイプ (詳細)である事
- SR-IOVドライバが組み込まれている事
- インスタンスの拡張ネットワーキング属性が設定されている事
ハマったところ
CentOS6.6 + ixgbevf 2.14.2 の組み合わせでは dkmsでビルドに失敗したところ
※dkms を使う理由はkernel のバージョンアップ後にも自動でモジュールをビルドさせるため
こんな感じでビルドに失敗する
$ sudo dkms build -m ixgbevf -v 2.14.2 Kernel preparation unnecessary for this kernel. Skipping... Building module: cleaning build area... cd src/; make BUILD_KERNEL=2.6.32-504.30.3.el6.x86_64...(bad exit status: 2) Error! Bad return status for module build on kernel: 2.6.32-504.30.3.el6.x86_64 (x86_64) Consult /var/lib/dkms/ixgbevf/2.14.2/build/make.log for more information. $
バージョンを変えるため、add したモジュールを remove する
$ sudo dkms status ixgbevf, 2.14.2: added $ $ sudo dkms remove ixgbevf/2.14.2 --all ------------------------------ Deleting module version: 2.14.2 completely from the DKMS tree. ------------------------------ Done. $ $ sudo dkms status $
ixgbevf-2.16.1 をダウンロードして、/usr/src/ixgbevf-2.16.1/ に再配置。
dkms.conf の中身もバージョンを合わせて作成
$ cat /usr/src/ixgbevf-2.16.1/dkms.conf PACKAGE_NAME="ixgbevf" PACKAGE_VERSION="2.16.1" CLEAN="cd src/; make clean" MAKE="cd src/; make BUILD_KERNEL=${kernelver}" BUILT_MODULE_LOCATION[0]="src/" BUILT_MODULE_NAME[0]="ixgbevf" DEST_MODULE_LOCATION[0]="/updates" DEST_MODULE_NAME[0]="ixgbevf" AUTOINSTALL="yes" $
あとはビルドし直す
$ sudo dkms add -m ixgbevf -v 2.16.1 $ sudo dkms build -m ixgbevf -v 2.16.1 $ sudo dkms install -m ixgbevf -v 2.16.1
ビルドが完了したら、カーネルモジュールの依存解決とinitramfs の更新
$ sudo depmod $ cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak $ dracut -f
ネットワークインターフェイス名が変わる可能性があるかどうかを確認して、問題ないバージョンだったので特に作業はなし
※systemd または udev のバージョン 197 以上 の場合は必ずAWSのドキュメントに従い、デバイス名が変わらないようにしてください。
$ rpm -qa | grep -e '^systemd-[0-9]\+\|^udev-[0-9]\+' udev-147-2.57.el6.x86_64
インスタンス停止後にインスタンスの拡張ネットワーキング属性を変更
$ aws ec2 modify-instance-attribute --instance-id i-xxxxxxxx --sriov-net-support simple { "InstanceId": "i-xxxxxxxx", "SriovNetSupport": { "Value": "simple" } }
インスタンスを起動し、ログインして確認
$ ethtool -i eth0 driver: ixgbevf version: 2.16.1 firmware-version: N/A bus-info: 0000:00:03.0 supports-statistics: yes supports-test: yes supports-eeprom-access: no supports-register-dump: yes supports-priv-flags: no $
これで完了。
おまけ
ネットで調べてたら、RHEL6.7のAMIはデフォルトでSR-IOV対応したという記事を見つけた。
参考:RHEL6.7 AMIがデフォルトでSR-IOV対応した
MarketPlace のCentOS6 HVM AMI(ami-13614b12)
[root@ip-172-31-2-95 ~]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@ip-172-31-2-95 ~]# [root@ip-172-31-2-95 ~]# modinfo ixgbevf filename: /lib/modules/2.6.32-431.29.2.el6.x86_64/kernel/drivers/net/ixgbevf/ixgbevf.ko version: 2.7.12-k license: GPL description: Intel(R) 82599 Virtual Function Driver author: Intel Corporation, <linux.nics@intel.com> srcversion: E75203124BB105EC871944F alias: pci:v00008086d00001515sv*sd*bc*sc*i* alias: pci:v00008086d000010EDsv*sd*bc*sc*i* depends: vermagic: 2.6.32-431.29.2.el6.x86_64 SMP mod_unload modversions parm: debug:Debug level (0=none,...,16=all) (int) [root@ip-172-31-2-95 ~]# [root@ip-172-31-2-95 ~]# rpm -qf /lib/modules/2.6.32-431.29.2.el6.x86_64/kernel/drivers/net/ixgbevf/ixgbevf.ko kernel-2.6.32-431.29.2.el6.x86_64 [root@ip-172-31-2-95 ~]#
yum update したらRHEL6.7と同一のドライババージョンにアップデートされたみたい。
# cat /etc/redhat-release CentOS release 6.5 (Final) # # yum update -y # reboot # cat /etc/redhat-release CentOS release 6.6 (Final) # # modinfo ixgbevf filename: /lib/modules/2.6.32-504.30.3.el6.x86_64/kernel/drivers/net/ixgbevf/ixgbevf.ko version: 2.12.1-k license: GPL description: Intel(R) 82599 Virtual Function Driver author: Intel Corporation, <linux.nics@intel.com> srcversion: A23048DE274E66B4D22EF60 alias: pci:v00008086d00001515sv*sd*bc*sc*i* alias: pci:v00008086d000010EDsv*sd*bc*sc*i* depends: vermagic: 2.6.32-504.30.3.el6.x86_64 SMP mod_unload modversions parm: debug:Debug level (0=none,...,16=all) (int) # # rpm -qf /lib/modules/2.6.32-504.30.3.el6.x86_64/kernel/drivers/net/ixgbevf/ixgbevf.ko kernel-2.6.32-504.30.3.el6.x86_64 #
・・・あれ?もしかして、無駄な作業だった?
※ixgbevf 2.12.1-k が最新バージョンまで backport されたかどうか未確認
投稿者プロフィール
最新の投稿
- AWS2021年12月2日AWS Graviton3 プロセッサを搭載した EC2 C7g インスタンスが発表されました。
- セキュリティ2021年7月14日ゼロデイ攻撃とは
- セキュリティ2021年7月14日マルウェアとは
- WAF2021年7月13日クロスサイトスクリプティングとは?