我正在运行带有Ubuntu KVM的SmartOS 20130405T010449Z。 Ubuntu VM运行健康状态已经好几个月了,然后在物理硬件重新启动之后,vm不再在启动时连接到networking,所以我不能ssh来检查它的健康状况。
我可以login到SmartOS并启动虚拟机:
$ vmadm start [uuid]
validation它正在运行:
$ vmadm list UUID TYPE RAM STATE ALIAS [uuid] KVM 10240 running steve
并ping它:
$ ping steve steve is alive
但是当我试图放入虚拟机的控制台时,这个命令只会永远挂起:
$ vmadm console [uuid] [hangs forever]
当我尝试从SmartOS内部ssh得到相同的结果:
$ ssh steve [hangs forever]
我不能从networking上的其他机器ssh,因为Ubuntu VM的IP地址永远不会在networking上出现。
我应该尝试下一个访问此虚拟机?
好吧,我最终从虚拟机中恢复了我想要的东西,所以为了后代,这就是我所做的:
首先,我更新了SmartOS。 一开始我犹豫不决,担心数据丢失,但是升级完全是无痛的:在一个新的USB棒上放一个新的版本,关机,交换棒,然后重新启动。
更新后vmadm console和ssh在连接到虚拟机时仍然会挂起,所以关键的洞察力(我之前没有意识到)是通过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
在那里,问题立刻就显现出来了:虚拟机卡在启动菜单中,等待启动选项被选中。 我select了默认的选项,然后嘿,VM发现完美的健康。
但是有一个问题:大概是当我更新SmartOS的时候,我失去了“外部”的网卡,所以虚拟机没有通向外部的通道。 我不得不在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
然后将外部网卡添加到虚拟机:
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来接收configuration更改,然后虚拟机出现了一个networking接口。
警告:由于某种原因, vmadm console仍然无法工作。 它仍然无限期地挂起。 但是, ssh steve是在SmartOS里面工作的,我可以从networking上的其他机器上ssh到这个IP地址。