透過 QEMU 的 IP-KVM

透過 QEMU 的 IP-KVM

在沒有 KVM 的伺服器上解決作業系統啟動問題並不是一件容易的事。 我們透過恢復映像和虛擬機器為自己建立 KVM-over-IP。

如果作業系統出現問題 在遠端伺服器上,管理員下載恢復映像並執行必要的工作。 當已知故障原因且恢復映像和伺服器上安裝的作業系統來自同一系列時,此方法非常有效。 如果尚不清楚失敗的原因,則需要監視載入作業系統的進度。

遠端KVM

您可以使用內建工具(例如 IPMI 或 Intel® vPro™)或透過稱為 IP-KVM 的外部裝置存取伺服器控制台。 在某些情況下,所列出的所有技術都不可用。 然而,這還沒結束。 如果伺服器可以遠端重新啟動到基於Linux作業系統的復原映像,那麼KVM-over-IP就可以快速組織起來。

復原映像是位於 RAM 中的成熟作業系統。 因此,我們可以運行任何軟體,包括虛擬機器(VM)。 也就是說,您可以啟動將在其中運行伺服器作業系統的虛擬機器。 例如,可以透過 VNC 來組織對 VM 控制台的存取。

若要在虛擬機器內執行伺服器作業系統,必須將伺服器磁碟指定為虛擬機器磁碟。 在 Linux 系列作業系統中,實體磁碟由以下形式的區塊裝置表示 的/ dev / sdX的,可以像常規文件一樣使用。

某些虛擬機器管理程式(例如 QEMU 和 VirtualBox)可讓您以「原始」形式儲存 VM 數據,即僅儲存沒有虛擬機器管理程式元資料的資料。 因此,可以使用伺服器的實體磁碟啟動VM。

此方法需要資源來啟動復原映像及其內部的虛擬機器。 但是,如果您有 XNUMX GB 或更多 RAM,這將不是問題。

準備環境

您可以使用輕量且簡單的程式作為虛擬機 QEMU,它通常不是恢復映像的一部分,因此必須單獨安裝。 我們為客戶提供的恢復映像是基於 Arch Linux,它使用套件管理器 吃豆子.

您需要做的第一件事是確保恢復映像使用最新的軟體。 您可以使用以下命令檢查和更新所有作業系統元件:

pacman -Suy

更新後,需要安裝QEMU。 透過 pacman 的安裝指令如下所示:

pacman -S qemu

讓我們檢查 qemu 是否安裝正確:

root@sel-rescue ~ # qemu-system-x86_64 --version
QEMU emulator version 4.0.0
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

如果一切正常,則恢復映像已準備就緒。

啟動虛擬機

首先,您需要決定分配給虛擬機器的資源量並找出實體磁碟的路徑。 在我們的例子中,我們將為虛擬機器分配兩個核心和 XNUMX GB 的 RAM,並且磁碟沿途放置 / dev / sda上 и 的/ dev / sdb的。 讓我們啟動虛擬機器:

qemu-system-x86_64
-m 2048M
-net nic -net user
-enable-kvm
-cpu host,nx
-M pc
-smp 2
-vga std
-drive file=/dev/sda,format=raw,index=0,media=disk
-drive file=/dev/sdb,format=raw,index=1,media=disk
-vnc :0,password
-monitor stdio

更詳細地了解每個參數的含義:

  • -m 2048M — 為虛擬機器分配 2 GB RAM;
  • -net 網路卡 -net 用戶 — 使用 NAT(網路位址轉換)透過虛擬機器管理程式新增至網路的簡單連線;
  • -啟用-kvm — 啟用完整的 KVM(核心虛擬機)虛擬化;
  • -CPU主機 — 我們告訴虛擬處理器取得伺服器處理器的所有功能;
  • -M PC ——PC設備類型;
  • -smp 2 — 虛擬處理器必須是雙核心的;
  • -vga標準 — 選擇不支援大螢幕解析度的標準顯示卡;
  • -磁碟機檔案=/dev/sda,格式=原始,索引=0,媒體=磁碟
    • 文件=/dev/sdX — 代表伺服器磁碟的區塊設備的路徑;
    • 格式=原始 — 我們注意到,在指定檔案中,所有資料都是「原始」形式,即與磁碟上一樣;
    • 索引=0 — 磁碟編號,每個後續磁碟必須加一;
    • 媒體=磁碟 — 虛擬機器必須將此儲存識別為磁碟;
  • -vnc:0,密碼 — 預設在0.0.0.0:5900啟動VNC伺服器,使用密碼作為授權;
  • - 監控stdio — 管理者和 qemu 之間的通訊將透過標準輸入/輸出流進行。

如果一切正常,QEMU 監視器將啟動:

QEMU 4.0.0 monitor - type 'help' for more information
(qemu)

我們指出授權是使用密碼進行的,但沒有指出密碼本身。 這可以透過將更改 vnc 密碼命令傳送到 QEMU 監視器來完成。 重要提示:密碼不能超過八個字元。

(qemu) change vnc password
Password: ******

之後,我們可以使用我們伺服器的 IP 位址和我們指定的密碼連接任何 VNC 用戶端,例如 Remmina。

透過 QEMU 的 IP-KVM

透過 QEMU 的 IP-KVM

現在我們不僅可以在載入階段看到可能的錯誤,而且還可以處理它們。

完成後,您必須關閉虛擬機器。 這可以在作業系統內部透過發送關閉訊號或發出命令來完成 系統斷電 在 QEMU 監視器中。 這相當於按一次關機按鈕:虛擬機器內的作業系統將順利關閉。

作業系統安裝

虛擬機器具有對伺服器磁碟的完全存取權限,因此可用於手動安裝作業系統。 唯一的限制是 RAM 的大小:ISO 映像不能總是放置在 RAM 中。 讓我們分配 XNUMX GB 的 RAM 來儲存映像 / mnt:

mount -t tmpfs -o size=4G tmpfs /mnt

我們也將下載 FreeBSD 12.0 作業系統的安裝映像:

wget -P /mnt ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-bootonly.iso

現在您可以啟動虛擬機器:

qemu-system-x86_64
-m 2048M
-net nic -net user
-enable-kvm
-cpu host,nx
-M pc
-smp 2
-vga std
-drive file=/dev/sda,format=raw,index=0,media=disk
-drive file=/dev/sdb,format=raw,index=1,media=disk
-vnc :0,password
-monitor stdio
-cdrom /mnt/FreeBSD-12.0-RELEASE-amd64-bootonly.iso
-boot d

-啟動d 安裝從 CD 光碟機啟動。 我們連接 VNC 用戶端並查看 FreeBSD 引導程式。

透過 QEMU 的 IP-KVM

由於透過 DHCP 取得位址用於存取 Internet,因此設定後可能需要啟動至新安裝的系統並修正網路設定。 在某些情況下,可能需要安裝網路適配器驅動程序,因為伺服器中安裝的網路卡與虛擬機器中模擬的網路卡不同。

結論

這種組織遠端存取伺服器控制台的方法會消耗一些伺服器資源,但它對伺服器硬體沒有任何特殊要求,因此幾乎可以在任何條件下實現。 使用此解決方案可以更輕鬆地診斷軟體故障並恢復遠端伺服器的功能。

來源: www.habr.com

添加評論