生成硬盘镜像文件
qemu-imgcreate命令语法
qemu-img create [-b base_image] [-f fmt] [-F backing_fmt] filename[size]
其中,参数的含义如下:
-
base_image:指定一个基础的磁盘映像作为原型来创建一个新的磁盘映像。对于基于COW技术的格式,如qcow2,这种方式可以使得创建的磁盘映像不占据实际的磁盘空间,而是使用基础磁盘映像的空间。
-
fmt:指定创建的映像文件的格式。默认为raw,其它格式可用qemu-imginfo查看。
-
backing_fmt:指定基础磁盘映像的格式,如果创建的映像文件使用了COW技术的格式时生效。
-
filename:指定新磁盘映像的文件名。
-
size:指定新磁盘映像的大小。
1、使用raw格式创建新的磁盘映像
qemu-img create -f raw test.img 2G #指定创建一个名为test.img的磁盘映像文件,大小为2G,格式为raw。
2、使用qcow2格式创建基于一个已有磁盘映像的磁盘映像
qemu-img create -f qcow2 -o backing_file=base.img new.img 5G
#这里创建了一个大小为5G,格式为qcow2的磁盘映像文件new.img。并在创建的时候指定,需要使用已存在的磁盘映像文件base.img作为基础。
3、使用qcow2格式创建基于一个已有磁盘映像的磁盘映像,并指定磁盘缓存模式
qemu-img create -f qcow2 -o backing_file=base.img,cache=writeback new.img 5G #指定磁盘缓存模式为writeback。
xml配置文件
<domain type='kvm'>
<name>vm0</name>
<uuid>ed5e0d13-bdc4-4226-8b62-6ce5807e696c</uuid>
<memory>524288</memory>
<currentMemory>524288</currentMemory>
<vcpu>2</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type>
<boot dev='hd'/>
<bootmenu enable='no'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/run/vhost_disk/test.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>//光盘
<driver name='qemu' type='raw'/>
<source file='/root/kongchao/Centos-7-x86_64-2009.iso'/>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='fa:92:01:33:d4:fa'/>
<source bridge='br100'/> //配置的网桥网卡名称
<target dev='vnet0'/> //同一网桥下相同
<alias name='net0'/> //别名,同一网桥下相同
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> //注意slot值唯一
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0' keymap='en-us'>
<listen type='address' address='0.0.0.0'/>
</graphics>
</devices>
</domain>
qemu-kvm命令
qemu-kvm
-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]:定义启动设备的引导次序,每种设备使用一个字符表示;不同的架构所支持的设备及其表示字符不尽相同;
-boot order=dc,once=d
查看qemu支持的虚拟机框架
# /usr/libexec/qemu-kvm -M help
查看ovs网桥
# ovs-vsctl show
创建ovs网桥:
ovs-vsctl add-br br-ovs0
与物理网卡进行关联
ovs-vsctl add-port br-ovs0 bond0
创建linux网桥
brctl addbr br100
与物理网卡绑定
brctl addif br100 bond2
查看网桥
brctl show
virsh 虚机命令
virsh define test.xml //导入虚拟机配置
virsh list --all //查看创建虚机
virsh start vm0 //开启vm0
virsh shutdown 0a31a2ba-985c-f581-329d-91f53e42cca9 //关闭虚机
virsh console vm0 连接虚机
list [--all]: 列出虚拟机
nodeinfo: 查看真机信息
nodeinfo: 得到电脑详细配置名字
nodecpustats: 真机cpu 的状态
nodemenstats: 真机内存的详细信息
node-memory-tune: 允许你设置node的内存参数
capablilities: 打印虚拟机的特点
freecell: 打印出虚拟I机中可用的内存
virsh domain
start|shutdown|reboot <vm-name>: 虚拟机启动、停止、重启
destroy <vm-name>: 强制停止虚拟机
define <vm-name>.xml: 根据xml文件创建
undefine <vm-name>: 根据虚拟机名称删除虚拟机
console <vm-name>: 连接虚拟机的console
edit <vm-name> : 修改虚拟机配置
autostart <vm-name>: 设置虚拟机自启动
domiflist <vm-name>: 查看虚拟机网卡信息
domblklist <vm-name>: 查看虚拟机硬盘信息
dominfo <vm-name>: 列出指定虚拟机的信息
suspend <vm-name>: 挂起指定虚拟机
resume <vm-name>: 恢复挂起的虚拟机
domjobabort <vm-name>: 获取虚拟机的当前任务
dojobinfo <vm-name>: 显示虚拟机的任务
domstat <vm-name> : 显示虚拟机的状态
domcontrol<vm-name>: 返回虚拟机的状态ok or error
dumpxml<vm-name>: 直接显示demo的xml文件配置
edit <vm-name>: 编辑主机的配置文件
cpu-stats <vm-name>: 虚拟机的cpu状态
screenshot <vm-name>: 虚拟机截屏
setmen <vm-name> size: 设置虚拟机的内存
setmaxmen <vm-name> 设置虚拟机的最大内存
memtune <vm-name> 得到虚拟机分区的信息
blkiotune <vm-name> 得到虚拟机的磁盘信息
setvcpus(<vm-name> count) 设置虚拟机的虚拟cpu个数
dompmwakeup(<vm-name>) 唤醒挂起的vm-name
ttyconsole <vm-name> 输出设备用的终端
vcpucount <vm-name> 得到cpu个数
vcpuinfo<vm-name> 得到cpu的信息
vncdisplay<vm-name> 显示虚拟机vnc连接信息
虚拟网络管理
net-autostart <networkname> 自动启动网卡(default)
net-define <file> 把配置加载到文件
net-destory <networkname> 关闭网卡
net-dumpxml <networkname> 把网卡配置加载到文件
net-edit <networkname> 编辑网卡信息
net-info <networkname> 网卡信息
net-list 显示网卡
net-uuid <networkname> 得到网卡的id
net-name <id> 得到网卡的名字
net-start <networkname> 开启网卡
快照管理
snapshot-create 使用 XML 生成快照
snapshot-create-as 使用一组参数生成快照
snapshot-current 获取或者设定当前快照
snapshot-delete 删除域快照
snapshot-dumpxml 为域快照转储 XML
snapshot-edit 编辑快照 XML
snapshot-info 快照信息
snapshot-list 为域列出快照
snapshot-parent 获取快照的上级快照名称
snapshot-revert 从快照恢复