對無法啟動的 SmartOS VM 進行故障排除

對無法啟動的 SmartOS VM 進行故障排除

我正在運行 SmartOS 20130405T010449Z,裡面有 Ubuntu KVM。 Ubuntu 虛擬機健康運行了幾個月,然後在實體硬體重新啟動後,虛擬機在啟動時不再連接到網絡,因此我無法透過 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 記憶棒上,關機,交換記憶棒,然後重新啟動。

更新後vmadm consolessh連接到虛擬機器時仍然會掛起,因此關鍵的見解(我之前沒有意識到這一點)是透過 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 才能使設定變更生效,然後虛擬機器就會出現網路介面。

警告:vmadm console由於某種原因仍然無法運作;它仍然無限期地掛起。但是,它可以ssh steve在 SmartOS 內部工作,我可以從網路上的其他電腦透過 ssh 存取該 IP 位址。

相關內容