解决 SmartOS VM 无法启动的问题

解决 SmartOS VM 无法启动的问题

我正在运行 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 consolessh连接到 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 地址。

相关内容