2010年11月19日金曜日

linuxでintelのギガビットイーサカードを使いたい。 ~e1000とe1000eドライバを更新する

新しく組んだサーバでインテルのNICであるe1000とe1000eが挙動不審だったので、
ドライバを更新した。
特にe1000eは認識はしているが、LANケーブルをつないでもリンクアップしない。
やれやれ。

環境はcentos5.5で、インストールして即yumによるアップデートしたもの。

intelのサイトに行き、ダウンロード・センター
http://downloadcenter.intel.com/
から、ドライバを取ってくる。

e1000の場合、
選択肢は

製品ファミリー
ネットワーク・コネクティビティー
製品ライン
インテルR デスクトップ・アダプタ
製品名
インテルR PRO/1000 GT デスクトップ・アダプター


多分どれを選んでもチップは同じはず。

更にlinux→ドライバと選択を進める。

etwork Adapter Driver for Gigabit PCI Based Network Connections for Linux

というドライバをダウンロードできるようになるので、ダウンロード。

e1000eは

製品ファミリー
ネットワーク・コネクティビティー
製品ライン
インテルR サーバ・アダプタ
製品名
インテルR PRO/1000 PT サーバー・アダプター


これもチップは同じはず。

Network Adapter Driver for PCI-E Gigabit Network Connections under Linux

をダウンロード。

以下はe1000eのreadmeを参考に。
tar.gzを解凍した際のreadmeを見ながら作業。
1. Move the base driver tar file to the directory of your choice. For
example, use /home/username/e1000e or /usr/local/src/e1000e.

まずはダウンロードファイルのある場所に移動

2. Untar/unzip archive:

解凍。

tar zxf e1000e-x.x.x.tar.gz

3. Change to the driver src directory:

解凍先のディレクトリsrc(ソースコード)に移動。

cd e1000e-x.x.x/src/

4. Compile the driver module:

rootでmake install。

# make install

The binary will be installed as:

/lib/modules//kernel/drivers/net/e1000e/e1000e.[k]o

The install locations listed above are the default locations. They
might not be correct for certain Linux distributions.

まあ、多分大丈夫。

5. Load the module using either the insmod or modprobe command:

modprobeでモジュールをロード。2.6カーネル以降ならフルパスで指定しろ、と言われたが、
僕の環境だとエラーを吐いた。何故。気にせず進む。
更に2.6以降のカーネルなら、一回昔のドライバを消して再ロードしろと言われたので、
再ロードする(rmmod~)。
modprobe e1000e

insmod e1000e

Note that for 2.6 kernels the insmod command can be used if the full
path to the driver module is specified. For example:

insmod /lib/modules//kernel/drivers/net/e1000e/e1000e.ko

With 2.6 based kernels also make sure that older e1000e drivers are
removed from the kernel, before loading the new module:

rmmod e1000e; modprobe e1000e

是で無事繋がった。
うちだと差した段階でethとして認識していたので、6以降はやらなくてよかった。

で、更に調べてみると、なんとrpmに出来ちゃったりするらしい・・・。
http://kiwi-jp.blogspot.com/2007/11/e1000.html

必要なパッケージ
rpm-build
kernel-source

インストール
# rpmbuild -tb e1000-7.6.9.tar.gz
# cd /usr/src/redhat/RPMS/i386
# rpm -ivh ./e1000-7.6.9-1.i386.rpm


たしかにreadmeに書いてある・・・。
To build a binary RPM* package of this driver, run 'rpmbuild -tb
'. Replace with the specific filename
of the driver.


readmeはよく読めということですね。

無事繋がったNIC4枚でbondingし、ファイルサーバを構築。
ネットワーク越しのファイルサーバ速度を測るため、win7上にcrystaldiskmarkをインストールして計測。
sambaでネットワークドライブ化してのスピードは以下の通り。
環境は
centos5.5
3ware 9690saでraid10(システムはraid1)
bondingのmodeはmode=0ラウンドロビン。
-----------------------------------------------------------------------
CrystalDiskMark 3.0 (C) 2007-2010 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

Sequential Read : 21.665 MB/s
Sequential Write : 76.449 MB/s
Random Read 512KB : 22.075 MB/s
Random Write 512KB : 73.868 MB/s
Random Read 4KB (QD=1) : 11.553 MB/s [ 2820.6 IOPS]
Random Write 4KB (QD=1) : 12.102 MB/s [ 2954.6 IOPS]
Random Read 4KB (QD=32) : 28.242 MB/s [ 6895.1 IOPS]
Random Write 4KB (QD=32) : 51.734 MB/s [ 12630.4 IOPS]

Test : 100 MB [V: 5.2% (140.7/2706.4 GB)] (x5)
Date : 2010/11/19 15:13:56
OS : Windows 7 [6.1 Build 7600] (x64)
--------------------------------

readが弱いが、writeはすこぶる速い。
bwmonでのネットワークスピードを見ても、最大70mb/s出ているので間違いない。
因みにe1000e一枚なら、readはCrystalDiskMarkで最大55mb/sまで伸びるので、
bondingした分処理が入って遅くなっていると見た方が良い。
win7上で1gbのファイルをDL、ULした場合、見た感じread35mb/s、write70mb/sくらい。
NIC1枚だと、read/write両方70mb/sを超え、たまに120mb/s超えを見ることが出来る。
70mb/sをbpsに直すと560mbpsか。1000mbpsのLANカードを4枚使っているにしてはしょっぱいなあ。
まあファイルサーバだし、安定して帯域の半分を使えるというのはありがたい。

0 件のコメント:

コメントを投稿