1. 程式人生 > >KVM虛擬化技術之使用Qemu-kvm建立和管理虛擬機器

KVM虛擬化技術之使用Qemu-kvm建立和管理虛擬機器

一 .KVM 簡介

KVM (名稱來自英語: Kernel-basedVirtual Machine 的縮寫,即基於核心的虛擬機器) , 是一種用於Linux核心中的虛擬化基礎設施,可以將Linux核心轉化為一個hypervisor。KVM在2007年2月被匯入Linux 2.6.20核心中,以可載入核心模組的方式被移植到FreeBSD及illumos上。

KVM在具備Intel VT或AMD-V功能的x86平臺上執行。它也被移植到S/390,PowerPC與IA-64平臺上。在Linux核心3.9版中,加入ARM架構的支援。

關於KVM:

1).KVM是開源軟體,全稱是kernel-based virtual machine(基於核心的虛擬機器)。
2).是x86架構且硬體支援虛擬化技術(如 intel VTAMD-V)的Linux全虛擬化解決方案。
3).它包含一個為處理器提供底層虛擬化 可載入的核心模組kvm.kokvm-intel.kokvm-AMD.ko)。
4).KVM還需要一個經過修改的QEMU軟體(qemu-kvm),作為虛擬機器上層控制和介面。
5).KVM能在不改變linuxwindows映象的情況下同時執行多個虛擬機器,(它的意思是多個虛擬機器使用同一映象)併為每一個虛擬機器配置個性化硬體環境(網絡卡、磁碟、圖形介面卡……)。
6).在主流的Linux
核心,如2.6.20以上的核心均已包含了KVM核心。

――――摘自 WIKI 百科

KVM  與  vbox 的區別

vbox  是由  qemu  改寫而成,包含大量 qemu  程式碼。

1).可以使用於"不支援"虛擬化技術的cpu。
2).值得說的一點:vbox 在圖形方面比較好,能進行2D 3D加速;但cpu控制不理想(估計是因為圖形支援的緣故);操作上有獨立的圖形介面,易於上手。

kvm  是 linux 核心包含的東西,使用 qemu 作為上層管理(命令列)。 

 

1).要求cpu 必須支援虛擬化。
2).效能:作為伺服器很好,可是圖形能力十分的差。即使放電影,影象也是像刷油漆一樣,一層一層的。
3).cpu使用率控制很好。
4).控制上比較簡潔,功能比較豐富:比如使用“無敵功能”所有更改指向記憶體,你的映象永遠保持乾淨。“母映象”功能讓你擁有n個獨立快照點。還有很多引數。另外,kvm作為核心級的虛擬機器,剛開始發展關注的公司比較多――但是還沒有達到商業應用的水平。

總體而言: 在支援虛擬化的情況下, vbox  和  kvm  的效能差不多,主要是面向物件不同: kvm 適用於伺服器, vbox 適用於桌面應用。

qemu  全稱 Quick Emulator 。 是獨立虛擬軟體,能獨立執行虛擬機器(根本不需要 kvm )。 kqemu 是該軟體的加速軟體。 kvm 並不需要 qemu 進行虛擬處理,只是需要它的上層管理介面進行虛擬機器控制。虛擬機器依舊是由 kvm 驅動。所以,大家不要把概念弄錯了,盲目的安裝 qemu 和kqemu 。 qemu 使用模擬器

KVM 記憶體管理

KVM 繼承了 Linux 系統管理記憶體的諸多特性,比如,分配給虛擬使用的記憶體可以被交換至交換空間、能夠使用大記憶體頁以實現更好的效能,以及對 NUMA 的支援能夠讓虛擬機器高效訪問更大的記憶體空間等。

KVM 基於 Intel 的 EPT ( ExtendedPage Table )或 AMD 的 RVI ( Rapid Virtualization Indexing )技術可以支援更新的記憶體虛擬功能,這可以降低 CPU 的佔用率,並提供較好的吞吐量。  

此外, KVM 還藉助於 KSM ( Kernel Same-pageMerging )這個核心特性實現了記憶體頁面共享 。 KSM 通過掃描每個虛擬機器的記憶體查詢各虛擬機器間相同的記憶體頁,並將這些記憶體頁合併為一個被各相關虛擬機器共享的單獨頁面。在某虛擬機器試圖修改此頁面中的資料時, KSM 會重新為其提供一個新的頁面副本。實踐中,運行於同一臺物理主機上的具有相同 GuestOS 的虛擬機器之間出現相同記憶體頁面的概率是很的,比如共享庫、核心或其它記憶體物件等都有可能表現為相同的記憶體頁,因此, KSM 技術可以降低記憶體佔用進而提高整體效能。

相關連線:

KVM 的官方地址: http://www.linux-kvm.org/page/Main_Page

KVM 的 Howto 文件: http://www.linux-kvm.org/page/HOWTO

Kqemu 原始碼地址: http://sourceforge.net/projects/kqemu/

Qemu 下載地址: http://wiki.qemu.org/Main_Page

二 .KVM 虛擬化平臺構建

1. 安裝準備

檢視你的硬體是否支援虛擬化。命令:

#egrep '(vmx|svm)' /proc/cpuinfo

注意:

1 ) . 要有  vmx  或  svm  的標識才行。總的說來, AMD 在虛擬化方面作得更好一些。

2 ) . 我用的是虛擬機器,我使用了 VBOX ,發現其不支援硬體虛擬化,啟動虛擬機器後執行檢視命令無法發現上述的選項;所以我就換成了 VMware Workstation 10 ,並在虛擬機器的設定中打開了 CPU 設定中的虛擬化引擎,選擇了 Intel VT-x/EPT 或 AMD-V/RVI(V) 這個選項;具體設定如下圖:

2. 安裝 KVM

由於 Linux 核心已經將 KVM 收錄了,在安裝系統時已經加入了 KVM ,我們只需要在命令列模式下啟用 KVM 即可:

啟用 KVM 模組

#modprobe kvm

功能區分 intel/amd 的啟用:

#modprobe kvm-intel
# lsmod |grep kvm
kvm_intel              55496  0
kvm                   337772  1 kvm_intel

3.KVM 虛擬機器建立和管理所依賴的元件介紹

KVM 虛擬機器的建立依賴 qemu-kvm :

雖然 kvm 的技術已經相當成熟而且可以對很多東西進行隔離,但是在某些方面還是無法虛擬出真實的機器。比如對網絡卡的虛擬,那這個時候就需要另外的技術來做補充,而 qemu-kvm 則是這樣一種技術。它補充了 kvm 技術的不足,而且在效能上對 kvm 進行了優化。

我們還可以使用 virt-manager , virt-viewer 來管理虛擬機器;

我們在建立和管理 KVM 虛擬機器時還需要 libvirt 這個重要的元件:

它是一系列提供出來的庫函式,用以其他技術呼叫,來管理機器上的虛擬機器。包括各種虛擬機器技術, kvm 、 xen 與 lxc 等,都可以呼叫 libvirt 提供的 api 對虛擬機器進行管理。有這麼多的虛擬機器技術,它為何能提供這麼多的管理功能那。是因為它的設計理念,它是面向驅動的架構設計。對任何一種虛擬機器技術都開發設計相對於該技術的驅動。這樣不同虛擬機器技術就可以使用不同驅動,而且相互直接不會影響,方便擴充套件。而且 libvirt 提供了多種語言的程式設計介面,可以直接通過程式設計,呼叫 libvirt 提供的對外介面實現對虛擬機器的操作。如今流行的雲端計算中的 IaaS 是與該庫聯絡相當密切的。通過下圖可以看出它的架構設計思想。

從該圖可以看出,在 libvirtapi 之上會有很多個 driver ,對於每一種虛擬機器技術都會有一種 driver ,用來充當該虛擬機器技術與 libvirt 之間的包裝介面。如此設計就可以避免 libvirt 需要設計各種針對不同虛擬機器技術的介面,它主要關注底層的實現,提供對外介面呼叫,而不同的虛擬機器技術通過呼叫 libvirt 提供的介面來完成自己所需要的功能。

4. 安裝 KVM 所需元件

yum 源提供了,直接安裝:

#yum install -y qemu-kvm libvirt virt-manager

安裝完成後啟動 libvirtd 服務:

#service libvirtd start

會自動啟動一個橋裝置,這相當於 VMware Workstation 中的 host-only 僅主機的網路裝置;

# ifconfig
eth0     Link encap:Ethernet  HWaddr00:0C:29:3E:63:26 
	inet addr:172.16.31.7 Bcast:172.16.255.255 Mask:255.255.0.0
	inet6 addr: fe80::20c:29ff:fe3e:6326/64 Scope:Link
	UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1
	 RX packets:25460 errors:0 dropped:0overruns:0 frame:0
	TX packets:9728 errors:0 dropped:0 overruns:0 carrier:0
	collisions:0 txqueuelen:1000
	RX bytes:35156437 (33.5 MiB)  TXbytes:800196 (781.4 KiB)
lo       Link encap:Local Loopback 
	inet addr:127.0.0.1 Mask:255.0.0.0
	inet6 addr: ::1/128 Scope:Host
	UP LOOPBACK RUNNING MTU:65536  Metric:1
	RX packets:12 errors:0 dropped:0 overruns:0 frame:0
	TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
	collisions:0 txqueuelen:0
	RX bytes:1024 (1024.0 b)  TXbytes:1024 (1024.0 b)
virbr0   Link encap:Ethernet  HWaddr52:54:00:30:54:41 
	inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
	UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1
	RX packets:0 errors:0 dropped:0 overruns:0 frame:0
	TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
	collisions:0 txqueuelen:0
	RX bytes:0 (0.0 b)  TX bytes:0(0.0 b)

使用網橋管理命令檢視:

# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400305441       yes             virbr0-nic

像 VMware Workstation 中我們需要建立物理橋接裝置,可以使用 virsh 建立橋裝置關聯網絡卡到橋接裝置上:

需要將 NetworkManager 服務關閉,開機啟動也關閉:

# chkconfig NetworkManager off
# service NetworkManager stop

然後在建立橋接裝置及關聯網絡卡到橋接裝置上:

# virsh iface-bridge eth0 br0

檢視橋接裝置及其他網路裝置執行情況:

# ifconfig
br0      Link encap:Ethernet  HWaddr00:0C:29:3E:63:26 
	inet addr:172.16.31.7  Bcast:172.16.255.255  Mask:255.255.0.0
	inet6 addr: fe80::20c:29ff:fe3e:6326/64 Scope:Link
	UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1
	RX packets:76 errors:0 dropped:0 overruns:0 frame:0
	TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
	collisions:0 txqueuelen:0
	RX bytes:9781 (9.5 KiB)  TXbytes:8957 (8.7 KiB)
eth0     Link encap:Ethernet  HWaddr00:0C:29:3E:63:26 
	inet6 addr: fe80::20c:29ff:fe3e:6326/64 Scope:Link
	UP BROADCAST RUNNINGMULTICAST  MTU:1500  Metric:1
	RX packets:176 errors:0 dropped:0 overruns:0 frame:0
	TX packets:97 errors:0 dropped:0 overruns:0 carrier:0
	collisions:0 txqueuelen:1000
	RX bytes:26793 (26.1 KiB)  TXbytes:11385 (11.1 KiB)
lo       Link encap:Local Loopback 
	inet addr:127.0.0.1 Mask:255.0.0.0
	inet6 addr: ::1/128 Scope:Host
	UP LOOPBACK RUNNING MTU:65536  Metric:1
	RX packets:4 errors:0 dropped:0 overruns:0 frame:0
	TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
	collisions:0 txqueuelen:0
	RX bytes:344 (344.0 b)  TXbytes:344 (344.0 b)
virbr0   Link encap:Ethernet  HWaddr52:54:00:30:54:41 
	inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
	UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1
	RX packets:0 errors:0 dropped:0 overruns:0 frame:0
	TX packets:0 errors:0 dropped:0 
            
           

相關推薦

KVM虛擬化技術使用Qemu-kvm建立管理虛擬機器

一 .KVM 簡介 KVM (名稱來自英語: Kernel-basedVirtual Machine 的縮寫,即基於核心的虛擬機器) , 是一種用於Linux核心中的虛擬化基礎設施,可以將Linux核心轉化為一個hyper

KVM虛擬化:使用qemu-kvm創建管理虛擬

KVM qemu-kvm qemu-ing 命令選項 brctl CentOS 6加載了KVM模塊後,我們是無法進行虛擬機的管理的,如果需要管理KVM虛擬機,還需要管理工具才可以。先看一下KVM的管理工具棧。yum grouplist |grep -i "virtualizati

KVM虛擬化技術的-熱新增硬碟儲存池

一、熱新增硬碟 方法一: [[email protected] ~]# virsh list #列出虛擬機器 Id Name State --------------------

KVM虛擬化技術的-Qemu

QEMU 支援兩種操作模式:User mode模擬模式,亦即是使用者模式(ioctl 呼叫 /dev/kvm,)和System mode模擬模式,亦即是系統模式(qemu-kvm)。 https://www.qemu.org/ ivshmem-client

VirtualBox命令列VBoxManage建立管理虛擬機器教程

VBoxManage is the command-line interface to VirtualBox. 前言 本文要操作的虛擬機器資訊如下: 名稱: UbuntuRDHome 映象名稱: ubuntu-16.04.3-se

虛擬化技術kvm虛擬機器建立工具qemu-kvm

  在前邊的部落格中我們介紹瞭如何建立kvm虛擬機器,以及一些常用的工具的介紹和使用,今天我們來了解下kvm原始工具qemu-kvm;為什麼說qemu-kvm是一個原始的工具呢,如果你用kvm虛擬機器,心細的你一定會發現我們不管用什麼工具建立kvm虛擬機器,在宿主機上表現的都是一個以/usr/libexec/

虛擬化技術kvm磁碟管理工具qemu-img

  在前邊的部落格中,我們大致瞭解了virsh這個工具對kvm虛擬機器的一些操作,回顧請參考https://www.cnblogs.com/qiuhom-1874/tag/virsh/;今天我們來了解下kvm的磁碟管理工具qemu-img常用命令的用法;   1、qemu-img的幫助資訊 [root@no

linux運維、架構路-KVM虛擬化技術

sna 運維 3.1 png 配置 tools 關閉 wall ati 一、雲計算概述 雲計算:是一種資源使用和交付模式 虛擬化:一種具體的技術,用來將物理機虛擬成為多個相互獨立的虛擬機。雲計算不等於虛擬化,雲計算是使用了虛擬化的技術做支撐 二、KV

虛擬化技術KVM

iss iptable roo num bytes ebo uuid screen ext 一、kvm環境準備 kvm介紹: KVM是Kernel Virtual Machine的簡寫,目前Red Hat只支持在64位的RHEL5.4及以上的系統運行KVM,同時硬

虛擬化技術基於硬件虛擬化技術KVM

雲計算 虛擬化 KVM 前言上一篇說到了虛擬化的原理,有一個是基於CPU硬件的虛擬化。原理是廠商更改指令集模式的特權級別,使得VMM(虛擬機監控器)直接運行在硬件上面。關於CPU指令特權級別可以參考https://blog.csdn.net/autumn20080101/article/detai

KVM虛擬化技術的-NUMA技術應用

  NUMA技術是解決多CPU共同工作的技術方案,多CPU共同工作主要有3中架構:SMP:Symmetric Multi-Processor),非統一儲存訪問結構(NUMA:Non-Uniform Memory Access),以及海量並行處理結構(MPP:Ma

虛擬化技術kvm基礎

  一、KVM簡介   KVM的全稱是kernel base virtual machine(基於核心的虛擬機器)是一個開源的系統虛擬化模組,自Linux 2.6.20之後整合在Linux的各個主要發行版本中。它使用Linux自身的排程器進行管理,所以相對於Xen,其核心原始碼很少。KVM已成為學術界的主流V

虛擬化技術kvm管理工具virsh常用基礎命令(一)

  在上一篇部落格中,我們瞭解了KVM基礎架構和部署以及圖形管理工具virt-manager安裝虛擬機器的過程,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/13499801.html;今天我們來聊一下kvm的命令列工具virsh;virsh工具功能非常豐富,它可以全生

虛擬化技術kvm WEB管理工具kimchi

  在前面的部落格中,我們介紹了kvm的各種工具,有基於圖形管理的virt-manager、有基於命令列管理的virt-install 、qemu-kvm、virsh等等;今天我們來介紹一款基於web介面的管理工具kimchi;kimchi是一款基於HTML5的kvm管理工具,它被設計成儘可能容易使用kvm並

KVM虛擬化技術

kvm虛擬化 KVM虛擬化虛擬化介紹: VMware,Hyper-v, XenSer, XenClient,

linux-KVM虛擬化技術

linux運維 計算機網絡 達內 紅帽 linux系統操作 kvm虛擬化 虛擬化概述Virtualization 資源管理– x個物理資源 --> y個邏輯資源– 實現程度:完全、部分、硬件輔助(CPU)手動新建一臺虛擬機: 虛擬機名字:exam

KVM虛擬化技術與DNS

rsynckvm命令1、查看虛擬機列表[root@room8pc16 review]# virsh list --all2、打開控制臺[root@room8pc16 review]# virt-manager 3、連接虛擬機[root@room8pc16 review]# virt-viewer rh7-no

KVM虛擬化技術(二)

LinuxKVMvirt-instaKVM虛擬化技術(二)===============================================================================概述:============================================

KVM虛擬化技術實戰與原理解析

1、軟體虛擬化和硬體虛擬化:實現虛擬化的重要一步在於:虛擬化層必須能夠截獲計算元件對物理資源的直接訪問,並將其重定向到虛擬資源池中。硬體虛擬化,就是物理平臺本身提供了對特殊指令的截獲和重定向的硬體支援 2、準虛擬化與全虛擬化:改動客戶作業系統,使他以為自己執行在虛擬環境下,能夠與虛擬機器監控

強哥技術kvm虛擬機器熱遷移

熱遷移描述: 相比KVM虛擬機器冷遷移中需要拷貝虛擬機器虛擬磁碟檔案,kvm虛擬機器熱遷移無需拷貝虛擬磁碟檔案,但是需要遷移到的宿主機之間需要有相同的目錄結構虛擬機器磁碟檔案,也就是共享儲存,本文這部分內容通過nfs來實現,當然也可以採用Glusterfs叢集檔案系統來實現. 熱遷移流程: 在kvm