利用XML调整/复制虚拟机

  • 问题

在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.xml

2)修改导出的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.xml

2)修改导出的 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.img

4)根据 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                         关闭

.. ..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值