手元のAWS環境で動いているCentOS 6.6をSR-IOVに対応させたかったので、先人の知恵をお借りしながら作業手順をまとめました。
環境に依存する部分も大きいかと思うので、何か問題点などあればご連絡下さい。ご指摘をいただきより正しい文書に出来れば多くの方が幸せになれると考えています。
先人の知恵
http://understeer.hatenablog.com/entry/2014/04/10/151403
http://matetsu.hatenablog.com/entry/2014/08/12/132213
作業手順
RPM作成
事前準備
カーネルのヘッダなどをインストールし、rpmbuildに備えます。
(コンパイル環境などはすでに整っているものとします)
yum install -y kernel-devel-`uname -r` kernel-headers-`uname -r`
ソースの入手
ixgbevfのソースを取得します(URLは2015/04/03現在)
curl -O http://ufpr.dl.sourceforge.net/project/e1000/ixgbevf%20stable/2.16.1/ixgbevf-2.16.1.tar.gz
RPM作成
ありがたいことに、入手したソースコードはrpmbuildに対応しているので以下1行でRPMが作成できます。
rpmbuild -tb ixgbevf-2.16.1.tar.gz
RPMをインストールします
rpm -ivh ~/rpmbuild/RPMS/x86_64/ixgbevf-2.16.1-1.x86_64.rpm
設定
ixgbevfの設定
rm /etc/udev/rules.d/70-persistent-net.rules
sed -i 's:^DRIVERS=="?*":#DRIVERS=="?*":g' /lib/udev/rules.d/75-persistent-net-generator.rules ; echo '# DRIVERS=="?*", IMPORT{program}="write_net_rules"' >> /etc/udev/rules.d/75-persistent-net-generator.rules
echo "options ixgbevf InterruptThrottleRate=1,1,1,1,1,1,1,1" > /etc/modprobe.d/ixgbevf.conf
poweroff
インスタンスへのSR-IOV設定
以下の例では東京リージョンで起動している、i-XXXXXXXXというリソースIDのついたEC2をSR-IOV対応させることが出来ます。
アトリビュート変更はインスタンス停止中のみ有効です。
aws ec2 modify-instance-attribute --instance-id i-XXXXXXXX --sriov-net-support simple --region ap-northeast-1
確認は以下のコマンドを参考にして下さい。
aws ec2 describe-instance-attribute --instance-id i-XXXXXXXX --attribute sriovNetSupport --region ap-northeast-1
起動
インスタンスを起動して下さい。
問題が起こったら
- 状況を私宛に教えて頂ければベストエフォートで調査とこのドキュメントの修正を行います
- とりあえず立ち上げたい場合であれば、t2.microなどSR-IOVに対応してないインスタンスタイプへ変更して起動して下さい。