読者です 読者をやめる 読者になる 読者になる

ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Ubuntu Server Trustyで動かしたLinux KVMで起こった事件

Linux KVM Ubuntu Server

Ubuntu Server TrustyでLinux KVMを構築して、普段OpenStack環境を作ったりJuju/MAASなんかで色々動かしたりとよくやっているのですが、今日sudo apt updateをやるつもりがうっかりsudo apt upgradeをやってしまってコーヒーを注いで戻ったらアップデートが完了していました。

あ、まずいw

それ以降、なんかそのLinux KVM上で動かしているVMの通信が変...

Linux KVMの上ではMAASを動かしていました。アップデートが終わった後からMAASで管理しているノードにOSをデプロイしようとするとPXEブートに失敗しました。なんどやってもダメ、MAASサーバーを再起動してもダメ、ノードを再起動したり、一回消して再度追加しようとしてもダメです。むしろ追加できなくなりました(Enlistができない状態)。

KVMホストのifconfigを実行すると、次のような結果が出力されました。

f:id:ytooyama:20161121223545p:plain

物理NICのem1と論理NIC(ブリッジ)のbr0でdropped packetが観測されていました。em1についてはコマンドを実行していくと次第にdropped packetが増えていきます。なんかおかしい状態みたいですね。このスクリーンショットには映っていませんがem2,br1の方も同じようにdropped packetがあって、こちらも次第に増えていくのが確認されました。

VMの中でifconfigを実行するとKVMホストほどではないですが、こちらでもdropped packetが観測されました。KVMホストの問題であるのが濃厚になりました。

この後いろいろ調べて詳細を覚えていないのですが、次のようにKVMホスト上で実行したところ、ピタッと問題が解決し、MAASを使ったPXEブートができるようになりました。アップデート中に何らかの複合的な要因によりカーネルモジュールのリロードがうまく行かなかったとか、なんかそんな原因だったのかな?

Xenialにしてからこういうことは起きていないので、このサーバーもさっさとXenialにアップデートしたいですね。

$ sudo update-initramfs -u

ちなみにsyslogに次のような出力があります。br1もem2もNICは存在しますし設定も行われていてLink Upしていますし、brctl showで次のように出力されるのですが、これについては原因を調査中です。ただこれこそ再起動したら収束しそうな気はします。Kernel 4.4の最新版に切り替えるとかも有効かもしれません。

# less /var/log/syslog
...
dhclient: DHCPDISCOVER on br1 to 255.255.255.255 port 67 interval 15 (xid=0x181da846)
dhclient: send_packet: No such device or address
dhclient: dhclient.c:2041: Failed to send 300 byte long packet over br1 interface.

# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.0025b3e20d52   no      em1
                            vnet0
                            vnet1
                            vnet2
                            vnet3
                            vnet4
                            vnet5
br1     8000.0025b3e20d54   yes     em2
virbr0      8000.000000000000   yes

エラーで検索した結果出てきたものがこれ。linux-firmwareを最新にして再起動すれば?とか。 もちろん現在最新バージョンがインストールされてます。

askubuntu.com

ちなみにこのサーバーも「やつ」がいます。

# lspci|grep net
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
02:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
03:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
03:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)

[16/11/22 追記]

Ubuntu TrustyにKernel 4.4系の最新版をインストールして再起動したところ、dhclientのエラー出力は無くなりました。