libvirt:更改dhcp-setup而不重新启动

我正在使用libvirt和kvm来虚拟化我的服务器。 我configuration了libvirt,在bridge-network-interface上启动一个dhcp-server来给这个虚拟机的ips。 每个虚拟机总是基于它的mac获得相同的IP,这是这样configuration的:

<dhcp> <range start='10.1.1.2' end='10.1.1.254' /> <host mac='54:52:00:21:01:ba' name='virstvm' ip='10.1.1.10' /> <host mac='00:16:36:2d:71:f9' name='secvm' ip='10.1.1.20' /> </dhcp> 

问题: 每当我添加一个新的主机到DHCP部分,我必须重新启动libvirt-bin,重新启动我的所有虚拟机 。 这不能成为解决scheme,因为它意味着每次我添加一个新的服务器的停机时间。 有解决scheme吗?

在virsh中添加的net-update命令应该允许dhcp-host更新而不重新启动虚拟networking(我还没有testing过)。

男人virsh:

net-updatenetworking命令部分xml [–parent-index index] [[–live] [–config] | [ – 当前]]

更新现有networking定义的给定部分,使更改立即生效,无需销毁和重新启动networking。

命令是“add-first”,“add-last”,“add”(add-last的同义词),“delete”或“modify”之一。

section是“bridge”,“domain”,“ip”,“ip-dhcp-host”,“ip-dhcp-range”,“forward”,“forward-interface”,“forward-pf”,“portgroup “,”dns-host“,”dns-txt“或”dns-srv“,每个部分都是通过连接xml元素层次结构来指定元素的。 例如,“ip-dhcp-host”将更改包含在networking的<ip>元素内的<dhcp>元素内的<ip> <host>元素。

xml是被改变的types的一个完整的xml元素的文本(例如“<host mac =”00:11:22:33:44:55'ip ='1.2.3.4'/>“一个包含完整xml元素的文件通过查看提供文本的第一个字符来完成消歧 – 如果第一个字符是“<”,那么它就是xml文本,如果第一个字符不是“<”,那么它就是包含要使用的xml文本的文件的名称。

–parent-index选项用于指定请求元素所在的几个父元素中的哪一个(从0开始)。 例如,一个dhcp <host>元素可以位于networking中的多个<ip>元素中的任何一个。 如果没有提供父索引,则将select“最合适的” <ip>元素(通常是唯一已经具有<dhcp>元素的元素),但是如果给出了–parent-index,则该特定实例的<ip>会得到修改。

如果指定了–live,则会影响正在运行的networking。 如果指定了–config,则会影响持续networking的下一次启动。 如果指定了–current,则会影响当前的networking状态。 –live和–config标志都可以给出,但是 – 当前是唯一的。 不指定任何标志与指定–current相同。

在Ubuntu 10.04.4 LTS主机上,使用libvirt Version:0.7.5-5ubuntu27,以下过程适用于我:

  virsh net-dumpxml default > default.xml $EDITOR default.xml virsh net-destroy default virsh net-define default.xml virsh net-start default 

这也适用于默认networking旁边的其他networking。 只需将示例中的单词defaultreplace为networking的名称即可。

@ pefu的解决scheme也为CentOS 6.4做了!

virsh使用net-edit不会更新/var/lib/libvirt/network/default.xml的XML文件,也不会更改正在运行的networkingconfiguration的状态。

重新运行net-edit显示编辑的版本,即使重新启动,但它只是没有加载!

导出到真正的XML文件,编辑和重新加载它的作品!

我认为libvirt为其dhcp服务器使用dnsmaq。 也许你可以重新启动dnsmasq,一切都会好起来的?

在Mailinglist上的讨论之后,我发现:目前根本不可能!