在KVM服务器上,利用XML描述文件来调整/复制虚拟机,主要任务如下: 1)将虚拟机 rh6_n1 改名为 rhel6_node1 2)将虚拟机 rhel6_node1 复制为rh6_n2
要运行一台KVM虚拟机,需要提供虚拟机的磁盘文件,还需要指定这台虚拟机的硬件配置。通常情况下,虚拟机的磁盘文件和配置文件放在下列位置: 1)配置文件:/etc/libvirt/qemu/虚拟机名.xml 2)磁盘文件:/var/lib/libvirt/images/虚拟机名.img 其中,用来记录虚拟机硬件的配置文件采用了XML(eXtensible Markup Language,可扩展标记语言)格式,也叫做描述文件。当我们从“虚拟系统管理器”新建虚拟机以后,对应的XML文件也就自动建好了。 也正因为如此,从命令行来管理KVM虚拟机的时候,就可以利用XML描述文件,来快速修改虚拟机的设置,也可以复制虚拟机。 利用XML文件修改虚拟机配置的基本思路: 1)virsh dumpxml 原虚拟机名 > /路径/new.xml 2)修改 /路径/new.xml 文件(name、uuid) 3)virsh define /路径/new.xml 4)virsh destroy 原虚拟机名,如果虚拟机未运行则跳过此步 5)virsh undefine 原虚拟机名 利用XML文件复制虚拟机的基本思路: 1)virsh dumpxml 原虚拟机名 > /路径/new.xml 2)修改 /路径/new.xml 文件(name、uuid、disk、mac address) 3)拷贝原虚拟机磁盘文件为新的虚拟机磁盘文件 4)virsh define /路径/new.xml
实现此案例需要按照如下步骤进行。 步骤一: 了解查看/导出XML描述的基本操作 1)查看虚拟机rh6_n1的XML描述信息
[root@kvmsvr ~]# virsh dumpxml rh6_n1 .. .. <domain type='kvm'> <name>rh6_n1</name> //名称 <uuid>dae4cb37-0a80-75c3-5853-07d5187073c7</uuid> //UUID值 <memory unit=‘KiB’>1048576</memory> <currentMemory unit=‘KiB’>1048576</currentMemory> //内存大小 <vcpu placement=‘static’>1</vcpu> //CPU数量 .. ..2)将虚拟机rh6_1的XML描述导出到/root/new.xml文件
[root@kvmsvr ~]# virsh dumpxml rh6_n1 > /root/new.xml //导出XML文件 [root@kvmsvr ~]# less /root/new.xml //确认结果 .. .. <domain type='kvm' id='1'> <name>rh6_n1</name> <uuid>dae4cb37-0a80-75c3-5853-07d5187073c7</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> .. ..步骤二:将虚拟机 rh6_n1 改名为 rhel6_node1 1)导出虚拟机 rh6_n1 的XML描述信息,保存为 new.xml 文件
[root@kvmsvr ~]# virsh dumpxml rh6_n1 > new.xml2)修改导出的new.xml文件
[root@kvmsvr ~]# uuidgen //获取新的UUID值 c33a4aad-c555-48b3-a0a9-893ad0b4775e [root@kvmsvr ~]# vim new.xml <domain type='kvm' id='1'> <name>rhel6_node1</name> //修改为新的虚拟机名称 <uuid>c33a4aad-c555-48b3-a0a9-893ad0b4775e</uuid> //修改UUID值 .. ..3)根据 new.xml 建立新的虚拟机
[root@kvmsvr ~]# virsh define new.xml //导入新虚拟机描述 定义域 rhel6_node1(从 new.xml) [root@kvmsvr ~]# virsh list --all //确认创建结果 Id 名称 状态 ---------------------------------------------------- 1 rh6_n1 启用 - rhel6_node1 关闭 .. ..4)删除原虚拟机的 XML 描述
[root@kvmsvr ~]# virsh destroy rh6_n1 //强制关机 域 rh6_n1 被删除 [root@kvmsvr ~]# virsh undefine rh6_n1 //删除虚拟机定义 域 rh6_n1 已经被取消定义 [root@kvmsvr ~]# virsh list --all //确认删除结果 Id 名称 状态 ---------------------------------------------------- - rhel6_node1 关闭 .. ..步骤三:将虚拟机 rhel6_node1 复制为rh6_n2
1)导出虚拟机 rhel6_node1 的XML描述信息,保存为 rh6_n2.xml 文件 [root@kvmsvr ~]# virsh dumpxml rhel6_node1 > rh6_n2.xml2)修改导出的 rh6_n2.xml文件
[root@kvmsvr ~]# uuidgen //获取新的UUID值 bfdce427-fca8-48a7-ae6c-0dd94daa2ceb [root@kvmsvr ~]# vim rh6_n2.xml <domain type='kvm' id='1'> <name>rh6_n2</name> //修改为新的虚拟机名称 <uuid>bfdce427-fca8-48a7-ae6c-0dd94daa2ceb</uuid> //修改UUID值 <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file=‘/data/images/node2.img’/> //改用新的虚拟磁盘 .. .. </disk> .. .. <interface type='network'> <mac address='52:54:00:56:77:88'/> //修改网卡的MAC地址 .. ..3)以复制的方式为新虚拟机建立磁盘文件
[root@kvmsvr ~]# cp -p /data/images/node1.img /data/images/node2.img4)根据 rh6_n2.xml 建立新的虚拟机
[root@kvmsvr ~]# virsh define rh6_n2.xml 定义域 rh6_n2(从 rh6_n2.xml) [root@kvmsvr ~]# virsh list --all //确认复制结果 Id 名称 状态 ---------------------------------------------------- - rhel6_node1 关闭 - rh6_n2 关闭 .. ..