首頁 > 軟體

libvirt Java API使用教學

2020-06-16 17:10:49

虛擬化簡介

虛擬化是將計算機的各種實體資源(CPU、記憶體、儲存、網路等)進行抽象後呈現出來,即是將一台物理計算機分割成多台計算機,實現在一台計算機上執行多台虛擬機器,每台虛擬機器可執行不同的作業系統,可包含不同的虛擬硬體,並且它們在相互獨立的空間內執行而互不影響。

在虛擬化軟體層次結構中引入了虛擬化層,這個通常稱為虛擬機器監控器(Virtual Machine Manager,VMM)。虛擬機器監控器執行的環境就是物理機,也稱為宿主機。虛擬出來的平台通常稱為客戶機。

虛擬機器使用軟體的方法重新定義劃分計算機資源,有如下優勢:

  • 隔離:雖然虛擬機器可共用一台物理機,但它們之間完全隔離,它們就是完全不同的物理計算機。
  • 可靠:虛擬伺服器獨立於硬體進行工作,災難恢復更容易實現,當一台虛擬伺服器故障,可短時間內遷移恢復到另一台虛擬伺服器上。
  • 成本:當物理機資源較少時,也可通過虛擬化實現使用更多伺服器才能做的事情。
  • 便於管理:通過虛擬機器叢集管理系統,一個管理員可管理更多伺服器。

KVM/QEMU

KVM/QEMU 簡介

2008 年,KVMRedHat 收購,成為紅帽開源專案的一員。KVM 全稱 Kernel-based Virtual Machine,即基於核心的虛擬機器,是一個 x86 平台上的全虛擬化解決方案。它是 Linux 核心的一個可載入模組,包括核心虛擬化模組 kvm.ko,以及特定 CPU 的模組 kvm-inet.ko 或 kvm-amd.ko,其實現需要宿主機的 CPU 支援硬體虛擬化
KVM 可執行多個虛擬機器,無論是未經修改的 linux 映象還是 Windows 映象。每個虛擬機器都有私有的虛擬化硬體如:網絡卡、磁碟、顯示卡驅動等。
從 Linux 核心版本 2.6.20 開始,KVM 核心元件被包含在 Linux 核心中。從 QEMU 版本 1.3 開始,KVM 使用者空間元件被包含其中。
在 x86 平台下 CPU 的硬體虛擬化技術有 Intel 的 VT-X 和 AMD 的 AMD-V。
KVM 的特徵請檢視官網,傳送門

注意:BIOS 需要開啟虛擬化支援,VMware 的虛擬機器需要開啟虛擬化支援。

Linux 核心載入了 KVM 模組後,就可以使用 KVM 模組實現虛擬機器的記憶體分配、虛擬 CPU 的讀寫及管理虛擬 CPU 的執行。但是僅有 KVM 模組遠遠不夠,因為使用者無法直接控制核心模組,所以還需要一個使用者空間的工具。這個使用者空間的工具就是開源虛擬化軟體 QEMU,使用它來模擬 PC 硬體的使用者空間元件、I/O 裝置及提供存取外設的途徑。

QEMU 利用 KVM 提供的應用程式介面,通過 ioctl 系統呼叫建立和執行虛擬機器。KVM Driver 使得整個 Linux 成為一個虛擬機器監控器。並且在原有的 Linux 兩種執行模式(核心模式和使用者模式)的基礎上新增了客戶模式,客戶模式擁有自己的核心模式和使用者模式。

在虛擬機器執行下,三種模式的分工如下:

  • 客戶模式:執行非 I/O 操作。虛擬機器執行在客戶模式下。
  • 核心模式:實現到客戶模式的切換,處理因為 I/O 或者其他指令所引起的從客戶模式退出。KVM Driver 工作在核心模式下。
  • 使用者模式:代表客戶機執行 I/O 指令。QEMU 執行在使用者模式下。

QEMU 與 KVM 的區別與聯絡

上一節已經明確 KVM 僅僅是一個核心模組,它可以模擬虛擬機器的 CPU 和記憶體,但是我們還需要 I/O 裝置,這些 I/O 裝置就是通過 QEMU 這個使用者空間模擬器來模擬的。QEMU 本身是一套通用開源的機器模擬器和虛擬程式,它有兩種使用方式。

全系統模擬(單獨使用)

這種方式對宿主機硬體沒有要求,也不需要宿主機 CPU 支援虛擬化,QEMU 為虛擬機器作業系統模擬整套硬體環境,虛擬機器作業系統感覺不到自己執行在模擬的硬體環境中。這種純軟體模擬效率很低,它可模擬出各種硬體裝置。

使用者空間模擬(配合 KVM 等)

這種方式與核心模組 KVM 配合完成硬體環境的模擬。在 QEMU 1.3 之前,它有一個專門的分支版本 qemu-kvm 作為 KVM 的使用者空間程式,qemu-kvm 通過 ioctl 呼叫 /dev/kvm 這個介面與 KVM 互動,這樣 KVM 在核心空間模擬虛擬機器 CPU,qemu-kvm 負責模擬虛擬機器 I/O 裝置。在 QEMU 1.3 以後的版本中,qemu-kvm 分支程式碼已經合併到 QEMU 的 master 分支中。在編譯 QEMU 時開啟 –enable-kvm 選項,就能夠使 QEMU 支援 KVM。

libvirt

libvirt 簡介

通過 QEMU 命令來管理虛擬機器非常麻煩,RedHat 發布了一個開源專案 libvirt,它是為了更加方便的管理各種虛擬化引擎而設計的。libvirt 作為中間適配層,讓底層虛擬化引擎對上層使用者空間的管理工具做到完全透明,因為 libvirt 遮蔽了底層各種虛擬化的細節,為上層管理工具提供了一個統一的介面。

libvirt 支援多種虛擬化引擎,即支援包括 KVM、QEMU、Xen、VMware、VirtualBox 等在內的平台虛擬化方案,又支援 OpenVZ、LXC 等 Linux 容器虛擬化系統,還支援使用者態 Linxu(UML)的虛擬化。

libvirt 是目前使用最廣泛的對 KVM 虛擬機器進行管理的工具和應用程式介面,而且一些常用的虛擬機器管理工具和雲端計算框架平台(如 OpenStack、CloudStack 等)都在底層使用了 libvirt 的應用程式介面。

libvirt 通過相同的方式管理不同的虛擬化引擎,支援虛擬機器的建立、啟動、關閉、暫停、睡眠、遷移、刪除,以及對虛擬機器 CPU、記憶體、磁碟、網絡卡等多種裝置的熱新增。libvirt 還支援通過遠端連線的方式管理虛擬機器。

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2017-06/145273p2.htm


IT145.com E-mail:sddin#qq.com