我正在运行 SmartOS 20130405T010449Z,其中有一个 Ubuntu KVM。Ubuntu 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
但是当我尝试进入虚拟机的控制台时,命令就永远挂起了:
$ vmadm console [uuid]
[hangs forever]
当我尝试从 SmartOS 内部 ssh 时得到了相同的结果:
$ ssh steve
[hangs forever]
我无法从网络上的其他机器进行 ssh,因为 Ubuntu VM 的 IP 地址从未出现在网络上。
接下来我应该尝试什么来访问该虚拟机?
答案1
好的,我最终从虚拟机中恢复了我想要的东西,所以为了以后使用,我做了以下事情:
首先,我更新了 SmartOS。一开始我很犹豫,担心数据丢失,但升级过程非常轻松:将新版本放到新的 USB 上,关机,更换 USB 盘,然后重启。
更新后vmadm console
,ssh
连接到 VM 时仍然会挂起,因此关键的见解(我之前不知道这一点)是通过 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
问题立即显现出来:虚拟机卡在启动菜单,等待选择启动选项。我选择了默认选项,然后虚拟机就完全正常运行了。
不过,有一个问题:大概是当我更新 SmartOS 时,我丢失了“外部”NIC,因此虚拟机没有与外界联系的通道。我不得不/usbkey/config
在 SmartOS 中手动编辑并添加以下缺失的行:
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 才能使配置更改生效,然后 VM 才会出现网络接口。
警告:vmadm console
由于某种原因,它仍然无法工作;它仍然无限期地挂起。但是,ssh steve
在 SmartOS 内部可以工作,我可以从网络上的其他机器 ssh 到 IP 地址。