我正在運行 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 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
在那裡,問題立即顯現出來:虛擬機器卡在啟動選單上,等待選擇啟動選項。我選擇了預設選項,嘿,很快,虛擬機器就完美運作了。
不過,有個問題:大概當我更新 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 位址。