Я использую libvirt и kvm для виртуализации своего сервера. Я настроил libvirt для запуска dhcp-сервера на сетевом интерфейсе моста, чтобы передать виртуальным машинам их IP-адреса. Каждая виртуальная машина всегда получает один и тот же IP-адрес на основе своего Mac, это настроено следующим образом:
<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, который перезапускает все мои виртуальные машины.. Это не может быть решением, потому что это означает простои каждый раз, когда я добавляю новый Сервер. Есть решение?
Добавленный сетевое обновление Команда в virsh должна разрешить обновление dhcp-host без перезапуска виртуальной сети (я еще не тестировал).
человек вирш:
net-update раздел сетевых команд xml [--parent-index index] [[--live] [--config] | [--ток]]
Обновите данный раздел существующего определения сети, при этом изменения могут вступить в силу немедленно, без необходимости уничтожать и перезапускать сеть.
Команда может быть одним из следующих: add-first, add-last, add (синоним для add-last), delete или modify.
раздел может быть одним из следующих: «мост», «домен», «ip», «ip-dhcp-host», «ip-dhcp-range», «forward», «forward-interface», «forward-pf», «группа портов» "," 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>
элементы в сети; если родительский индекс не указан, "наиболее подходящий"<ip>
будет выбран элемент (обычно единственный, у которого уже есть<dhcp>
element), но если указан --parent-index, этот конкретный экземпляр<ip>
получит модификацию.Если указан --live, влияет на работающую сеть. Если указан --config, влияет на следующий запуск постоянной сети. Если указан --current, влияет на текущее состояние сети. Могут быть указаны флаги --live и --config, но --current является исключительным. Не указывать какой-либо флаг - это то же самое, что указывать --current.
Следующая процедура сработала для меня с версией libvirt: 0.7.5-5ubuntu27 на хосте Ubuntu 10.04.4 LTS:
virsh net-dumpxml default > default.xml
$EDITOR default.xml
virsh net-destroy default
virsh net-define default.xml
virsh net-start default
Это также работает для других сетей помимо сети по умолчанию. Просто замените слово default в примере на название сети.
Решение @pefu сделало то же самое и для CentOS 6.4!
С помощью net-edit
в virsh
не обновлял XML-файл в /var/lib/libvirt/network/default.xml
при этом он не изменил состояние работающей сетевой конфигурации.
Повторный запуск net-edit
показывала отредактированную версию даже после перезагрузки но она просто не загружалась!
Экспорт в настоящий XML-файл, редактирование и перезагрузка работает!
Я думаю, что libvirt использует dnsmaq для своего dhcp-сервера. Может быть, вы могли бы просто перезапустить dnsmasq, и все будет хорошо?
После обсуждения Списка рассылки я узнал: в настоящее время это вообще невозможно!