私は、Ubuntu KVM を内蔵した SmartOS 20130405T010449Z を実行しています。Ubuntu VM は数か月間正常に動作していましたが、物理ハードウェアを再起動した後、起動時に VM がネットワークに接続しなくなり、ssh で接続して正常性をチェックできなくなりました。
SmartOS にログインして VM を起動できます。
$ vmadm start [uuid]
実行されていることを確認します:
$ vmadm list
UUID TYPE RAM STATE ALIAS
[uuid] KVM 10240 running steve
そしてpingを実行します:
$ ping steve
steve is alive
しかし、VM のコンソールにドロップしようとすると、コマンドが永久にハングしてしまいます。
$ vmadm console [uuid]
[hangs forever]
SmartOS 内から ssh を試みると、同じ結果になります。
$ ssh steve
[hangs forever]
Ubuntu VM の IP アドレスがネットワーク上で表示されないため、ネットワーク上の他のマシンから ssh できません。
この VM にアクセスするには次に何を試せばいいでしょうか?
答え1
さて、最終的に VM から必要なものを回復できたので、後世のために、私が行ったことを以下に示します。
まず、SmartOS を更新しました。最初はデータ損失を恐れて躊躇しましたが、アップグレードはまったく苦労しませんでした。新しいバージョンを新しい USB スティックに保存し、シャットダウンしてスティックを入れ替え、再起動するだけです。
アップデート後もvmadm console
VMssh
に接続するとハングアップするため、代わりに VNC 経由で接続するという重要な洞察が得られました (以前はこれに気づいていませんでした)。
root@smartos $ vmadm info [UUID] vnc
{
"vnc": {
"host": "192.168.1.7",
"port": 64762,
"display": 58862
}
}
me@anotherMachine $ xtightvncviewer 192.168.1.7::64762
そこで、問題がすぐに明らかになりました。VM はブート メニューで停止し、ブート オプションが選択されるのを待っていました。デフォルトのオプションを選択すると、なんと VM が完全に正常に起動しました。
ただし、問題がありました。おそらく SmartOS を更新したときに「外部」NIC が失われ、VM が外部へのチャネルなしで起動したのです。SmartOS/usbkey/config
で手動で編集し、不足していた次の行を追加する必要がありました。
external_nic=[MAC address]
external0_ip=192.168.1.20
external0_netmask=255.255.255.0
external0_gateway=192.168.1.1
次に、外部 NIC を VM に追加します。
root@smartos $ cat add_nic.json
{
"add_nics": [
{
"physical": "net1",
"index": 1,
"nic_tag": "external",
"mac": "[MAC address]",
"ip": "192.168.1.8",
"netmask": "255.255.255.0",
"gateway": "192.168.1.1"
}
]
}
root@smartos $ cat add_nic.json | vmadm update [UUID]
構成の変更を反映するには SmartOS を再起動する必要があり、その後 VM にネットワーク インターフェイスが起動しました。
注意:vmadm console
何らかの理由でまだ動作しません。無期限にハングしたままです。ただし、ssh steve
SmartOS 内からは動作し、ネットワーク上の他のマシンから IP アドレスに ssh できます。