libvirt:在不重新啟動的情況下更改 dhcp-setup
我正在使用 libvirt 和 kvm 來虛擬化我的伺服器。我將 libvirt 配置為在 bridge-network-interface 上啟動 dhcp-server 以提供 vm 的 ips。每個 VM 總是根據其 mac 獲得相同的 ip,配置如下:
<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,它會重新啟動我所有的 vm。這不能成為解決方案,因為這意味著每次我添加新伺服器時都會停機。有解決辦法嗎?
virsh 中添加的net-update命令應該允許 dhcp-host 更新而無需重新啟動虛擬網路(我還沒有測試過)。
男人 virsh:
net-update 網路命令部分 xml
$$ –parent-index index $$ $$ [–live $$ $$ –config $$|$$ –current $$] 更新現有網路定義的給定部分,更改可以選擇立即生效,而無需銷毀並重新啟動網路。
command 是“add-first”、“add-last”、“add”(add-last 的同義詞)、“delete”或“modify”之一。
部分是“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”將更改
<host>
包含在網路元素內的<dhcp>
元素內的<ip>
元素。xml 是被更改類型的完整 xml 元素的文本(例如“<host mac=“00:11:22:33:44:55’ ip=‘1.2.3.4’/>”,或者包含完整 xml 元素的文件。通過查看所提供文本的第一個字元來消除歧義 - 如果第一個字元是“<”,則為 xml 文本,如果第一個字元不是“<”,則為包含要使用的 xml 文本的文件的名稱。
–parent-index 選項用於指定請求的元素在幾個父元素中的哪一個(從 0 開始)。例如,一個 dhcp
<host>
元素可以在<ip>
網路中的多個元素中的任何一個中;如果沒有提供 parent-index,則將<ip>
選擇“最合適”的元素(通常是唯一已經有元素的<dhcp>
元素),但如果給出了 –parent-index,則該特定實例<ip>
將獲得修改。如果指定了 –live,則影響正在執行的網路。如果指定了 –config ,則影響持久網路的下一次啟動。如果指定了 –current,則影響目前網路狀態。可以同時給出 –live 和 –config 標誌,但 –current 是獨占的。不指定任何標誌與指定 –current 相同。
以下過程適用於我的 libvirt 版本:Ubuntu 10.04.4 LTS 主機上的 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
這也適用於預設網路之外的其他網路。只需將範例中的單詞 default 替換為網路名稱即可。