kvm相关介绍以及qemu-kvm常用参数选项详解
对于KVM虚拟机,一般启动我们会用 virsh create ×××.xml 方式启动,其实底层还是调用了qemu-kvm命令行去执行,只不过virsh在启动前做了一些准备工作。有时候,我们需要用qemu-kvm方式去启动虚拟机,比如基于KVM的linux内核调试。KVM介绍
KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机),属于内核的一个模块,Linux 2.6.20核心以上的版本中默认带有kvm模块。它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)
kvm虚拟机=kvm模块 + qemu模拟器
kvm负责分配内存和cpu,qemu负责模拟网络设备和io设备
CentOS6加载了KVM模块后,我们是无法进行虚拟机的管理的,如果需要管理KVM虚拟机,还需要管理工具才可以。先看一下KVM的管理工具栈。
yum grouplist |grep -i "virtualization"
Virtualization:
qemu-kvm
Virtualization Client:
python-virtinst, virt-manager, virt-viewer
Virtualization Platform:
libvirt, libvirt-client
Virtualization Tools:
libguestfs
虚拟化分为:
半虚拟化:完全用软件模拟,不需要硬件支持,速度慢 => xen
全虚拟化:需要硬件支持,速度快 ==> KVM
qemu-kvm的使用:
命令选项:
标准选项
显示选项
块设备选项
网络选项
i386平台专用选项
字符设备选项
蓝牙设备选项
Linux启动专用选项
调试/专家模式选项
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:指定硬盘设备所连接
index=index:设定同一种控制器类型中不同设备的索引号,即标识号
media=media:定义介质类型为硬盘还是光盘
snapshot=snapshot:指定当前硬盘设备是否支持快照功能:on或off
cache=cache:定义如何使用物理机缓存来访问块数据,其可用值有none、writeback、unsafe和writethrough四个
format=format:指定映像文件的格式,具体格式可参见qemu-img命令
-boot [,once=drives][,menu=on|off]:定义启动设备的引导次序,每种设备使用一个字符表示:不同的架构所支持的设备及其表示字符不尽相同,在x86 PC架构上,a、b表示软驱,c表示第一个光驱设备,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:显示帮助信息
网络属性相关选项
网络属性相关选项用于定义网络设备接口类型及其相关的各属性等信息。这里只介绍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用于指定一个在监控时显示的网上设备名称;qemu可以模拟多个类型的网卡设备,如virtio、i82557b、i82559er、ne2k_isa、pcnet、rtl8139、e1000、smc91c111、lance及mcf_fec等;不过,不同平台架构上,其支持的类型可能只包含前述列表中的一部分,可以使用"qemu-kvm -net nic,model=?"来获取当前平台支持的类型。
-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:设定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网络中的第3个地址,即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=/pexlinux.0
i386平台专用选项
-no-acpi:禁用ACPI功能,GuestOS与ACPI出现兼容问题时使用此选项
-ballcon none:禁用balloon设备
-balloon virtio[,addr=addr]:启用virtio balloon设备
页:
[1]