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:這里的完全虛擬化和半虛擬化在后續(xù)的blog中會更新也可以查閱網上的資料。 Xen的完全虛擬化的實現是需要硬件的支持,它的實現是需要cpu是VT技術的支持,在inter公司cpu的這種技術叫做vmx,而在AMD上叫做svm,雖說Xen的完全虛擬化沒有做出什么成就但是并不影響他在半虛擬化世界的霸主地位。 kvm其實也借鑒了Xen半虛擬化中的許多成就,雖說kvm是完全虛擬化,但在關鍵的硬盤和網卡上支持半虛擬化virtio,在很大程度上提高了性能,kvm是輕量級虛擬化的代表,也需要硬件vt技術的支持,另外從操作界面上看,xen和kvm都是用virt-manager工具,差別不是很大,但不可以在同一臺機器上同時安裝且運行Xen和KVM;另外kvm在只能運行在紅帽企業(yè)版5.4 64位系統上,同時需要關閉selinux。 KVM是指基于 Linux 內核的虛擬機(Kernel-based Virtual Machine)。增加 KVM 到 Linux 內核是 Linux 發(fā)展的一個重要里程碑,這也是第一個整合到 Linux 主線內核的虛擬化技術。 KVM所使用的方法是通過簡單地加載內核模塊而將 Linux 內核轉換為一個系統管理程序。這個內核模塊導出了一個名為 /dev/kvm 的設備,它可以啟用內核的客戶模式(除了傳統的內核模式和用戶模式)。有了 /dev/kvm 設備,VM 使自己的地址空間獨立于內核或運行著的任何其他 VM 的地址空間。設備樹(/dev)中的設備對于所有用戶空間進程來說都是通用的。但是每個打開 /dev/kvm 的進程看到的是不同的映射(為了支持 VM 間的隔離)。KVM安裝 KVM 之后,您可以在用戶空間啟動客戶操作系統。每個客戶操作系統都是主機操作系統(或系統管理程序)的一個單個進程。 1、KVM 虛擬機的管理工具 準確來說,KVM 僅是 Linux 內核中的一個模塊。管理和創(chuàng)建完整的 KVM 虛擬機,需要更多的輔助工具。QEMU-KVM:在 Linux 系統中,首先我們可以用 modprobe 命令加載 KVM 模塊,如果用 RPM 安裝 KVM 軟件包,系統會在啟動時自動加載模塊。加載了模塊后,才能進一步通過其他工具創(chuàng)建虛擬機。但僅有 KVM 模塊是遠遠不夠的,因為用戶無法直接控制內核模塊去做事情,還必須有一個用戶空間的工具。關于用戶空間的工具,KVM 的開發(fā)者選擇了已經成型的開源虛擬化軟件 QEMU。QEMU 是一個強大的虛擬化軟件,它可以虛擬不同的 CPU 構架。比如說在 x86 的 CPU 上虛擬一個 Power 的 CPU,并利用它編譯出可運行在 Power 上的程序。KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制 KVM 內核模塊的用戶空間工具 QEMU-KVM。所以 Linux 發(fā)行版中分為 內核部分的 KVM 內核模塊和 QEMU-KVM 工具。這就是 KVM 和 QEMU 的關系。 Libvirt、virsh、virt-manager:盡管 QEMU-KVM 工具可以創(chuàng)建和管理 KVM 虛擬機,RedHat 為 KVM 開發(fā)了更多的輔助工具,比如 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 如圖: 如果是vSphere 的話也是在設置中找到cpu的設置去開啟虛擬化支持。 設置好之后檢查虛擬化是否成功支持: 好的成功支持。 (二)kvm軟件的安裝 #yum install kvm virt-manager libvirt #service libvirtd start #chkconfig libvirt on kvm為kvm的模塊軟件包 virt-manageer 為kvm的管理包 libvirt 為創(chuàng)建虛擬機的工具包 (三)檢查模塊的正確安裝 使用lsmod來檢查模塊安裝 #[root@wang ~]# lsmod | grep kvm #kvm 333172 0 (四)檢查KVM是否成功安裝 #virsh -c qemu:///system list 由于我這里之前創(chuàng)建了一個虛擬機所以這里就會有顯示,初次安裝橫線下面沒有屬于正常。另外如果報錯的話檢查上面的服務是否正常啟動。 3,kvm的網絡配置 一種是default,它支持主機與虛擬機的互訪,同時也支持虛擬機訪問互聯網,但不支持外界訪問虛擬機。 另外一種方式是bridge方式,可以使用虛擬機成為網絡中具有獨立IP的主機。 我這里是使用第二種網絡配置。 #[root@wang network-scripts]# vi ifcfg-br0 #DEVICE=br0 #TYPE=Bridge #BOOTRPOTO=static #IPADDR=192.168.7.2 #NETMASK=255.255.255.0 #ONBOOT=yes #[root@wang 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 的圖像化虛擬機管理軟件,請注意不同的發(fā)行版上 virt-manager 的版本可能不同,圖形界面和操作方法也可能不同。本文使用了紅帽6企業(yè)版的 virt-manager-0.8.4-8。創(chuàng)建KVM虛擬機最簡單的方法是通過virt-manager接口。從控制臺窗口啟動這個工具,從root身份輸入virt-manager命令,點擊file菜單的"新建"選項virt-manager接口界面。
4、使用virsh來管理kvm Virsh的管理比較復雜。但是另一種可選方式virt-manager的缺陷還很明顯,virt-manager需要在系統內運行,這會浪費資源并為別有目的的人提供額外的進攻點。virt-manager的另一大缺點是需要通過圖形工作站運行遠程接入的方式,才能對服務器上的虛擬機進行管理。而virsh則可以通過命令行執(zhí)行各種各樣的管理任務。要學習virsh很困難,因為有許多命令。virsh通過主命令和子命令管理每個虛擬機功能。要查看所有命令,輸入virsh help。你可能發(fā)現大量命令,不過每個命令都有幫助指南,只需要輸入virsh help。例如使用virsh help uri,就可以看到所有關于virsh uri命令的幫助。下面是virsh命令實例:
創(chuàng)建一個名稱是myWin7的windows 7虛擬機,
#[root@wang ~]# yuminstall virt-viewer #[root@wang ~]# 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 虛擬機的虛擬磁盤,磁盤可以是文件、磁盤分區(qū)或者是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) 命令執(zhí)行完之后進入kvm的管理界面就會有win7了 下來win7 的安裝系統就不多說了! 至此kvm的安裝與使用就介紹這么多,有不足的請多多指教! 本文出自 “Big and Small” 博客,請務必保留此出處http://chongge.blog.51cto.com/8894476/1631140 |
|
來自: 浸心閣 > 《web_good》