« 2011年02月 | メイン | 2011年04月 »

2011年03月11日

Isilonのストレージセミナー

東芝ITサービスさんが主催する、Isilonのストレージセミナーに参加してきました。

Isilon IQという製品は、ひとことでいうと「スケールアウト型NAS」だそうです。
ファイルを分割し、パリティを付加してノード間でデータを分散して保持します。
1パーティションのサイズを、ノードを追加していくことでどんどん拡張できます。
ノード追加はオンラインででき、60秒で完了するとのこと。
サーバからストレージへのアクセス性能については、NASなので、ネットワークの性能にも依存すると思われます。
より速いLANで構築することとチーミングで工夫するとよいのかな。
また、ノードが増えるとその分ヘッド(コントローラー)が増えるのでアクセス性能もアップするとのことです。

仮想化、クラウドを支える技術として肝となるのはストレージだと思っています。
ストレージは性能的に一番ボトルネックになりやすいし、どんなに堅牢なサーバを用意して冗長化しても、ストレージが壊れたらサービスが止まってしまいます。
といって、ストレージ機器を常に2台、2セット用意するとコストがかかってしまいますね。

性能、可用性、拡張性と管理の容易さを考えると、ストレージソリューションとしてIsilon IQは素晴らしい製品だと思いました。
大容量のコンテンツ配信、大量データ処理、仮想化のサーバ数が多いケース、企業内のストレージ統合などでおすすめできそうです。
あとは価格ですね。。。

※セミナー中、地震で何度も揺れて少し気持ち悪くなりました。。

2011年03月09日

Xen, bonding, arp監視でpbond0: received packet with own address as source addressのエラー

先日、2台のXenホストOSでbondingの設定を行ったときのこと。
OSはCentOS 5.5、bondingの監視方法はarp監視です。

bondingの設定を行い、ネットワークの冗長化そのものはゲストOSのネットワークの切り替わりを含めて問題なく動作したのですが、/var/log/messages に下記のメッセージが大量に出力されるようになりました。

Mar 3 10:24:41 hostname kernel: pbond0: received packet with
own address as source address

いろいろ調べたのですが、例えば下記に書かれている対処方法では解決できず。

Stray Penguin - Linux Memo (Xen):
http://www.asahi-net.or.jp/~aa4t-nngk/xen.html#ownaddresstrouble

その後さらに調べたところ、XenSourceのbugzillaに記載されていた方法で無事解決しました。

XenSource bugzilla:
http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=339

原因は、ブリッジ・インタフェースと物理ネットワーク・インタフェースを結ぶための論理ネットワーク・インタフェースであるpeth0に割り当てられたMACアドレスが"FE:FF:FF:FF:FF:FF"であり、これが2台のXenホストOSとも同じでバッティングしていた、というものでした。

XenのホストOSが同一ネットワークに複数台存在し、かつ複数台でbondingの設定を行い、かつbondingの監視方法がarpという条件で発生する現象のようです。
ちなみに監視方法がMIIの場合は発生しません。

対処方法は、ネットワークブリッジ設定スクリプト/etc/xen/network-bridgeを下記のように変更し、Xenの各インターフェースに一意なMACアドレスを割り当てるようにします。
macidはホストOSごとに違う値を指定します。

-- /etc/xen/network-bridge 変更前
setup_bridge_port ${vif0}
ip link set ${netdev} addr ${mac} arp on

ip link set ${bridge} up
add_to_bridge ${bridge} ${vif0}
add_to_bridge2 ${bridge} ${pdev}
--

-- /etc/xen/network-bridge 変更後
#macid is used to uniquely identify this dom0 on this network
#change this to avoid MAC address conflicts if you get:
#"peth0: received packet with own address as source address"
macid="F0"

(中略)

setup_bridge_port ${vif0}
ip link set ${netdev} addr ${mac} arp on

ip link set ${pdev} addr fe:ff:ff:ff:${macid}:0${vifnum}
ip link set ${vif0} addr fe:ff:ff:ff:${macid}:0${vifnum}

ip link set ${bridge} up
add_to_bridge ${bridge} ${vif0}
add_to_bridge2 ${bridge} ${pdev}
--

設定変更後、OSを再起動したところ、エラーメッセージが出なくなりました。


解決したのはよいけれど、なぜarp監視のときだけエラーメッセージが出力されたのでしょう。

今回のarp監視ではターゲットとしてルータのIPアドレスを指定しているのですが、そのIPアドレスに対するMACアドレスを知るためにarpパケットをブロードキャストしているから、ですね。

あるホストOSが別のホストOSからブロードキャストされたARPパケットを受け取って、そのARPパケットのヘッダにある送信元のMACアドレスが、自分のMACアドレスと同じなので「received packet with own address as source address(送信元のアドレスが自分のアドレスと同じパケットを受け取ったよ。なんか変じゃない?)」というエラーを出力したのでしょう。
原因がわかってすっきりしました。

arp監視のために送受信するarpパケットについては下記が詳しいです。

Carpe Diem bonding ことはじめ:
http://www.sssg.org/blogs/naoya/archives/1188