:::

修復Proxmxo VE:虛擬機器無法進入終端畫面 / Fix Proxmox VE: How to Enter OpenVZ Container’s Console?

2014-08-11_224331

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

2014-08-11_223808

Proxmox VE提供了方便的管理工具,可以讓管理者直接在Proxmox VE中點選「Console」(終端頁面)來顯示OpenVZ虛擬機器(又稱為container,CT)的終端畫面,如上圖。

2014-08-11_224312

可是由於早期的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,做法如下:

  1. 先進入Proxmox VE管理介面。找到無法進入Console端的虛擬機器,確認VMID編號為101。2014-08-11_225455
  2. 回到該機器的節點「puli-openvz」,進入右上角的Shell。
    2014-08-11_225439
  3. 接下來會顯示節點伺服器的終端畫面。
    2014-08-11_225554
  4. 輸入以下指令進入虛擬機器:
    # vzctl enter [VMID]
    以VMID 101的虛擬機器為例,指令如下:
    # vzctl enter 101
    2014-08-11_225733
  5. 接著就可以進入虛擬機器內了。
    2014-08-11_225801

由於這個方法跟直接點選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」鍵。然後才會顯示文字訊息。

2014-08-11_230557

不過似乎第一次登入還是要輸入帳號密碼的樣子,這部分就難免了。

重設虛擬機器的root密碼 / Reset Root Password

由於使用vzctl enter [VMID]的方式可以進入任何OpenVZ虛擬機器裡面,而且是以root身份進入,因此可以用這個方式重設root的密碼。

做法概述如下:

  1. 從節點(node)的Shell進入
  2. # vzctl enter [VMID]
  3. 以root身份登入虛擬機器
  4. 變更密碼指令:
    # passwd root
    然後輸入你要變更的密碼

完成。

正式的做法則是參考OpenVZ論壇中maratrus的講解,在節點的Shell中使用vzctl中的—userpasswd,指令如下:

# vzctl set [VMID] --userpasswd root:[newpasswd] --save

兩種方法都可以喔。