Centos6.7_KVM安裝配置使用

當前的虛擬化產品有 vmware vsphere ,Hyper-v,xen,kvm。vmware的虛擬化所佔的市場有目共睹,Hyper-V是windows平臺下的虛擬化,而Xen就屬於一個半虛擬化產品。kvm就是咱們今天所介紹的對象。css

(kvm是kernel virtual module的簡寫)kvm是紅帽公司5.4版本後所推出的最新虛擬化技術產品。它和vpc,virtual  box都屬於徹底虛擬化產品,而Xen是屬於半虛擬化產品。python

雖然說kvm是徹底虛擬化,但在關鍵的硬盤和網卡上支持半虛擬化virtio,在很大程度上提升了性能,kvm是輕量級虛擬化的表明,也須要硬件vt技術的支持,另外從操做界面上看,xenkvm都是用virt-manager工具,差異不是很大,但不能夠在同一臺機器上同時安裝且運行XenKVM;另外kvm在只能運行在紅帽企業版64位系統上,同時須要關閉selinuxlinux

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

KVM所使用的方法是經過簡單地加載內核模塊而將 Linux 內核轉換爲一個系統管理程序。這個內核模塊導出了一個名爲 /dev/kvm 的設備,它能夠啓用內核的客戶模式(除了傳統的內核模式和用戶模式)。有了 /dev/kvm 設備,VM 使本身的地址空間獨立於內核或運行着的任何其餘 VM 的地址空間。設備樹(/dev)中的設備對於全部用戶空間進程來講都是通用的。可是每一個打開 /dev/kvm 的進程看到的是不一樣的映射(爲了支持 VM 間的隔離)。KVM安裝 KVM 以後,您能夠在用戶空間啓動客戶操做系統。每一個客戶操做系統都是主機操做系統(或系統管理程序)的一個單個進程。windows

1KVM 虛擬機的管理工具api

準確來講,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 如圖:app

wKiom1dK-OLRcM-tAADVziIdPjI064.jpg-wh_50

若是是vSphere 的話也是在設置中找到cpu的設置去開啓虛擬化支持。

 設置好以後檢查虛擬化是否成功支持:

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

flags          : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov patpse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc uparch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperfunfair_spinlock pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnttsc_deadline_timer xsave avx hypervisor lahf_lm arat epb pln pts dts tpr_shadowvnmi ept vpid

(二)kvm軟件的安裝

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

 # service libvirtd start

 # service libvirtd status

 libvirtd (pid  1818) ...

 # chkconfig libvirtd on

說明:

kvm爲linux內核的一個模塊,模塊不須要安裝,只須要加載

virt-manageer 爲kvm的管理包

libvirt 爲建立虛擬機的工具包

qemu:虛擬化軟件,能夠虛擬不一樣的CPU,支持異構(x86的架構能夠虛擬化出不是x86架構的)
       qemu-kvm:用戶態管理kvm,網卡,聲卡,PCI設備等都是qemu來管理的

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

       使用lsmod來檢查模塊安裝

# lsmod | grep kvm

kvm_intel             55656  0

kvm                  345460  1 kvm_intel

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

#virsh -c qemu:///system list

備註:初次安裝橫線下面沒有屬於正常。另外若是報錯的話檢查上面的服務是否正常啓動。

3、kvm的網絡配置

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

默認的網絡鏈接是virbr0,它的配置文件在

#cat /var/lib/libvirt/network/default.xml

<!--

OVERWRITTEN AND LOST. Changes to thisxml configuration

should be made using:

 virsh net-edit default

or other application using thelibvirt API.

-->

<network>

 <name>default</name>

 <uuid>36ec31bf-a7fa-4b61-90a8-2b46aed90518</uuid>

 <forward mode='nat'/>

 <bridge name='virbr0' stp='on' delay='0' />

 <mac address='52:54:00:B7:F4:66'/>

 <ip address='192.168.122.1' netmask='255.255.255.0'>

   <dhcp>

     <range start='192.168.122.2' end='192.168.122.254' />

   </dhcp>

 </ip>

</network>

另一種方式是bridge方式,可使用虛擬機成爲網絡中具備獨立IP的主機。

我這裏是使用第二種網絡配置:

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

#BROADCAST=10.0.0.255

HWADDR=00:0C:29:92:B5:37

#IPADDR=10.0.0.61

#NETMASK=255.255.255.0

#GATEWAY=10.0.0.254

ONBOOT=yes

BRIDGE="br0"

#vi /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0

TYPE=Bridge

BOOTRPOTO=static

IPADDR=10.0.0.85

NETMASK=255.255.255.0

GATEWAY=10.0.0.254

ONBOOT=yes

#service network restart

說明:

如今使用10.0.0.85鏈接宿主機

#ifconfig

br0       Link encap:Ethernet  HWaddr 00:0C:29:92:B5:37 

          inet addr:10.0.0.85  Bcast:10.0.0.255  Mask:255.255.255.0

          inet6 addr:fe80::20c:29ff:fe92:b537/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1

          RX packets:420 errors:0 dropped:0overruns:0 frame:0

          TX packets:235 errors:0 dropped:0overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:33439 (32.6 KiB)  TX bytes:29623 (28.9 KiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:92:B5:37 

          inet6 addr:fe80::20c:29ff:fe92:b537/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1

          RX packets:4299 errors:0 dropped:0overruns:0 frame:0

          TX packets:2822 errors:0 dropped:0overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:384854 (375.8 KiB)  TX bytes:300481 (293.4 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:92:B5:41 

          inet addr:192.168.3.150  Bcast:192.168.3.255  Mask:255.255.255.0

          inet6 addr:fe80::20c:29ff:fe92:b541/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1

          RX packets:1175 errors:0 dropped:0overruns:0 frame:0

          TX packets:304 errors:0 dropped:0overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:76602 (74.8 KiB)  TX bytes:22635 (22.1 KiB)

          Interrupt:16 Base address:0x2000

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:618 errors:0 dropped:0overruns:0 frame:0

          TX packets:618 errors:0 dropped:0overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:73375 (71.6 KiB)  TX bytes:73375 (71.6 KiB)

virbr0    Link encap:Ethernet  HWaddr 92:66:C3:69:F0:D9 

          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0

          inet6 addr:fe80::9066:c3ff:fe69:f0d9/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1

          RX packets:0 errors:0 dropped:0overruns:0 frame:0

          TX packets:81 errors:0 dropped:0overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:0 (0.0 b)  TX bytes:12603 (12.3 KiB) 

     注:網橋模式須要在真機eth0配置文件中添加 BRIDGE="br0",不然真機與虛擬機沒法互通.

     配置完畢後eth0口則不會顯示地址信息,新配置的br0口會代替eth0口成爲真機網口,裝好的虛擬機eth0口將於真機br0口互通.

 

4、建立虛擬機

(一)使用virt-manager創建一個KVM虛擬機

virt-manager是基於libvirt的圖像化虛擬機管理軟件,請注意不一樣的發行版上 virt-manager的版本可能不一樣,圖形界面和操做方法也可能不一樣。本文使用了紅帽6企業版的virt-manager-0.9.0-31。建立KVM虛擬機最簡單的方法是經過virt-manager接口。從控制檯窗口啓動這個工具,從root身份輸入virt-manager命令,點擊file菜單的"新建"選項virt-manager接口界面

#virt-manager  //圖形化界面安裝虛擬機

(二)使用virt-install命令建立虛擬機 

//本文重點介紹virt-install命令建立虛擬機

#yum groupinstall "Virtualization tools" -y  //安裝脫機虛擬機鏡像管理工具

#virt-install --help

Usage: virt-install --name NAME --ramRAM STORAGE INSTALL [options]

Options:

 --version             showprogram's version number and exit

 -h, --help            show thishelp message and exit

 --connect=URI         Connect tohypervisor with libvirt URI

 通用選項:

   -n NAME, --name=NAME

                                    客戶端事件名稱

   -r MEMORY, --ram=MEMORY

                                    以 MB 爲單位爲客戶端事件分配的內存

   --vcpus=VCPUS       配置來賓帳戶的虛擬 CPU(vcpu) 數量,如:

                        --vcpus 5

                        --vcpus 5, maxcpus=10

                        --vcpussocket=2,cores=4,threads=2

   --cpuset=CPUSET     Set which physical CPUs domain can use.

   --cpu=CPU              CPU型號及功能,如:--cpu coreduo,+x2apic

   --description=DESCRIPTION

                                   在生成的 XML 中保存的可讀 VM 描述。

   --security=SECURITY

                                   設定域安全驅動器配置。

   --numatune=NUMATUNE

                                   爲域進程調整 NUMA 策略。

 安裝方法選項:

   -c CDROM, --cdrom=CDROM

                                  光驅安裝介質

   -l LOCATION, --location=LOCATION

                             安裝源(例如:nfs:host:/path、http://host/path                        ://host/path)

   --pxe                 使用 PXE 協議從網絡引導

   --import            在磁盤映像中構建客體

   --init=INIT         爲容器虛擬機啓動二進制的路基該您。例

                        如:

                        --init /path/to/app(包含應用程序)

                        --init /sbin/init(用於全部 OS 容器)

   --livecd         將光驅介質視爲 Live CD

   -x EXTRA, --extra-args=EXTRA

                        附加到使用 --location 引導的內核的參數

   --initrd-inject=INITRD_INJECTIONS

                        使用 --location 爲 initrd 的 root

                        添加給定文件

   --os-type=DISTRO_TYPE

                        要安裝的操做系統類型,例如:'linux'、'u

                        nix'、'windows'

   --os-variant=DISTRO_VARIANT

                        The OS variant beinginstalled guests, e.g. 'fedora6',

                        'rhel5', 'solaris10', 'win2k'

   --boot=BOOTOPTS     自選配置後安裝引導順序、菜單、永久

                        kernel 引導,等等。

 存儲配置:

   --disk=DISKOPTS     Specifystorage with various options. Ex.

                        --diskpath=/my/existing/disk

                        --disk path=/my/new/disk,size=5(in gigabytes)

                        --diskvol=poolname:volname,device=cdrom,bus=scsi,...

   --nodisks           不要爲該客戶端設置任何磁盤。

   --filesystem=FILESYSTEMS

                            將主機目錄傳遞給虛擬機。例如:

                        --filesystem/my/source/dir,/dir/in/guest

                        --filesystemtemplate_name,/,type=template

 聯網配置:

   -w NETWORK, --network=NETWORK

                        Configure a guestnetwork interface. Ex:

                        --network bridge=mybr0

                        --networknetwork=my_libvirt_virtual_net

                        --networknetwork=mynet,model=virtio,mac=00:11...

   --nonetworks        不要爲該客體建立網絡接口。

 圖形配置:

   --graphics=GRAPHICS

                        配置虛擬機顯示設置。例如:

                        --graphics vnc

                        --graphicsspice,port=5901,tlsport=5902

                        --graphics none

                        --graphicsvnc,password=foobar,port=5910,keymap=ja

   --noautoconsole     不要自動嘗試鏈接到客戶端控制檯

 設備選項:

   --serial=SERIALS           配置虛擬機串口設備

   --parallel=PARALLELS

                                         配置虛擬機並口設備

   --channel=CHANNELS  配置虛擬機溝通頻道

   --console=CONSOLES  配置虛擬機與主機之間的文本控制檯鏈接

   --host-device=HOSTDEVS

                        Configure physical hostdevices attached to the guest

   --soundhw=SOUNDHW   Configureguest sound device emulation

   --watchdog=WATCHDOG

                                   配置虛擬機 watchdog 設備

   --video=VIDEO       配置虛擬機視頻硬件。

   --smartcard=SMARTCARD

                        配置虛擬機智能卡設備。例如:

                        --smartcardmode=passthrough

   --redirdev=REDIRDEV

                        Configure a guestredirection device. Ex:

                        --redirdevusb,type=tcp,server=192.168.1.1:4000

   --panic=PANIC       Configure a guest panic device. Ex:

                        --panic default

 虛擬化平臺選項:

   -v, --hvm            客戶端應該是一個全虛擬客戶端

   -p, --paravirt      這個客戶端一個是一個半虛擬客戶端

   --container         This guestshould be a container guest

   --virt-type=HV_TYPE

                              要使用的管理程序名稱(kvm、qemu、xen等等)

   --arch=ARCH     模擬的 CPU 構架

   --machine=MACHINE   The machinetype to emulate

   --noapic            爲全虛擬客戶端禁用 APIC(在 os-type/os-

                        variant db 中覆蓋數值)

   --noacpi            爲全虛擬客戶端禁用 ACPI(在 os-type/os-

                             variant db 中覆蓋數值)

   -u UUID, --uuid=UUID

                            客戶端 UUID。

 其它選項:

   --autostart         引導主機時自動啓動域。

   --print-xml         輸出所生成域的

                        XML,而不是定義虛擬機。

   --print-step=XMLSTEP

                        輸出具體安裝步驟(1,2,3,all)的

                        XML

   --noreboot          完成安裝後不要引導虛擬機。

   --wait=WAIT       要等待的時間(以分鐘爲單位)

   --dry-run             完成安裝步驟,但不要建立設備或者定義

                        虛擬機。

   --force             對任意應用程序提示強制回答‘yes’,終止左右其它提示

   -q, --quiet       禁止無錯誤輸出

   --prompt         要求用戶爲模糊狀況或者須要的選項輸入。

   -d, --debug     輸入故障排除信息

# virt-install --connectqemu:///system --name kvm4 --ram 500 --disk path=/dev/sdb5 --network bridge=br0--arch x86_64 --graphics sdl --location=/tmp/CentOS-7-x86_64-Minimal-1511.iso

開始安裝......

搜索文件.treeinfo......                        |2.2 kB     00:00 ...

搜索文件vmlinuz......                          | 9.8 MB     00:00 ...

搜索文件initrd.img......                      |  73 MB     00:00 ...

ERROR    No DISPLAY environment variable set.  //出錯,解決方法以下:

# export DISPLAY=guilinuxbox:0.0

# virt-install --connect qemu:///system --name kvm4 --ram 500 --diskpath=/dev/sdb5 --network bridge=br0 --arch x86_64 --graphics sdl--location=/tmp/CentOS-7-x86_64-Minimal-1511.iso

 

開始安裝......

搜索文件.treeinfo......                        |2.2 kB     00:00 ...

搜索文件vmlinuz......                          | 9.8 MB     00:00 ...

搜索文件initrd.img......                      |  73 MB     00:00 ...

ERROR    unsupported configuration: sdl notsupported by '/usr/libexec/qemu-kvm' 

Domain installation does not appearto have been successful.

If it was, you can restart yourdomain by running:

 virsh --connect qemu:///system start kvm1

otherwise, please restart yourinstallation.  //出錯,提示qemu-kvm沒有sdl接口,所以咱們換成vnc來鏈接虛擬機界面。解決方法以下:

# yum-y install virt-viewer

# virt-install --name CentOS-7_x86_64 --virt-type kvm --ram 1024 --disk path=/dev/sdb5 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --location=/tmp/CentOS-7-x86_64-Minimal-1511.iso --force

開始安裝......

搜索文件.treeinfo......                        |2.2 kB     00:00 ...

搜索文件vmlinuz......                          |9.8 MB     00:04 ...

搜索文件 initrd.img......                       |  73 MB    00:15 ...

建立域......                                     |    0 B    00:19    

'virt-viewer --help'

域安裝仍在進行。您能夠從新鏈接

到控制檯以便完成安裝進程。

# virsh list --all  

 Id                               

----------------------------------------------------

 8     CentOS-7_x86_64                running

# netstat -tunlp|grep kvm

tcp        0     0 127.0.0.1:5900             0.0.0.0:*                  LISTEN      5149/qemu-kvm

    虛擬機基本操做學習:

生成kvm虛擬機:virt-install
查看在運行的虛擬機:virsh list
查看全部虛擬機:virsh list –all
查看kvm虛擬機配置文件:virsh dumpxml name
啓動kvm虛擬機:virsh start name
正常關機:virsh shutdown name
非正常關機(至關於物理機直接拔掉電源):virsh destroy name
刪除:virsh undefine name(完全刪除,找不回來了,若是想找回來,須要備份/etc/libvirt/qemu的xml文件)
根據配置文件定義虛擬機:virsh define file-name.xml
掛起,終止:virsh suspend name
恢復掛起狀態:virsh resumed name

編輯kvm的xml文件,更改虛擬機CPU配置

#virsh edit CentOS-7_x86_64

<vcpu placement='static'>1</vcpu>  //當前爲1,自動擴容,最大爲4

相關文章
相關標籤/搜索