修復Proxmxo VE:虛擬機器無法進入終端畫面 / Fix Proxmox VE: How to Enter OpenVZ Container’s Console?
Proxmox VE改版之後,很多OpenVZ範本都無法進入終端畫面(Console)。其實可以開啟節點(Node)的終端畫面(Shell),然後以「vzctl enter [VMID]」來進入OpenVZ虛擬機器中。
This article describes the problem of Proxmox VE Cluster: How to enter OpenVZ container’s console? A proposed solution to the problem is use vzctl enter [VMID] command, or modify template. Following are the problem description and solutions.
問題狀況 / Problem Description
Proxmox VE提供了方便的管理工具,可以讓管理者直接在Proxmox VE中點選「Console」(終端頁面)來顯示OpenVZ虛擬機器(又稱為container,CT)的終端畫面,如上圖。
可是由於早期的OpenVZ虛擬應用範本,特別是CentOS,在開啟Console的時候,只會顯示以下訊息:
Attached to CT 101 (ESC . to detech)
什麼都看不到,而且什麼都無法操作。
問題原因 / Causes of Problem
這是因為早期OpenVZ虛擬應用範本檔案中輸出Console的終端設定跟現在Proxmox VE版本的設定不合。導致OpenVZ虛擬機器雖然可以顯示開機與關機資訊,但真正讓人可以操作的訊息卻顯示不到console使用的Java Applet上。
應急的解決方案是從節點(node)直接進入虛擬機器的手動解決方案,長期的話就修改範本設定。我們現在已經使用了很多虛擬機器,也不是常常在進入伺服器。在此先介紹短期內直接進入的手動解決方案。
手動解決方案 / Manual Solution
參考Proxmox VE OpenVZ Console的Troubleshooting,做法如下:
- 先進入Proxmox VE管理介面。找到無法進入Console端的虛擬機器,確認VMID編號為101。
- 回到該機器的節點「puli-openvz」,進入右上角的Shell。
- 接下來會顯示節點伺服器的終端畫面。
- 輸入以下指令進入虛擬機器:
# vzctl enter [VMID]
以VMID 101的虛擬機器為例,指令如下:# vzctl enter 101
- 接著就可以進入虛擬機器內了。
由於這個方法跟直接點選console按鈕比起來也不會耗費太多功夫,所以很推薦大家來使用。
自動解決方案 / Automatic Solution
當然,最好的方式是修改虛擬應用範本,以避免每次都還要繞路才能開啟Console的困擾。
CentOS 6的解決方法 / Solution for CentOS 6
根據Proxomx VE Modifying your templates的說明,我試著在centos-6-standard_6.3-1_i386.tar.gz上修改成功。
加入tty.conf / Add tty.conf
做法是在該虛擬機器範本中加入 /etc/init/tty.conf 檔案,檔案內容如下:
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/agetty -8 tty1 38400
然後以 reboot 指令重新啟動虛擬機器,這樣就可以用console登入了。
下載tty.conf / Download tty.conf
為了方便起見,我把這些動作寫成以下指令。只要在無法直接進入console端的虛擬機器直接執行即可:(感謝aleroot對wget覆寫指令的解說)
# mkdir –p /etc/init; cd /etc/init; wget -q http://goo.gl/nx13fz –-no-check-certificate; reboot
然後就等待重開機吧。
CentOS 5的解決的方法 / Solution for CentOS 5
CentOS 5的做法不一樣,請輸入以下指令:
# echo "1:2345:respawn:/sbin/agetty tty1 38400 linux" >> /etc/inittab; reboot
登入終端界面 / Login in Console
剛進去的時候是全黑的,請先按一次「enter」鍵。然後才會顯示文字訊息。
不過似乎第一次登入還是要輸入帳號密碼的樣子,這部分就難免了。
重設虛擬機器的root密碼 / Reset Root Password
由於使用vzctl enter [VMID]的方式可以進入任何OpenVZ虛擬機器裡面,而且是以root身份進入,因此可以用這個方式重設root的密碼。
做法概述如下:
- 從節點(node)的Shell進入
# vzctl enter [VMID]
- 以root身份登入虛擬機器
- 變更密碼指令:
# passwd root
然後輸入你要變更的密碼
完成。
正式的做法則是參考OpenVZ論壇中maratrus的講解,在節點的Shell中使用vzctl中的—userpasswd,指令如下:
# vzctl set [VMID] --userpasswd root:[newpasswd] --save
兩種方法都可以喔。