KVM特點
KVM必須在具備Intel VT或AMD-V功能的x86平臺上運行。KVM包含一個為處理器提供底層虛擬化,可加載的核心模塊kvm.ko(kvm-intel.ko或kvm-AMD.ko)。使用一個經過修改的QEMU(qemu-kvm),作為虛擬機上層控制和界面。
由于KVM僅是一個簡單的虛擬化模塊,所以它的內存管理沒有自我實現,需借助于Linux內核實現內存管理。KVM能夠使用Linux所支持的任何存儲,在驅動程序的實現上,直接借助于Linux內核來驅動任何硬件。在性能上KVM繼承了Linux很好的性能和伸縮性,在虛擬化性能方面,已經達到非虛擬化原生環境95%左右的性能(官方數據)。KVM拓展性也非常好,客戶機和宿主機都可以支持非常多的CPU數量和非常大的內存,可以過載使用CPU和內存,還可借助KSM技術實現對內存的過量使用,且保證性能依舊非常不錯。
KVM架構
檢測是否支持虛擬化
[root@lab01 ~]# egrep --color "(vmx|svm)" /proc/cpuinfo #如果含有vmx或者svm字樣,則表示硬件支持虛擬化,vmx代表Intel,svm代表AMD
安裝網橋工具,創建橋接網卡
[root@lab01 ~]# yum -y install bridge-utils [root@lab01 ~]# brctl addbr br0 [root@lab01 ~]# cd /etc/sysconfig/network-scripts [root@lab01 network-scripts]# cp ifcfg-eth0 ifcfg-br0 [root@lab01 network-scripts]# vim ifcfg-br0 DEVICE=br0 TYPE=Bridge ONBOOT=yes BOOTPROTO=none IPADDR=192.168.1.11 NETMASK=255.255.255.0 DNS2=202.106.196.115 GATEWAY=192.168.1.1 DNS1=202.106.0.20 IPV6INIT=no USERCTL=no [root@lab01 network-scripts]# vim ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=none BRIDGE=br0 IPV6INIT=no USERCTL=no [root@lab01 network-scripts]# service network restart Shutting down interface eth0: device eth0 is not a slave of br0 [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: [ OK ] Bringing up interface br0: Determining if ip address 192.168.1.11 is already in use for device br0... [ OK ]
加載KVM模塊
[root@lab01 ~]# modprobe kvm [root@lab01 ~]# modprobe kvm-intel [root@lab01 ~]# lsmod | grep kvm kvm_intel 55624 0 kvm 341551 1 kvm_intel
安裝QEMU-KVM管理軟件
[root@lab01 ~]# yum -y install qemu-kvm qemu-kvm-tools [root@lab01 ~]# ln -sv /usr/libexec/qemu-kvm /usr/bin `/usr/bin/qemu-kvm' -> `/usr/libexec/qemu-kvm'
qemu-kvm標準選項
-name name:設定虛擬機名稱; -M machine:指定要模擬的主機類型,如Standard PC、ISA-only PC或Intel-Mac等 -m megs:設定虛擬機的RAM大??; -cpu model:設定CPU模型,如coreduo、qemu64等 -smp n[,cores=cores][,threads=threads][,sockets=sockets][,maxcpus=maxcpus]:設定模擬的SMP架構中CPU 的個數等、每個CPU的核心數及CPU的socket數目等;PC機上最多可以模擬255顆CPU;maxcpus用于指定熱插入的CP U個數上限; -numa opts:指定模擬多節點的numa設備; -fda file: -fdb file:使用指定文件(file)作為軟盤鏡像,file為/dev/fd0表示使用物理軟驅; -hda file -hdb file -hdc file -hdd file:使用指定file作為硬盤鏡像; -cdrom file:使用指定file作為CD-ROM鏡像,需要注意的是-cdrom和-hdc不能同時使用;將file指定為/dev/cdr om可以直接使用物理光驅; -drive option[,option[,option[,...]]]:定義一個硬盤設備;可用子選項有很多。 file=/path/to/somefile:硬件映像文件路徑; if=interface:指定硬盤設備所連接的接口類型,即控制器類型,如ide、scsi、sd、mtd、floppy、pflash 及virtio等; index=index:設定同一種控制器類型中不同設備的索引號,即標識號; media=media:定義介質類型為硬盤(disk)還是光盤(cdrom); snapshot=snapshot:指定當前硬盤設備是否支持快照功能:on或off; cache=cache:定義如何使用物理機緩存來訪問塊數據,其可用值有none、writeback、unsafe和writethrough四個; format=format:指定映像文件的格式,具體格式可參見qemu-img命令; -boot [order=drives][,once=drives][,menu=on|off]:定義啟動設備的引導次序,每種設備使用一個字符表示 ;不同的架構所支持的設備及其表示字符不盡相同,在x86 PC架構上,a、b表示軟驅、c表示第一塊硬盤,d表示 第一個光驅設備,n-p表示網絡適配器;默認為硬盤設備; -boot order=dc,once=d
qemu-kvm顯示選項
-nographic:默認情況下,qemu使用SDL來顯示VGA輸出;而此選項用于禁止圖形接口,此時,qemu類似一個簡單的 命令行程序,其仿真串口設備將被重定向到控制臺; -curses:禁止圖形接口,并使用curses/ncurses作為交互接口; -alt-grab:使用Ctrl+Alt+Shift組合鍵釋放鼠標; -ctrl-grab:使用右Ctrl鍵釋放鼠標; -sdl:啟用SDL; -spice option[,option[,...]]:啟用spice遠程桌面協議;其有許多子選項,具體請參照qemu-kvm的手冊; -vga type:指定要仿真的VGA接口類型,常見類型有: cirrus:Cirrus Logic GD5446顯示卡; std:帶有Bochs VBI擴展的標準VGA顯示卡; vmware:VMWare SVGA-II兼容的顯示適配器; qxl:QXL半虛擬化顯示卡;與VGA兼容;在Guest中安裝qxl驅動后能以很好的方式工作,在使用spice協議時推薦 使用此類型; none:禁用VGA卡; -vnc display[,option[,option[,...]]]:默認情況下,qemu使用SDL顯示VGA輸出;使用-vnc選項,可以讓qemu 監聽在VNC上,并將VGA輸出重定向至VNC會話;使用此選項時,必須使用-k選項指定鍵盤布局類型;其有許多子選 項,具體請參照qemu-kvm的手冊; display: (1)host:N 172.16.100.7:1, 監聽于172.16.100.7主的5900+N的端口上 (2) unix:/path/to/socket_file (3) none options: password: 連接時需要驗正密碼;設定密碼通過monitor接口使用change reverse: “反向”連接至某處于監聽狀態的vncview上; -monitor stdio:表示在標準輸入輸出上顯示monitor界面 -nographic Ctrl-a, c: 在console和monitor之間切換 Ctrl-a, h: 顯示幫助信息
qemu-kvm網絡屬性相關選項
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=name][,addr=addr][,vectors=v]:創建一個新的網卡 設備并連接至vlan n中;macaddr用于為其指定MAC地址,name用于指定一個在監控時顯示的網上設備名稱;emu可 以模擬多個類型的網卡設備 -net tap[,vlan=n][,name=name][,fd=h][,ifname=name][,script=file][,downscript=dfile]:通過物理機的TA P網絡接口連接至vlan n中,使用script=file指定的腳本(默認為/etc/qemu-ifup)來配置當前網絡接口,并使用d ownscript=file指定的腳本(默認為/etc/qemu-ifdown)來撤消接口配置;使用script=no和downscript=no可分別 用來禁止執行腳本; -net user[,option][,option][,...]:在用戶模式配置網絡棧,其不依賴于管理權限;有效選項有: vlan=n:連接至vlan n,默認n=0; name=name:指定接口的顯示名稱,常用于監控模式中; net=addr[/mask]:設定GuestOS可見的IP網絡,掩碼可選,默認為10.0.2.0/8; host=addr:指定GuestOS中看到的物理機的IP地址,默認為指定網絡中的第二個,即x.x.x.2; dhcpstart=addr:指定DHCP服務地址池中16個地址的起始IP,默認為第16個至第31個,即x.x.x.16-x.x.x.31; dns=addr:指定GuestOS可見的dns服務器地址;默認為GuestOS網絡中的第三個地址,即x.x.x.3; tftp=dir:激活內置的tftp服務器,并使用指定的dir作為tftp服務器的默認根目錄; bootfile=file:BOOTP文件名稱,用于實現網絡引導GuestOS;如:qemu -hda linux.img -boot n -net user tftp=/tftpserver/pub,bootfile=/pxelinux.0 tap: 二層虛擬通道 tun:三層虛擬通道
qemu-kvm的其它的用到的參數:
動態遷移時用到的選項:-incoming tcp:0:PORT 讓qemu-kvm進程運行于后臺:-daemonize 開啟USB總線:-usb GuestOS為Windows時,-usb -usbdevice tablet 用于實現鼠標定位 打開KVM的支持:qemu-kvm默認就啟用了此選項 -enable-kvm 打聲音設備:-soundhw 設定iscsi存儲設備: -iscsi [user=USERNAME][,password=PASSWORD][,initiator-name=iqn] 通過URL指定使用的iscsi設備 iscsi://<target_ip>[:port]/<target_iqn>/<lun> # qemu-kvm -iscsi initiator-name= -drive file=iscsi://tgt.magedu.com/iqn.2014-05.com.magedu.tgt1/1 指定使用的bios文件: -bios /path/to/some_bios_program 使用外部內核及ramdisk文件: -kernel -initrd -append: 向內核傳遞的參數列表
使用qemu-img管理磁盤映像
qemu-img是qemu用來實現磁盤映像管理的工具組件,其有許多子命令,分別用于實現不同的管理功能,而每一個子
命令也都有一系列不同的選項。其使用語法格式為“qemu-img subcommand [options]”,支持的子命令如下。
create:創建一個新的磁盤映像文件; check:檢查磁盤映像文件中的錯誤; convert:轉換磁盤映像的格式; info:顯示指定磁盤映像的信息; snapshot:管理磁盤映像的快照; commit:提交磁盤映像的所有改變; rbase:基于某磁盤映像創建新的映像文件; resize:增大或縮減磁盤映像文件的大小; 使用create子命令創建磁盤映像的命令格式為“create [-f fmt] [-o options] filename [size]”,例如下面 的命令創建了一個格式為qcow2的50G的磁盤映像文件。 [root@lab01 ~]# qemu-img create -f qcow2 /kvm/images/centos/hzvpn.img -o size=50G,preallocation="me tadata" Formatting '/kvm/images/centos/hzvpn.img', fmt=qcow2 size=53687091200 encryption=off cluster_size=6 5536 preallocation='metadata' [root@lab01 ~]# ll -h /kvm/images/centos/hzvpn.img -rw-r--r--. 1 root root 51G Dec 19 16:33 /kvm/images/centos/hzvpn.img #-f:指定虛擬磁盤文件格式 -o:指定選項
如果我們加入網卡設備,則需要使用系統啟動后自動橋接網絡到br0上,可以通過腳本實現和停止系統時橋接網絡和刪除橋接的自動執行操作
[root@lab01 ~]# mkdir /kvm/script [root@lab01 ~]# vim /kvm/script/qemu-ifup #!/bin/bash switch=br0 if [ -n "$1" ]; then ip link set $1 up sleep 1 brctl addif $switch $1 exit 0 else echo "Error: No Interface." exit 1 fi [root@lab01 ~]# vim /kvm/script/qemu-ifdown #!/bin/bash switch=br0 if [ -n "$1" ];then brctl delif $switch $1 ip link set $1 down exit 0 else echo "Error: No Interface." exit 1 fi [root@lab01 ~]# chmod -R +x /kvm/script/
安裝虛擬機
[root@lab01 ~]# yum -y install tigervnc tigervnc-server [root@lab01 ~]# qemu-kvm -name "hzvpn" -m 1024 -smp 2 -drive file=/kvm/images/centos/hzvpn.img,medi a=disk,format=qcow2,if=virtio,index=0 -net nic,model=virtio -net tap,ifname=vnet0,script=/kvm/scrip t/qemu-ifup -usb -usbdevice tablet -drive file=/kvm/CentOS-6.7-x86_64-bin-DVD1.iso,media=cdrom -boo t order=dc,once=d -vnc :1 sleep: missing operand Try `sleep --help' for more information. ####其中 -usb -usbdevice tablet:用于鼠標定位,-vnc :1表示監控0.0.0.0:5901端口上
現在可以安裝系統了,看看腳本有沒有生效
[root@lab01 kvm]# ifconfig vnet0 vnet0 Link encap:Ethernet HWaddr 2A:7A:60:E7:54:C1 inet6 addr: fe80::287a:60ff:fee7:54c1/64 Scope:Link 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:500 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
腳本已經生效,剩下安裝過程,可以自己測試。
安裝完畢效果
基于Libvirt實現虛擬機管理
因為對進程管理非常麻煩,Redhat發布了一個開源項目libvirt,libvirt有API,也有一套命令行工具,可以完成對虛擬機的管理,大多數的管理平臺都是通過libvirt來完成對KVM虛擬機管理的,下面我們來介紹一下基于libvirt實現虛擬機的管理
安裝所需組件
[root@lab01 ~]# yum -y install libvirt virt-manager virt-viewer python-virtinst ##如果不確定有哪些包需要使用,可以直接安裝包組,先找出來 [root@lab01 ~]# yum grouplist | grep Virtualization Virtualization Virtualization Client Virtualization Platform Virtualization Tools [root@lab01 ~]# yum -y groupinstall "Virtualization,Virtualization Client,Virtualization Platform,V irtualization Tools"
啟動服務
[root@lab01 ~]# service libvirtd start Starting libvirtd daemon: [ OK ] #使用libvirt創建網橋無需再手動修改配置文件,一條命令即可解決 # virsh iface-bridge eth0 br0
使用virt-install創建虛擬機并安裝GuestOS
virt-install是一個命令行工具,它能夠為KVM,Xen或其它支持Libvirt API的hypervisor創建虛擬機并完成GuestOS安裝,此外,它能夠基于串行控制臺、VNC或SDL支持文本或圖形安裝界面。安裝過程可以使用本地的安裝介質如CDROM,也可以通過網絡方式如NFS.HTTP或FTP服務實現,對于通過網絡安裝的方式,virt-install可以自動加載必要的文件以啟動安裝過程而無需額外提供引導工具。當然,virt-install也支持PXE方式的安裝過程,也能夠直接使用現有的磁盤映像直接啟動安裝過程。
virt-install命令有很多選項,這些選項大體可以分為下面幾大類,同時對每類中的常用選項也做出簡單說明。
#一般選項:指定虛擬機的名稱、內存大小、VCPU個數及特性等 -n NAME, --name=NAME:虛擬機名稱,需全局惟一; -r MEMORY, --ram=MEMORY:虛擬機內在大小,單位為MB; --vcpus=VCPUS[,maxvcpus=MAX][,sockets=#][,cores=#][,threads=#]:VCPU個數及相關配置; --cpu=CPU:CPU模式及特性,如coreduo等;可以使用qemu-kvm -cpu ?來獲取支持的CPU模式; 安裝方法:指定安裝方法、GuestOS類型等; -c CDROM, --cdrom=CDROM:光盤安裝介質; -l LOCATION, --location=LOCATION:安裝源URL,支持FTP、HTTP及NFS等,如ftp://172.16.0.1/pub; --pxe:基于PXE完成安裝; --livecd: 把光盤當作LiveCD; --os-type=DISTRO_TYPE:操作系統類型,如linux、unix或windows等; --os-variant=DISTRO_VARIANT:某類型操作系統的變體,如rhel5、fedora8等; -x EXTRA, --extra-args=EXTRA:根據--location指定的方式安裝GuestOS時,用于傳遞給內核的額外 選項,例如指定kickstart文件的位置,--extra-args "ks=http://172.16.0.1/class.cfg" --boot=BOOTOPTS:指定安裝過程完成后的配置選項,如指定引導設備次序、使用指定的而非安裝的ke rnel/initrd來引導系統啟動等 ;例如: --boot cdrom,hd,network:指定引導次序; --boot kernel=KERNEL,initrd=INITRD,kernel_args=”console=/dev/ttyS0”:指定啟動系統的內核及initrd文件; #存儲配置:指定存儲類型、位置及屬性等; --disk=DISKOPTS:指定存儲設備及其屬性;格式為--disk /some/storage/path,opt1=val1,opt2=val2等; 常用的選項有: device:設備類型,如cdrom、disk或floppy等,默認為disk; bus:磁盤總結類型,其值可以為ide、scsi、usb、virtio或xen; perms:訪問權限,如rw、ro或sh(共享的可讀寫),默認為rw; size:新建磁盤映像的大小,單位為GB; cache:緩存模型,其值有none、writethrouth(緩存讀)及writeback(緩存讀寫); format:磁盤映像格式,如raw、qcow2、vmdk等; sparse:磁盤映像使用稀疏格式,即不立即分配指定大小的空間; --nodisks:不使用本地磁盤,在LiveCD模式中常用; #網絡配置:指定網絡接口的網絡類型及接口屬性如MAC地址、驅動模式等; -w NETWORK, --network=NETWORK,opt1=val1,opt2=val2:將虛擬機連入宿主機的網絡中,其中NETWORK可以為: bridge=BRIDGE:連接至名為“BRIDEG”的橋設備; network=NAME:連接至名為“NAME”的網絡; 其它常用的選項還有: model:GuestOS中看到的網絡設備型號,如e1000、rtl8139或virtio等; mac:固定的MAC地址;省略此選項時將使用隨機地址 --nonetworks:虛擬機不使用網絡功能; #圖形配置:定義虛擬機顯示功能相關的配置,如VNC相關配置; --graphics TYPE,opt1=val1,opt2=val2;指定圖形顯示相關的配置,此選項不會配置任何顯示硬件(如顯卡), 而是僅指定虛擬機啟動后對其進行訪問的接口; TYPE:指定顯示類型,可以為vnc、sd1、spice或none等,默認為vnc; port:TYPE為vnc或spice時其監聽的端口; listen:TYPE為vnc或spice時所監聽的IP地址,默認為127.0.0.1,可以通過修改/etc/libvirt/qemu.conf定義新的默認值; password:TYPE為vnc或spice時,為遠程訪問監聽的服務進指定認證密碼; --noautoconsole:禁止自動連接至虛擬機的控制臺; 設備選項:指定文本控制臺、聲音設備、串行接口、并行接口、顯示接口等; --serial=CHAROPTS:附加一個串行設備至當前虛擬機,根據設備類型的不同,可以使用不同的選項, 格式為“--serial type,opt1=val1,opt2=val2,...” --serial pty:創建偽終端; --serial dev,path=HOSTPATH:附加主機設備至此虛擬機; --video=VIDEO:指定顯卡設備模型,可用取值為cirrus、vga、qxl或vmvga; #虛擬化平臺:虛擬化模型(hvm或paravirt)、模擬的CPU平臺類型、模擬的主機類型、hypervisor類型(如kvm 、xen或qemu等)以及當前虛擬機的UUID等; -v, --hvm:當物理機同時支持完全虛擬化和半虛擬化時,指定使用完全虛擬化; -p, --paravirt:指定使用半虛擬化; --virt-type:使用的hypervisor,如kvm、qemu、xen等;所有可用值可以使用’virsh capabilities’命令獲取; #其它: --autostart:指定虛擬機是否在物理啟動后自動啟動; --print-xml:如果虛擬機不需要安裝過程(--import、--boot),則顯示生成的XML而不是創建此虛擬 機;默認情況下,此選項仍會創建磁盤映像; --force:禁止命令進入交互式模式,如果有需要回答yes或no選項,則自動回答為yes; --dry-run:執行創建虛擬機的整個過程,但不真正創建虛擬機、改變主機上的設備配置信息及將其創 建的需求通知給libvirt; -d, --debug:顯示debug信息;
盡管virt-install命令有著類似上述的眾多選項,但實際使用中,其必須提供的選項僅包括–name、–ram、–disk(也可是–nodisks)及安裝過程相關的選項。此外,有時還需要使用括–connect=CONNCT選項來指定連接至一個非默認的hypervisor。
下面這個示例創建一個名為rhel5的虛擬機,其hypervisor為KVM,內存大小為512MB,磁盤為8G的映像文件/var/lib/libvirt/images/rhel5.8.img,通過boot.iso光盤鏡像來引導啟動安裝過程。
# virt-install \ --connect qemu:///system \ --virt-type kvm \ --name rhel5 \ --ram 512 \ --disk path=/var/lib/libvirt/images/rhel5.img,size=8 \ --graphics vnc \ --cdrom /tmp/boot.iso \ --os-variant rhel5
下面的示例將創建一個名為rhel6的虛擬機,其有兩個虛擬CPU,安裝方法為FTP,并指定了ks文件的位置,磁盤映像
文件為稀疏格式,連接至物理主機上的名為brnet0的橋接網絡:
# virt-install \ --connect qemu:///system \ --virt-type kvm \ --name rhel6 \ --ram 1024 \ --vcpus 2 \ --network bridge=brnet0 \ --disk path=/VMs/images/rhel6.img,size=120,sparse \ --location ftp://172.16.0.1/rhel6/dvd \ --extra_args “ks=http://172.16.0.1/rhel6.cfg” \ --os-variant rhel6 \ --force
下面的示例將創建一個名為rhel5.8的虛擬機,磁盤映像文件為稀疏模式的格式為qcow2且總線類型為virtio,安裝
過程不啟動圖形界面(–nographics),但會啟動一個串行終端將安裝過程以字符形式顯示在當前文本模式下,虛擬機顯卡類型為cirrus:
# virt-install \ --connect qemu:///system \ --virt-type kvm \ --name rhel5.8 \ --vcpus 2,maxvcpus=4 \ --ram 512 \ --disk path=/VMs/images/rhel5.8.img,size=120,format=qcow2,bus=virtio,sparse \ --network bridge=brnet0,model=virtio --nographics \ --location ftp://172.16.0.1/pub \ --extra-args "ks=http://172.16.0.1/class.cfg console=ttyS0 serial" \ --os-variant rhel5 \ --force \ --video=cirrus
下面的示例則利用已經存在的磁盤映像文件(已經有安裝好的系統)創建一個名為rhel5.8的虛擬機:
# virt-install \ --name rhel5.8 --ram 512 --disk /VMs/rhel5.8.img --import
每個虛擬機創建后,其配置信息保存在/etc/libvirt/qemu目錄中,文件名與虛擬機相同,格式為XML。
下面我在創建一個自定義的:
[root@lab01 ~]# virt-install --cpu=host -n hzcfvpn --vcpus=2 -r 1024 \ -c /kvm/CentOS-6.7-x86_64-bin-DVD1.iso \ --disk path=/kvm/images/centos/hzvpn.qcow2,bus=virtio,size=50,format=qcow2,sparse \ --network bridge=br0,model=virtio --force --graphics vnc,listen=0.0.0.0,port=5902
下面總結一下virsh的幾個常用命令:
virt-install:創建虛擬機,并安裝OS;也可創建虛擬機并導入Image文件: 根據xml文件創建: create:創建并啟動 define:創建但不啟動 關閉domain: destroy shutdown reboot 刪除domain: undefine 連接至console: console 列出: list 附加或拆除disk: attach-disk detach-disk 保存狀態至磁盤文件或從磁盤文件恢復: save restore 暫停于內存或繼續運行: suspend resume
具體用法示例:
#開關機 virsh start centos6.7 #開機 virsh create /etc/libvirt/qemu/centos6.7.xml #直接通過主機配置文檔啟動主機 virsh shutdown centos6.7 #關機 virsh destroy centos6.7 #強制關閉電源 virsh list --all #查看虛擬機狀態 #添加刪除虛擬機 virsh define /etc/libvirt/qemu/centos6.7.xml #根據主機配置文檔添加虛擬機 virsh undefine centos6.7 #移除虛擬機centos6.7 virsh list --all #查看添加的虛擬機 #使用已存在的虛擬機配置文檔安裝新的虛擬機 qemu-img create -f qcow2 -o size=50G /kvm/images/lab01.img #為新建虛擬機生產磁盤鏡像文件 virsh list --all virsh dumpxml hzvpn.xml >/etc/libvirt/qemu/centos6.7.xml#導出虛擬機centos6.7的硬件配置信息為/etc/libvirt/qemu/centos6.7.xml [root@lab01 ~]# vim /etc/libvirt/qemu/centos6.7.xml id='20'> #修改node6的id號 centos6.7 #虛擬機centos6.7的name 4b7e91eb-6521-c2c6-cc64-c1ba72707fc7 #uuid必須修改,否則會和hzvpn的沖突 #指定新虛擬機的硬盤文件 virsh define /etc/libvirt/qemu/centos6.7.xml #使用虛擬描述文檔建立虛擬機, #可用virsh edit centos6.7修改centos6.7的配置文件 virsh start centos6.7#啟動虛擬機 #為虛擬機開啟vnc virsh edit hzvpn #編輯hzvpn的配置文件;不建議直接通過vim hzvpn.xml修改。 #port='-1' :port自動分配,監聽回環網絡(virt-manager管理需要listen='127.0.0.1'),無密碼 改為 #固定vnc管理端口5904,不自動分配,vnc密碼redhat,監聽所有網絡
存儲池和存儲卷的管理
1.創建 KVM主機存儲池 1).創建基于文件夾(目錄)的存儲池 virsh pool-define-as vmware_pool --type dir --target /virhost/vmware#定義存儲池vmware_pool或 virsh pool-create-as --name vmware_pool --type dir --target /virhost/vmware #創建存儲池vmware_pool,類型為文件目錄,/virhost/vmware,與pool-define-as結果一樣 2).創建基于文件系統的存儲池 virsh pool-define-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware 或 virsh pool-create-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware 3).查看存儲池信息 virsh pool-info vmware_pool #查看存儲域(池) 4).啟動存儲池 virsh pool-start vmware_pool #啟動存儲池 virsh pool-list 5)銷毀存儲域,取消存儲池 virsh pool-destroy vmware_pool #銷毀存儲池 virsh pool-list --all virsh pool-undefine vmware_pool #取消存儲池的定義 virsh pool-list --all 2.創建了存儲池后,就可以創建一個卷,這個卷是用來做虛擬機的硬盤 virsh vol-create-as --pool vmware_pool --name node6.img --capacity 10G --allocation 1G --format qcow2 #創建卷 node6.img,所在存儲池為vmware_pool,容量10G,初始分配1G,文件格式類型qcow2 virsh vol-info /virhost/vmware/node6.img #查看卷信息名稱: node6.img類型: 文件容量: 10.00 GB分配: 136.00 KB 3.在存儲卷上安裝虛擬主機 #virt-install --connect qemu:///system \ -n node7 \ -r 512 \ -f /virhost/vmware/node7.img \ --vnc \ --os-type=linux \ --os-variant=rhel6 \ --vcpus=1 \ --network bridge=br0 \ -c /mnt/rhel-server-6.0-x86_64-dvd.iso
復制虛擬機,不用修改其中配置文件,也不用創建磁盤文件
#virt-clone -o vm001 -n vm002 -f /var/lib/libvirt/vm002.img #說明:以vm001做為源,克隆vm001虛擬機,并創建名稱為vm002虛擬機,使用磁盤文件/var/lib/libvirt/vm002.img
直接根據磁盤文件創建一個新的虛擬機
virt-install -n "nginx01" --vcpus=4 -r 8096 --boot hd --disk path=/kvm/images/nginx01.img,bus=virti o,size=200,format=qcow2,sparse --network bridge=br0,model=virtio --force --graphics vnc,listen=0.0. 0.0,port=5901
原創文章,作者:oranix,如若轉載,請注明出處:http://www.www58058.com/10215
已置頂