CALENDAR

2009年10月
« 9月   11月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

CATEGORIES

ARCHIVES

あわせて読みたい

  • LOADING...

NETDEV WATCHDOG: eth0: transmit timed out

  • このエントリーをはてなブックマークに追加
  • はてなブックマーク - NETDEV WATCHDOG: eth0: transmit timed out
  • Share on Facebook
  • Post to Google Buzz
  • Bookmark this on Yahoo Bookmark
  • Bookmark this on Livedoor Clip
  • Share on FriendFeed

自宅サーバのネットワークが突如不安定になる問題の解決メモ。

samba 経由で 10GB 程度のファイルをダウンロードしていると、サーバと通信が途切れてその後まともに通信出来なくなるという現象。
上記なことをしなければまったく問題なかったので、解決まで時間がかかったかかった。
いろいろ無駄な作業もしたけど、忘れがたい経験になったのでまとめメモ。

原因追及

とりあえず情報収集。
手始めに /var/log/message を眺める。
いろいろあやしげな文字列がある中、ひときわ目立ってたのが次の1文。

$ vi /var/log/message
...
NETDEV WATCHDOG: eth0: transmit timed out
...

このメッセージが出た直後から、まともに ssh すらできない状態に陥るもよう。

最初はクライアント側の Mac のせいかと思って、Windows から同じことを試したりしたけど、状況は変わらず
いま思ってみれば、サーバにエラー的なメッセージが出ている時点でほぼ原因はサーバと断定して良かったかもしれない。

とにかく原因はサーバ側にあるらしいとこまで絞り込めた。
けど、具体的な症状はこの時点で当然ながらさっぱりだったので、引き続き情報収集。

# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1C:C0:B4:F6:4A  
          inet addr:192.168.11.30  Bcast:192.168.11.255  Mask:255.255.255.0
...
# ethtool eth0
Settings for eth0:
...
	Advertised auto-negotiation: Yes
	Speed: 1000Mb/s
	Duplex: Full
...
# lspci -v
...
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
	Subsystem: Intel Corporation Unknown device 0001
...

いろいろコマンドの使い方は分かったものの、原因はさっぱり。

調べた情報を元に google 先生と協力しながら、
ethtool で speed を 1000 から 100 にしてみたり。

# ethtool -s eth0 speed 100

TCP Segmentation Offload をオフにしてみたり。(後でもともとオフだったことに気づいたり)

# ethtool -K eth0 tso off

けれど、解決には至らず。

検索語を変えながらさらに調べていくと、
「NIC のドライバのバージョンが違うとネットワークが不安定になるよ」という情報を発見。
どうも NIC とドライバのバージョン関係に原因がありそうということが分かった。

解決編

先人の知恵をもとに NIC のバージョンとドライバを確認。

# lspci | grep Ether
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
# lsmod | grep r81
... r8169 ですよ的な表示 ...

バージョンは、RTL8111/8168B。
インストールされているドライバは、r8169。

!!

RTL8111/8168B には、r8168 がインストールされていないとだめとのこと。
ここまで来れば解決したも同然!
さっそくドライバを再インストール。
ssh 経由 だとサーバから切断されて作業が中断されること請け合いなので、直接キーボードを繋いでの作業がオススメ。
事前に ドライバ をダウンロードしてサーバに置いておく。
作業時は r8168-8.014.00.tar.bz2 を /usr/local/src に置いた。

$ su -
# cd /usr/local/src
# rmmod r8169
# vi /etc/modprobe.conf
r8169 を r8168 に置換
...
# tar jxvf r8168-8.014.00.tar.bz2 
# cd r8168-8.014.00
# vi readme 
... すべき作業が書いてある...
# make clean modules
# make install
# man depmod
# depmod -a
# modprobe r8168
# lsmod | grep r8168
# reboot

以上のコマンドを叩いた結果、無事に samba 経由で 10GB 程度のファイルをダウンロードすることが出来るようになった。

まさかのドライバ違いに思わぬ時間を取られてしまったけど、いい経験になったかも。

参考

CentOSにNICを手動インストールした人は、正しいドライバが入っているかチェックしたほうがよさげ

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> <pre lang="" line="" escaped="">