环境准备

需要勾选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的帮助信息

版权声明:本文为reblue520原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/reblue520/p/6239797.html