KVM使用入门

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.KVM管理工具
1.libvirt系列
  它是由REDHAT公司开发的适用于管理众多不同架构上的虚拟化技术的管理工具(比如:xen,kvm,LXC等)。他们需要在每个虚拟机实例上或是每一个hypervisor运行一个底层的基层库叫libvirt并在libvirt之上将本地的调用接口
通过libvirtd服务(网络服务)输出出去。因为它可以实现远程连接。通过libvirt的API可以调用的工具也有很多,比如说
    a>.virsh(命令行工具);
    b>.virt-viewer(图形管理工具);
    c>.virt-manager(图形管理工具);
    d>.virtins管理工具(包括命令:virt-install[用于系统安装],virt-clone[控制台的连接工具],virt-convert[映像格式转换工具],virt-image[管理映像文件的].)
 
扩展小知识:
  在RedHat6.x(或CentIOs6.x)系列,本身内部提供的各个虚拟化组件都是专用于KVM的,因为我们知道RedHat公司已经完全抛弃了Xen。因此我们在命令行中输入“ yum list all *virt* ”会看到base库提供的所有相关libvirt的工具仅仅适用于管理KVM,所以这个时候我们来安装Xen,并且在Xen的基础上使用系统自带的libvirt的话请务必通过Xen的yum源来安装libvirt哟。
 
2.qemu
  我们知道启动一个KVM虚拟机其实就是启动了一个Qemu进程,而qemu本身就是一个管理工具。

二.使用KVM虚拟化
1.加载KVM
  我们知道KVM在使用的时候必须是硬件支持虚拟化的,因此在使用之前,我们要确保我们使用的虚拟机实例是否支持硬件虚拟化技术。

  我们只需要在命令行中输入:“ grep --color -Ei "vmx|svm" /proc/cpuinfo ”如果有输出则说明支持硬件虚拟机技术,如果没有输出说明你当前环境是不支持硬件虚拟化的哟。(注意,其中vmx表示INTER系列CPU支持的类型,svm表示ADM系列CPU支持的类型。)
 

  事实上只要你安装了CentOs5.x系列往后的任何操作系统版本,想使用KVM虚拟机不需要安装任何组件(因为KVM是一个内置模块),只要编译时这个模块被编译了,那么一定是支持相关虚拟化的,否则只能重新编译内核。
 

2.安装qemu
  要使用KVM虚拟化,仅仅加载KVM模块是不够的哟,因为KVM只负责虚拟CPU和内存,I/O设备的虚拟不贵它负责,因此我们需要安装qemu,我们在命令行输入:“yum -y install qemu-kvm qemu-kvm-tools”即可。
 
 
 
三.创建虚拟机
1.介绍qemu-kvm命令行的使用
  qemu-kvm命令使用格为”qemu-kvm [options] [disk_image]“,其选项非常多,不过,大致可分为以下几类:
A>.标准选项:
  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设备【非一致内存访问,在对称多处理器的专用的PC服务器(或者是X86服务器)上才会有,一般高端一点的服务器才会支持numa这种机制(让每颗CPU都有自己的专用内存),一般价格都在5w网上哟。】;
  -fda :(file);
  -fdb :(file)使用指定文件(file)作为软盘镜像,file为/dev/fd0表示使用物理软驱;
  -hda:(file);
  -hdb:(file);
  -hdc:(file);
  -hdd:(file)使用指定file作为镜像硬盘镜像;
  -cdrom:(file)使用指定file作为CD-ROM镜像,需要注意的是-cdrom和-hdc不能同时使用(因为光驱设备是默认占用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])定义启动设备的引导次序,每种设备使用一个字符表示,不同的架构所支持的设备及其表示字符不尽相同,在x86PC架构上,a,b表示软驱,c表示第一块硬盘,d表示第一个光驱设备,n-p表示网络适配器,默认为硬盘设备。(案例:-boot order=dc,once=d,其中order表示启动顺序,意思是先找第一个光驱设备,再去找第一块硬盘启动,而once则表示第一次启动时需要找光驱设备。)
 
 

B>.USB选项;
  开启USB总线:-usb
  GuestOS为Windows时,-usb -USBdevice tablet用于实现鼠标定位。
C>.显示选项;
  显示选项用于定义虚拟机启动后的显示接口相关类型及属性等。
  -nographic:默认情况下,qemu使用SDL来显示VGA输出;而此新选项用于禁止图形接口,此时,qemu类似一个简单的命令行程序,其仿真串口设备将被重定向到控制台;
 

  -curses:禁止图形接口,并使用curses/ncurses作为交互接口;
  -alt-grab:使用Ctrl+Alt+Shift组合键释放鼠标;
  -ctrl-grab:使用右Ctrl键释放鼠标;
  -sdl:启用SDL(Simple Directmedia Layer)它是用C语言编写的开源免费的多媒体程序库,它提供了一个简单的接口用于实现操作系统硬件平台的图形显示,声音,输入设备等等。目前来讲,SDL库已经被广泛应用于各个操作系统。换句话说,SDL是是能够让你的虚拟机直接在启动时在当前主机上就直接打开一个图形界面。他要求你操作系统本身要支持SDL。
  -spice:(option[,option[,......]])启用splice远程桌面协议,其有许多子选项,具体请参考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的手册。VNC(Virtual Network Computing,应用层协议)基于RFB(远程帧缓冲)协议,来控制另外一台计算机系统,它是图像化的桌面分享系统,VNC克服了SDL只能在图形界面中运行的功能。
 
扩展小知识:vnc的display指定方法:
display:
1>.host:N
  例如:172.16.100.100:1,表示是监听在172.16.100.100主机的2500+N端口上哟!换句话说,就是监听在5901端口上。
 

2>.unix:/path/to/socket_file
  这是基于套接字进行连接,这种方式只能局限于在本机工作,无法向第一种基于IP的方式进行连接可以让其他主机来连接本地的服务。
3>.none
  表示在启动虚拟机时不启动VNC功能,将来在需要时可以在手动启动起来。

  [options]:
    password:连接是需要验证密码,设置密码通过monitor接口使用change;
    reverse:“反向”连接至某出于监听状态的vncview上;
 
  -monitor stdio:表示在标准输入输出显示monitor界面(-nographic)
  Ctrl-a,c:在console和monitor之间切换
  Ctrl-a,h:显示帮助信息。
4>案例展示:
[root@yinzhengjie ~]# qemu-kvm -name "yinzhengjie_cirros" -smp 4,cores=2,threads=2,sockets=4 -m 512 -drive file=/root/cirros-0.3.0-i386-disk.img -net nic -net tap,ifname=yinzhengjie,downscript=no -nographic
 

扩展小知识:
  我们可以找一个小的映像文件便于我们测试Linux服务器。也许你之前也听说过“cirrOS”相关的产品,下载相应的镜像去测试更加方便,我上面测试用的映像文件就是在他们的官网下载的。下载地址为:https://launchpad.net/cirros/+download
 
D>.I386平台专用选项;
  -no-acpi:禁用ACPI功能,GuestOS与ACPI出现兼容问题时使用此选项;
  -balloon none:禁用balloon设备;
  -balloon virtio[,addr=addr]:启用virti balloon设备;
 
E>.网络选项;
  网络属性相关选项用于定义网络设备接口类型及其相关的各个属性等信息,这里只介绍nic(网卡接口),tap(可以模拟二层的网络设备,桥接时使用)和user(qemu内置的私用的使用用户空间模拟出来的网络功能)三种类型网络接口的属性,其他类型请参考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,rt18139,e1000,smc91c111,lance及mcf_fec等,不过,不同平台架构上,其支持的类型可能只包含前述列表的一部分,可以使用“qemu-kvm -net nic,model=?”来获取当前平台支持的类型;

  -net:(tap[,valn=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 yinzhengjie_linux.img -boot n -net user,tftp=/tftpserver/pub,bootfile=/pxelinux.0"
 
扩展小知识:KVM的虚拟网络模型
  在NAT工作模式下,虚拟机的网卡如果想要访问公网数据或是局域网的任意一台主机, 需要把IP配置成和“Virnet0”同一个网段,并且将网关指向“Virnet0”,不过将数据到达物理网卡的时候,通过源地址转换(可通过iptables命令来实现)将ip转换成eth0或者eth1的地址,最后将数据发送出去。但是外网访问时拿到的IP是eth0或者eht1的地址,换句话说,外网的机器或是局域网的机器拿到的IP并非真正的虚拟机的IP地址,起到了保护虚拟机的IP的作用。

  在ROUTING工作模式下,其实和NAT唯一的区别就是不需要隐藏虚拟机的IP,虚拟机的网卡如果想要访问公网数据或是局域网的任意一台主机, 需要把IP配置成和“Virnet1”同一个网段,并且将网关指向“Virnet1”,将数据到达物理网卡的时候直接将数据转换到对应的目的地址即可。当然在Linux上需要打开网卡的转发功能哟。

  在隔离模型工作模式下,其实就是虚拟机软件创建出来一了一个虚拟桥,然后2个虚拟机都连接到这个虚拟桥上来,这样2个虚拟机如果网段相同的话,基本上就可以互相通信了,但是,其不能和宿主机进行通信。更不能和局域网的任何主机通信哟。
 

  桥接模型工作模式下,宿主机的网卡被当成交换机来使用了,真正的物理IP被虚拟出来的br0给抢占去了,当虚拟机想要访问局域网的主机是,直接将数据通过eth0(此时,我们可以把它当做交换机来理解)将数据发送到相应的主机上去。
 

  多路桥接工作模式下,虚拟机可以根据自己的网络环境,选择相应的网卡将数据发送到想要到达的主机上去。
 

F>.字符设备选项;
G>.蓝牙相关选项;
H>.Linux系统引导专用选项;
I>.PowerPC专用选项;
J>.Sparc32专用选项;
 
2.创建一个虚拟机实例
 [root@yinzhengjie ~]# mkdir -pv /yinzhengjie/images/vm1
[root@yinzhengjie ~]# qemu-img create -f qcow2 -o size=100G /yinzhengjie/images/vm1/yinzhengjie_win10.qcow2 #创建一个映像文件
Formatting '/yinzhengjie/images/vm1/yinzhengjie_win10.qcow2', fmt=qcow2 size= encryption=off cluster_size=
[root@yinzhengjie ~]# ls -lh /yinzhengjie/images/vm1/yinzhengjie_win10.qcow2
-rw-r--r--. root root 194K Sep : /yinzhengjie/images/vm1/yinzhengjie_win10.qcow2
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# yum -y install tigervnc-server
[root@yinzhengjie ~]# yum -y install tigervnc
[root@yinzhengjie ~]# qemu-kvm -name "yinzhengjie_windows10" -m -smp -hda /yinzhengjie/images/vm1/yinzhengjie_win10.qcow2 -cdrom /yinzhengjie/ISO/cn_windows_10_enterprise_x64_dvd_6846957.iso -boot order=dc
open /dev/kvm: No such file or directory
failed to initialize KVM: Operation not permitted
Back to tcg accelerator.
VNC server running on `:::'
[root@yinzhengjie Desktop]# vncviewer : #注意,由于我们分配的内存较小,导致图形界面得反应一段时间才能反应过来。

当然我们还可以通过
[root@yinzhengjie ~]# qemu-kvm -name "yinzhengjie_win10" -m 768 -smp 4 -hda /yinzhengjie/images/vm1/yinzhengjie_win10.qcow2 -drive file=/yinzhengjie/ISO/cn_windows_10_enterprise_x64_dvd_6846957.iso,media=cdrom,index=1 -boot order=dc
open /dev/kvm: No such file or directory
failed to initialize KVM: Operation not permitted
Back to tcg accelerator.
VNC server running on `::1:5900'
 

  以上的两种方式只是创建出来虚拟机了,但是没有网络接口,没有网卡,就没法和这个虚拟机进行通信,这个时候我们需要给其配置上网卡,由于我们要是使用tap,那么我们必须通过brctl命令帮我们做出来虚拟网卡出来。具体代码如下:

 [root@yinzhengjie ~]# more br100.sh
#!/bin/bash
#author :yinzhengjie
#Blog:http://www.cnblogs.com/yinzhengjie
#
brctl addbr br100
ifconfig eth0 up
brctl addif br100 eth0
ifconfig br100 192.168.2.100/ up
route add default gw 192.168.2.1
[root@yinzhengjie ~]#
运行以上脚本,可以让宿主机多出来一块桥接网卡br100.然后我们需要些一个启动网卡的脚本,具体代码如下:
[root@yinzhengjie ~]# chmod +x /etc/qemu-ifup
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# more /etc/qemu-ifup
#!/bin/bash
#author :yinzhengjie
#Blog:http://www.cnblogs.com/yinzhengjie
#
switch=br0
if [ -n "$1" ];then
ifcongig $ up
sleep .5s
brctl addif $switch $
exit
else
echo "Error:no specifed interface."
exit
fi
[root@yinzhengjie ~]#
  写完之后,我们就可以来创建虚拟机了,具体命令如下:
[root@yinzhengjie ~]# qemu-kvm -name "yinzhengjie_windows" -m 786 -smp 4 -drive file=/yinzhengjie/images/vm1/yinzhengjie_win10.qcow2,if=ide,index=0,media=disk,format=qcow2 -drive file=/yinzhengjie/ISO/cn_windows_10_enterprise_x64_dvd_6846957.iso,media=cdrom,index=1 -boot order=dc -net nic -net tap,name=vnet0,script=/etc/qemu-ifup,downscript=no
 

  要注意的是上面指定了1个脚本,分别是开启的脚本为/etc/qemu-ifup,还有一个就是关闭的脚本为downscript脚本,当然我们可以不写script参数,因为默认的就是/etc/qemu-ifup,这个脚本是用来启动网卡的,关闭脚本用的是downscript指定,但是如果不指定的就在后面加一个no的参数,这样终止就不会报错啦!
 

  当然,我们也可以通过修改配置文件的方式来创建桥接网卡,具体操作如下:
 [root@yinzhengjie network-scripts]# cp ifcfg-eth0 ifcfg-br100
[root@yinzhengjie network-scripts]#
[root@yinzhengjie network-scripts]# more ifcfg-br100
DEVICE="br100"
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Bridge"
IPADDR="192.168.2.200"
NETMAST="255.255.255.0"
GATEWAY="192.168.2.1"
DNS1="219.141.136.10"
DNS2="219.141.140.10"
[root@yinzhengjie network-scripts]#
[root@yinzhengjie network-scripts]#
[root@yinzhengjie network-scripts]#
[root@yinzhengjie network-scripts]# more ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Ethernet"
BRIDGE="br100"
[root@yinzhengjie network-scripts]#
[root@yinzhengjie network-scripts]# /etc/init.d/NetworkManager stop
Stopping NetworkManager daemon: [ OK ]
[root@yinzhengjie network-scripts]#
[root@yinzhengjie network-scripts]#
[root@yinzhengjie network-scripts]# chkconfig --list NetworkManager
NetworkManager :off :off :on :on :on :on :off
[root@yinzhengjie network-scripts]#
[root@yinzhengjie network-scripts]# chkconfig NetworkManager off
[root@yinzhengjie network-scripts]#
[root@yinzhengjie network-scripts]#
[root@yinzhengjie network-scripts]# chkconfig --list NetworkManager
NetworkManager :off :off :off :off :off :off :off
[root@yinzhengjie network-scripts]#
[root@yinzhengjie network-scripts]# /etc/init.d/network restart
Shutting down interface br100: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: device eth0 is already a member of a bridge; can't enslave it to bridge br100.
[ OK ]
Bringing up interface br100: Determining if ip address 192.168.2.200 is already in use for device br100...
[ OK ]
[root@yinzhengjie network-scripts]#
[root@yinzhengjie ~]# modprobe kvm
[root@yinzhengjie ~]# modprobe kvm_intel
[root@yinzhengjie ~]# yum -y install qemu-kvm qemu-kvm-tools
[root@yinzhengjie ~]# ln -sv /usr/libexec/qemu-kvm /usr/sbin/
`/usr/sbin/qemu-kvm' -> `/usr/libexec/qemu-kvm'
[root@yinzhengjie ~]# mkdir -pv /yinzhengjie/images/vm1
mkdir: created directory `/yinzhengjie/images'
mkdir: created directory `/yinzhengjie/images/vm1'
[root@yinzhengjie ~]# qemu-img create -f qcow2 -o size=100G /yinzhengjie/images/vm1/yinzhengjie_rhel6.qcow2
Formatting '/yinzhengjie/images/vm1/yinzhengjie_rhel6.qcow2', fmt=qcow2 size= encryption=off cluster_size=
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# yum -y install tigervnc
[root@yinzhengjie ~]# more /etc/qemu-ifup
#!/bin/bash
#author :yinzhengjie
#Blog:http://www.cnblogs.com/yinzhengjie switch=br100 if [ -n "$1" ]; then
ifconfig $ up
sleep 1s
brctl addif $switch $
exit
else
echo "Error:no specifed interface!"
exit
fi
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# chmod +x /etc/qemu-ifup
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# qemu-kvm -name "yinzhengjie-rhel6" -m -smp -hda /yinzhengjie/images/vm1/yinzhengjie_rhel6.qcow2 -net nic -net tap,ifname=yinzhengjie-vnet0,downscript=no -boot order=nc
VNC server running on `:::'

然后再用VNC打开终端:

创建虚拟机实例一(配置网卡):
[root@yinzhengjie ~]#qemu-kvm -name "yinzhengjie-rhel6" -m 512 -smp 2 -drive file=/yinzhengjie/images/vm1/yinzhengjie_rhel6.qcow2,media=disk,if=virtio,index=0,format=qcow2 -net nic,model=virtio -net tap,ifname=yinzhengjie-net,downscript=no -boot order=c
创建虚拟机实例二(新增VNC功能,用VNC连接时需要使用密码。):
[root@yinzhengjie ~]#qemu-kvm -name "yinzhengjie-rhel6" -m 512 -smp 2 -drive file=/yinzhengjie/images/vm1/yinzhengjie_rhel6.qcow2,media=disk,if=virtio,index=0,format=qcow2 -net nic,model=virtio -net tap,ifname=yinzhengjie-net,downscript=no -vnc :1,password -monitor stdio

扩展小知识:qemu-kvm的其他的用到的参数:
  a>.动态迁移是用到的选项: -incoming tcp:0:PROT
  b>.让qemu-kvm进程运行于后台:-daemonize
  c>.开启USB总线:-usb
    GuestOS为Windows是,-usb -usbdevice tablet 用于实现鼠标定位
  d>.打开KVM的支持:-enable-kvm
    qemu-kvm默认就启用了此选项
  e>.打开声音设备:-soundhw
  f>.设定iscsi存储设备:-iscsi[user=USERNAME][,password=PASSWORD][,initiator-name=iqn]
    通过URL指定使用的iscsi设备:iscsi://<target_ip>[:port]/<target_iqn>/<lun>
举例如下:
[root@yinzhengjie ~]# qemu-kvm iscsi initiator-name="动态生成的" -drive file=iscsi://iqn.yinzhengjie.com/yzj.2015-03.com.magedu.tgt1/1
  g>.指定使用的bios文件:
    -bios /path/to/some_bios_program
  h>.使用外部内核及ramdisk文件:
    -kerner
    -initrd
  -append:向内和传递的参数列表。
 
3.使用qemu-img管理磁盘映像
  qemu-img是qemu用来实现磁盘映像管理的工作组件,其有许多子命令,分别用于实现不同的管理功能,而每一个子命令也都有一系列不同的选项。其使用语法格式为“qemu-img subcommand [option]”,支持的子命令如下:
  -create:创建一个新的磁盘映像文件;
  实例:
    [root@yinzhengjie ~]# qemu-img create -f qcow2 -o size=80G,preallocation=metadata /yinzhengjie/images/vm2/yinzhengjie_test.qcow2

  -check:检查磁盘映像文件中的错误;
  -convert:转换磁盘映像的格式;
  实例:
    [root@yinzhengjie ~]# qemu-img convert -O vmdk -o adapter_type=lsilogic /yinzhengjie/images/vm2/yinzhengjie_test.qcow2 yinzhengjie_test.vmdk
 

  -info:显示指定磁盘映像的信息;
  -snapshot:管理磁盘映像的快照;
    [OPTIONS]:
      -a:恢复到某个快照
      -c:创建某个快照
      -d:删除某个快照
      -l:列出所有的快照信息
  实例:
 [root@yinzhengjie ~]# qemu-img snapshot -c yinzhengjie-snapshot.snap /yinzhengjie/images/vm2/yinzhengjie_test.qcow2
[root@yinzhengjie ~]# qemu-img snapshot -a yinzhengjie-snapshot.snap /yinzhengjie/images/vm2/yinzhengjie_test.qcow2
[root@yinzhengjie ~]# qemu-img snapshot -l /yinzhengjie/images/vm2/yinzhengjie_test.qcow2
[root@yinzhengjie ~]# qemu-img snapshot -d yinzhengjie-snapshot.snap /yinzhengjie/images/vm2/yinzhengjie_test.qcow2
[root@yinzhengjie ~]# qemu-img snapshot -l /yinzhengjie/images/vm2/yinzhengjie_test.qcow2

  -commit:提交磁盘映像的所有改变;
  -rbase:基于某磁盘映像创建新的映像文件;
  -resize:增大或缩减磁盘映像文件的大小;
  实例:
    [root@yinzhengjie ~]# qemu-img resize /yinzhengjie/images/vm2/yinzhengjie_test.qcow2 100G

  使用create子命令创建磁盘映像的命令格式为“create [-f fmt] [-o options] filename [size]”,例如下面的命令创建了一个格式为qcow2的80G的稀疏磁盘映像文件。

最新文章

  1. iis下设置php最大执行时间
  2. HDU 2159 FATE (二维完全背包
  3. POJ 1716
  4. 《APUE》第四章笔记(1)
  5. Can&#39;t connect to local MySQL server through socket &#39;/tmp/mysql.sock&#39; (111)
  6. 《CSS网站布局实录》学习笔记(五)
  7. 点击&lt;a&gt;标签,禁止页面自动跳到顶部的解决办法
  8. C语言之字符集、ASCII码和sizeof运算符
  9. Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
  10. 机器学习实战笔记(Python实现)-09-树回归
  11. 测试CentOS-7-x86_64-Minimal-1708.iso这种光盘安装效果
  12. Centos7下Rinetd安装与应用(转)
  13. spring mvc controller中的参数验证机制(一)
  14. openvpn server setup
  15. R read.tabe line 5 did not have 2 elements
  16. STM32F10X-定时器/计数器
  17. python爬虫 抓取一个网站的所有网址链接
  18. StringBuffer中的sBuffer.delete(0,4);
  19. golang 的 sync.WaitGroup
  20. Android API之android.view.View.MeasureSpec

热门文章

  1. 安装tesserocr错误(未解决)
  2. 《Multiplayer Game Programming》阅读笔记
  3. [福大软工] Z班——Alpha现场答辩情况汇总
  4. ios开发之--CAKeyframeAnimation的详细用法
  5. scipy插值interpolation
  6. Web.config中设置启用webservice远程调试访问 参数看不到
  7. Mysql读写分离php脚本
  8. emWin 文字图形同时刷新导致图形显示异常
  9. 洛谷 P4475 巧克力王国 解题报告
  10. 本地Git与GitHub服务器建立连接(SSH方式通信)