Linux下kvm虛擬化技術的安裝與使用

來源:互聯網
上載者:User

標籤:linux   kvm   虛擬化   

Linux下kvm虛擬化技術的安裝與使用

 雲時代的到來,虛擬化的廣泛應用。讓我們重新的科技進行了定義。而當下知名的虛擬化產品有 vmware vsphere ,Hyper-v,xen,kvm。vmware的虛擬化所佔的市場有目共睹,Hyper-V是windows平台下的虛擬化,而Xen就屬於一個半虛擬化產品。kvm就是我們今天所介紹的對象。

  kvm是kernel virtual module的簡寫)kvm是紅帽公司5.4版本後所推出的最新虛擬化技術產品。它和vpc,virtual  box都屬於完全虛擬化產品,而Xen是屬於半虛擬化產品。ps:這裡的完全虛擬化和半虛擬化在後續的blog中會更新也可以查閱網上的資料。

  Xen的完全虛擬化的實現是需要硬體的支援,它的實現是需要cpu是VT技術的支援,在inter公司cpu的這種技術叫做vmx,而在AMD上叫做svm,雖說Xen的完全虛擬化沒有做出什麼成就但是並不影響他在半虛擬化世界的霸主地位。

  kvm其實也借鑒了Xen半虛擬化中的許多成就,雖說kvm是完全虛擬化,但在關鍵的硬碟和網卡上支援半虛擬化virtio,在很大程度上提高了效能,kvm是輕量級虛擬化的代表,也需要硬體vt技術的支援,另外從操作介面上看,xen和kvm都是用virt-manager工具,差別不是很大,但不可以在同一台機器上同時安裝且運行Xen和KVM;另外kvm在只能運行在紅帽企業版5.4 64位系統上,同時需要關閉selinux。

        KVM是指基於 Linux 核心的虛擬機器(Kernel-based Virtual Machine)。增加 KVM 到 Linux 核心是 Linux 發展的一個重要裡程碑,這也是第一個整合到 Linux 主線核心的虛擬化技術。

        KVM所使用的方法是通過簡單地載入核心模組而將 Linux 核心轉換為一個系統管理程式。這個核心模組匯出了一個名為 /dev/kvm 的裝置,它可以啟用核心的客戶模式(除了傳統的核心模式和使用者模式)。有了 /dev/kvm 裝置,VM 使自己的地址空間獨立於核心或運行著的任何其他 VM 的地址空間。裝置樹(/dev)中的裝置對於所有使用者空間進程來說都是通用的。但是每個開啟 /dev/kvm 的進程看到的是不同的映射(為了支援 VM 間的隔離)。KVM安裝 KVM 之後,您可以在使用者空間啟動客戶作業系統。每個客戶作業系統都是主機作業系統(或系統管理程式)的一個單個進程。

   1、KVM 虛擬機器的管理工具

 準確來說,KVM 僅是 Linux 核心中的一個模組。管理和建立完整的 KVM 虛擬機器,需要更多的協助工具輔助。QEMU-KVM:在 Linux 系統中,首先我們可以用 modprobe 命令載入 KVM 模組,如果用 RPM 安裝 KVM 軟體包,系統會在啟動時自動載入模組。載入了模組後,才能進一步通過其他工具建立虛擬機器。但僅有 KVM 模組是遠遠不夠的,因為使用者無法直接控制核心模組去做事情,還必須有一個使用者空間的工具。關於使用者空間的工具,KVM 的開發人員選擇了已經成型的開源虛擬化軟體 QEMU。QEMU 是一個強大的虛擬化軟體,它可以虛擬不同的 CPU 構架。比如說在 x86 的 CPU 上虛擬一個 Power 的 CPU,並利用它編譯出可運行在 Power 上的程式。KVM 使用了 QEMU 的基於 x86 的部分,並稍加改造,形成可控制 KVM 核心模組的使用者空間工具 QEMU-KVM。所以 Linux 發行版中分為 核心部分的 KVM 核心模組和 QEMU-KVM 工具。這就是 KVM 和 QEMU 的關係。 Libvirt、virsh、virt-manager:儘管 QEMU-KVM 工具可以建立和管理 KVM 虛擬機器,RedHat 為 KVM 開發了更多的協助工具輔助,比如 libvirt、libguestfs 等。原因是 QEMU 工具效率不高,不便於使用。Libvirt 是一套提供了多種語言介面的 API,為各種虛擬化工具提供一套方便、可靠的編程介面,不僅支援 KVM,而且支援 Xen 等其他虛擬機器。使用 libvirt,你只需要通過 libvirt 提供的函數串連到 KVM 或 Xen 宿主機,便可以用同樣的命令控制不同的虛擬機器了。Libvirt 不僅提供了 API,還內建一套基於文本的管理虛擬機器的命令 virsh,你可以通過使用 virsh 命令來使用 libvirt 的全部功能。但終端使用者更渴望的是圖形化使用者介面,這就是 virt-manager。他是一套用 python 編寫的虛擬機器管理圖形介面,使用者可以通過它直觀地操作不同的虛擬機器。Virt-manager 就是利用 libvirt 的 API 實現的。

2、kvm虛擬機器的安裝。

   (一)安裝之前先要開啟cpu的虛擬化功能,如果是物理機直接進入BIOS中就該虛擬化選項開啟,如果是

   vmware worksation

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/FC/wKiom1Uof6LiaQdfAAGLJwhqsLI269.jpg" title="虛擬化檢查.jpg" alt="wKiom1Uof6LiaQdfAAGLJwhqsLI269.jpg" />

如果是vSphere 的話也是在設定中找到cpu的設定去開啟虛擬化支援。

  設定好之後檢查虛擬化是否成功支援:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/FC/wKiom1UogJbDJGTdAAQeMzerK-4798.jpg" title="檢查是否支援虛擬化.jpg" alt="wKiom1UogJbDJGTdAAQeMzerK-4798.jpg" />

好的成功支援。

  (二)kvm軟體的安裝

#yum install kvm virt-manager libvirt#service libvirtd start#chkconfig libvirt on

    kvm為kvm的模組軟體包

    virt-manageer 為kvm的管理組件

    libvirt 為建立虛擬機器的工具包

 (三)檢查模組的正確安裝

    使用lsmod來檢查模組安裝

#[[email protected] ~]# lsmod | grep kvm#kvm                 333172 0

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5D/F7/wKioL1UogxOQURoxAAAaVLgfPFE529.jpg" title="檢查kvm模組是否安裝.jpg" alt="wKioL1UogxOQURoxAAAaVLgfPFE529.jpg" />

   (四)檢查KVM是否成功安裝

#virsh -c qemu:///system list

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5D/FC/wKiom1UognLwhoyqAAA9H-JNLFs241.jpg" title="檢查kvm是否成功安裝.jpg" alt="wKiom1UognLwhoyqAAA9H-JNLFs241.jpg" />

由於我這裡之前建立了一個虛擬機器所以這裡就會有顯示,初次安裝橫線下面沒有屬於正常。另外如果報錯的話檢查上面的服務是否正常啟動。

   3,kvm的網路設定

 一種是default,它支援主機與虛擬機器的互訪,同時也支援虛擬機器訪問互連網,但不支援外界訪問虛擬機器。

另外一種方式是bridge方式,可以使用虛擬機器成為網路中具有獨立IP的主機。

我這裡是使用第二種網路設定。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/FC/wKiom1Uog2qih620AARPv4JmCxo938.jpg" title="網卡配置.jpg" alt="wKiom1Uog2qih620AARPv4JmCxo938.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5D/FC/wKiom1Uog4jjdarrAADGUex0WV4272.jpg" title="網卡檔案查看.jpg" alt="wKiom1Uog4jjdarrAADGUex0WV4272.jpg" />

#[[email protected] network-scripts]# vi ifcfg-br0#DEVICE=br0#TYPE=Bridge#BOOTRPOTO=static#IPADDR=192.168.7.2#NETMASK=255.255.255.0#ONBOOT=yes         #[[email protected] network-scripts]# vi ifcfg-eth0#DEVICE=eth0#HWADDR=C0:3F:D5:3A:FD:C4#TYPE=Ethernet#UUID=ea494507-eb1f-45a7-9582-64671dc60298#ONBOOT=yes#NM_CONTROLLED=yes#BOOTPROTO=none#IPADDR=192.168.7.2#PREFIX=16#BRIDGE=br0

以上為kvm的配置下來開始虛擬機器的安裝。

   virt-manager 是基於 libvirt 的映像化虛擬機器管理軟體,請注意不同的發行版上 virt-manager 的版本可能不同,圖形介面和操作方法也可能不同。本文使用了紅帽6企業版的 virt-manager-0.8.4-8。建立KVM虛擬機器最簡單的方法是通過virt-manager介面。從控制台視窗啟動這個工具,從root身份輸入virt-manager命令,點擊file菜單的"建立"選項virt-manager介面介面。

 

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5D/F7/wKioL1Uohb-wbX8vAAHJHxfTL1g760.jpg" title="1.png" alt="wKioL1Uohb-wbX8vAAHJHxfTL1g760.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5D/FC/wKiom1UohHPRTtz8AAHq2QE5LAU644.jpg" title="2.png" alt="wKiom1UohHPRTtz8AAHq2QE5LAU644.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/F7/wKioL1Uohb-gFmcEAAFrrY0QuWo485.jpg" title="3.png" alt="wKioL1Uohb-gFmcEAAFrrY0QuWo485.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/FC/wKiom1UohHOg6S9DAAG7KNQnjIA130.jpg" title="4.png" alt="wKiom1UohHOg6S9DAAG7KNQnjIA130.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5D/F8/wKioL1UohcDy4JLZAAHWZ73R_Ms215.jpg" title="5.png" alt="wKioL1UohcDy4JLZAAHWZ73R_Ms215.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5D/FC/wKiom1UohHTQrCQGAAGD8gEj4kw171.jpg" title="6.png" alt="wKiom1UohHTQrCQGAAGD8gEj4kw171.jpg" />


下來就是系統的安裝就不多做介紹!

 4、使用virsh來管理kvm

Virsh的管理比較複雜。但是另一種可選方式virt-manager的缺陷還很明顯,virt-manager需要在系統內運行,這會浪費資源並為別有目的的人提供額外的進攻點。virt-manager的另一大缺點是需要通過圖形工作站運行遠程接入的方式,才能對伺服器上的虛擬機器進行管理。而virsh則可以通過命令列執行各種各樣的管理工作。要學習virsh很困難,因為有許多命令。virsh通過主命令和子命令管理每個虛擬機器功能。要查看所有命令,輸入virsh help。你可能發現大量命令,不過每個命令都有協助指南,只需要輸入virsh help。例如使用virsh help uri,就可以看到所有關於virsh uri命令的協助。下面是virsh命令執行個體:

 

建立一個名稱是myWin7的windows 7虛擬機器,

 

#[[email protected] ~]# yuminstall virt-viewer#[[email protected] ~]# virt-install --name mywin7--ram 1024  --file=/var/lib/libvirt/images/mywin7.img --file-size=15  --vnc--cdrom=/iso/win7_32.iso --network network:br0

常用參數介紹:

-n NAME,   --name=NAME            指定機器名字

-r MEMORY, --ram=MEMORY           指定記憶體大小

--vcpus=VCPUS                     指定虛擬機器的 CPU 數量

 -f DISKFILE, --file=DISKFILE             虛擬機器的虛擬磁碟,磁碟可以是檔案、磁碟分割或者是lvm。此選項用來指定虛擬磁碟的路徑

-s DISKSIZE, --file-size=DISKSIZE         指定虛擬磁碟的大小,單位是 G;如果—file 指定的檔案路徑不存在,並且—nonsparse 選項沒有指定,對這個檔案不會預先分配儲存空間。

-w NETWORK, --network=NETWORK     NETWORK 有三種選擇,bridge:BRIDGE,network:NAME 和 user

-c CDROM, --cdrom=CDROM           指定用於全虛擬化Guest 的虛擬 CD,可以是一個 ISO 鏡像檔案,也可以是一個 CDROM 裝置,也可以是一個通過 URL 可以訪問和擷取到的 boot.iso 鏡像。如果將其忽略,那麼在—location 選項中必須指定 kernel 和 initrd的位置,也可以使用—pxe 參數通過網路進行安裝。

--pxe     使用 PXE boot 協議來載入初始化的ramdisk 和 kernel,以便於啟動 Guset 段的安裝進進程。如果沒有指定—pxe,那麼就必須指定—cdrom 和--location 其中一個。

-l LOCATION, --location=LOCATION   指定 kernel 和 initrd 的安裝源,這對於半虛擬化是必須的。對於全虛擬化,要麼使用--location 要麼使用--cdrom 來指定 ISO 或 CDROM 鏡像。

其必須符合下面的四種格式:

DIRECTORY

nfs:host:/path

http://host/path

ftp://host/path

-xEXTRA, --extra-args=EXTRA      用來給載入的 kernel 和 initrd 提供額外的核心命令列參數。

(跟詳細的參數及使用方法詳見 manvirt-install)

命令執行完之後進入kvm的管理介面就會有win7了

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/FC/wKiom1UohfeRbr14AAQuf5wf_eQ477.jpg" title="7.png" alt="wKiom1UohfeRbr14AAQuf5wf_eQ477.jpg" />

 下來win7 的安裝系統就不多說了!

至此kvm的安裝與使用就介紹這麼多,有不足的請多多指教!

本文出自 “Big and Small” 部落格,請務必保留此出處http://chongge.blog.51cto.com/8894476/1631140

Linux下kvm虛擬化技術的安裝與使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.