歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> centos6.7環境之kvm虛擬化quem工具配置及使用詳解

centos6.7環境之kvm虛擬化quem工具配置及使用詳解

日期:2017/3/1 11:50:36   编辑:關於Linux

環境准備

需要勾選CPU的虛擬化支持,支持cpu虛擬化的CPU列表:

\

intel支持虛擬化技術CPU列表:

Intel 6 Cores / 12 Threads CPU Number:


Code Name:Nehalem-EX
Xeon E6540
Xeon E7530
Xeon E7540
Xeon L7545

Code Name:Gulftown
Core i7-970
Core i7-980
Core i7-980X Extreme Edition
Core i7-990X Extreme Edition
Xeon W3690

Code Name:Westmere-EP
Xeon E5645
Xeon E5649
Xeon L5638
Xeon L5640
Xeon W3670
Xeon W3680
Xeon X5650
Xeon X5660
Xeon X5670
Xeon X5675
Xeon X5680
Xeon X5690

Code Name:Westmere-EX
Xeon E7-2803
Xeon E7-4807

Code Name:Sandy Bridge-E
Core i7-3930K
Core i7-3960X Extreme Edition
Core i7-3970X Extreme Edition

Code Name:Sandy Bridge-EN
Xeon E5-1428L
Xeon E5-2420
Xeon E5-2428L
Xeon E5-2430
Xeon E5-2430L
Xeon E5-2440

Code Name:Sandy Bridge-EP
Xeon E5-1650
Xeon E5-1660
Xeon E5-2620
Xeon E5-2630
Xeon E5-2630L
Xeon E5-2640
Xeon E5-2667
Xeon E5-4607
Xeon E5-4610

Code Name:Ivy Bridge
Xeon E5-1650V2
Xeon E5-1660V2
Xeon E5-2618LV2
Xeon E5-2620V2
Xeon E5-2630V2
Xeon E5-2630LV2
Xeon E5-2643V2

Code Name:Ivy Bridge-E
Core i7-4930K
Core i7-4960X Extreme Edition

qemu-kvm的標准選項

qemu-kvm的標准選項主要涉及指定主機類型、CPU模式、NUMA、軟驅設備、光驅設備及硬件設備等。
◇	-name name:設定虛擬機名稱;
◇	-M machine:指定要模擬的主機類型,如Standard PC、ISA-only PC或Intel-Mac等,可以使用“qemu-kvm -M ?”獲取所支持的所有類型;
◇	-m megs:設定虛擬機的RAM大小;
◇	-cpu model:設定CPU模型,如coreduo、qemu64等,可以使用“qemu-kvm -cpu ?”獲取所支持的所有模型;
◇	-smp n[,cores=cores][,threads=threads][,sockets=sockets][,maxcpus=maxcpus]:設定模擬的SMP架構中CPU的個數等、每個CPU的核心數及CPU的socket數目等;PC機上最多可以模擬255顆CPU;maxcpus用於指定熱插入的CPU個數上限;
◇	-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/cdrom可以直接使用物理光驅;
◇	-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表示網絡適配器;默認為硬盤設備;


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的手冊;

i386平台專用選項


◇	-no-acpi:禁用ACPI功能,GuestOS與ACPI出現兼容問題時使用此選項;
◇	-balloon none:禁用balloon設備;
◇	-balloon virtio[,addr=addr]:啟用virtio balloon設備;

網絡屬性相關選項

網絡屬性相關選項用於定義網絡設備接口類型及其相關的各屬性等信息。這裡只介紹nic、tap和user三種類型網絡接口的屬性,其它類型請參照qemu-kvm手冊。

◇	-net nic[,vlan=n][,macaddr=mac][,model=type][,name=name][,addr=addr][,vectors=v]:創建一個新的網卡設備並連接至vlan n中;PC架構上默認的NIC為e1000,macaddr用於為其指定MAC地址,name用於指定一個在監控時顯示的網上設備名稱;emu可以模擬多個類型的網卡設備,如virtio、i82551、i82557b、i82559er、ne2k_isa、pcnet、rtl8139、e1000、smc91c111、lance及mcf_fec等;不過,不同平台架構上,其支持的類型可能只包含前述列表的一部分,可以使用“qemu-kvm -net nic,mode=?”來獲取當前平台支持的類型;
◇	-net tap[,vlan=n][,name=name][,fd=h][,ifname=name][,script=file][,downscript=dfile]:通過物理機的TAP網絡接口連接至vlan n中,使用script=file指定的腳本(默認為/etc/qemu-ifup)來配置當前網絡接口,並使用downscript=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

使用示例

下面的命令創建了一個名為rhel5.8的虛擬機,其RAM大小為512MB,有兩顆CPU的SMP架構,默認引導設備為硬盤,有一個硬盤設備和一個光驅設備,網絡接口類型為virtio,VGA模式為cirrus,並啟用了balloon功能。

# qemu-kvm -name "rhel5.8" -m 512 \
-smp 2 -boot d \
-drive file=/VM/images/rhel5.8/hda,if=virtio,index=0,media=disk,format=qcow2 \
-drive file=/isos/rhel-5.8.iso,index=1,media=cdrom \
-net nic,model=virtio,macaddr=52:54:00:A5:41:1E \
-vga cirrus -balloon virtio

需要注意的是,上述命令中使用的硬盤映像文件/VM/images/rhel5.8/hda需要事先使用qemu-img命令創建,其具體使用格式請見下節介紹。

在虛擬機創建並安裝GuestOS完成之後,可以免去光驅設備直接啟動之。命令如下所示。

# qemu-kvm -name "rhel5.8" -m 512 \
-smp 2 -boot d \
-drive file=/VM/images/rhel5.8/hda,if=virtio,index=0,media=disk,format=qcow2 \
-net nic,model=virtio,macaddr=52:54:00:A5:41:1E \
-vga cirrus -balloon virtio

使用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的120G的稀疏磁盤映像文件。


1、網絡配置

添加網橋設備br0
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-br0


# vim ifcfg-br0


DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPV6INIT=no
IPADDR=192.168.8.46
BROADCAST=192.168.8.255
NETMASK=255.255.255.0
GATEWAY=192.168.8.254
USERCTL=no


# vim ifcfg-eth0


DEVICE=eth0
NM_CONTROLLED=no
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPV6INIT=no
USERCTL=no
BRIDGE=br0


# service network restart


驗證配置是否成功
# ifconfig
br0       Link encap:Ethernet  HWaddr 00:0C:29:4D:E2:88  
          inet addr:192.168.8.46  Bcast:192.168.8.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe4d:e288/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:119 errors:0 dropped:0 overruns:0 frame:0
          TX packets:31 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:8131 (7.9 KiB)  TX bytes:4302 (4.2 KiB)


eth0      Link encap:Ethernet  HWaddr 00:0C:29:4D:E2:88  
          inet6 addr: fe80::20c:29ff:fe4d:e288/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6232 errors:0 dropped:0 overruns:0 frame:0
          TX packets:493 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:796837 (778.1 KiB)  TX bytes:81011 (79.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: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)

2、加載kvm模塊

# modprobe kvm
# modprobe kvm_intel
# lsmod | grep kvm
kvm_intel              55624  0 
kvm                   341551  1 kvm_intel


安裝kvm管理相關組件
# yum install -y qemu-kvm qemu-kvm-tools


創建命令的鏈接
# ln -sv /usr/libexec/qemu-kvm /usr/sbin/
`/usr/sbin/qemu-kvm' -> `/usr/libexec/qemu-kvm'
創建存儲目錄
# mkdir -pv /images/vm1
mkdir: created directory `/images'
mkdir: created directory `/images/vm1'


3、安裝vnc客戶端並安裝系統

安裝tigervnc客戶端用來觀察系統安裝的過程

# yum install -y tigervnc



增加一個網絡配置腳本
# vim /etc/qemu-ifup


#!/bin/bash
#
switch=br0


if [ -n "$1" ]; then
  ifconfig $1 up
  sleep 0.5s
  brctl addif $switch $1
  exit 0
else
  echo "Error: no specifed interface."
  exit 1
fi


# chmod +x /etc/qemu-ifup
獲取安裝系統所需的鏡像文件,通過本地引導安裝kvm虛擬機系統
# lftp 192.168.8.111 -uftp

安裝示例1:從光盤引導鏡像安裝centos

創建虛擬磁盤

# mkdir /image/vm2

# qemu-img create -f qcow2 -o size=60G /images/vm2/centosminal.qcow2
# qemu-kvm -name "centos6.3minal" -m 768 -smp 4 -drive file=/images/vm2/centosminal.qcow2,if=ide,index=0,media=disk,format=qcow2 -drive file=/root/CentOS-6.3-x86_64-minimal.iso,media=cdrom,index=1 -boot order=dc
另外啟動一個窗口,運行vncviewer,可以看到可以正常加載光盤中的ISO文件
# vncviewer :5901

\

\

安裝示例2:通過網絡安裝系統

創建虛擬機,並通過網絡pxe識別,前提是需要配置pxe或者cobbler,具體可以參考前面的博文:
CentOS 6.5自動化運維之基於cobbler服務的自動化安裝操作系統詳解:http://blog.csdn.net/reblue520/article/details/51398512
創建虛擬磁盤文件
# qemu-img create -f qcow2 -o size=100G /images/vm1/centos6.qcow2
Formatting '/images/vm1/centos6.qcow2', fmt=qcow2 size=107374182400 encryption=off cluster_size=65536
從網絡安裝系統
# qemu-kvm -name "centos6" -m 768 -smp 4 -hda /images/vm1/centos6.qcow2 -net nic -net tap,ifname=vnet0,downscript=no -boot order=nc

\

通過網絡的方式安裝,因為cobbler啟用了dhcp服務可以看到系統自動獲取到了ip地址

\

另外開啟一個shell窗口(如果是xshell客戶端,需要配置x11相關的參數)

\

# vncviewer :5900

報錯:說明安裝的xmanager有問題,需要重新安裝即可


\

安裝示例3:從光盤引導鏡像安裝windows

# qemu-kvm -name "win2003" -m 768 -smp 4 -drive file=/images/vm2/centosminal.qcow2,if=ide,index=0,media=disk,format=qcow2 -drive file=/root/Win2003.ISO,media=cdrom,index=1 -boot order=dc

另外啟動一個窗口,運行vncview可以看到可以正常引導進入安裝界面

\

因為系統的安裝比較費時,也可以使用cirros鏡像來模擬系統啟動
下載地址:http://download.cirros-cloud.net/
# qemu-kvm -name "cirros" -smp 2,cores=2,thread=2,socket=2 -m 512 -drive file=/root/cirros-0.3.0-x86_64-disk.img,media=disk -net nic -net tap,ifname=vnet0,downscript=no -nographic
\

進入cirros系統後ctrl+a然後松開按c可以進入qemu命令行
help打開命令行幫助
info help 關於info的幫助信息




Copyright © Linux教程網 All Rights Reserved