手元の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://jaist.dl.sourceforge.net/project/e1000/ixgbevf%20stable/2.16.1/ixgbevf-2.16.1.tar.gz
RPM作成

ありがたいことに、入手したソースコードは rpmbuild に対応しているので以下1行でRPMが作成できます。

rpmbuid -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 に対応してないインスタンスタイプへ変更して起動して下さい。