libvirt: Зміна налаштування dhcp без перезавантаження


11

Я використовую libvirt та kvm для віртуалізації свого сервера. Я налаштував libvirt для запуску dhcp-сервера на мостовому мережевому інтерфейсі, щоб дати vm's ips. Кожен VM отримує завжди той самий 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, який перезапускає всі мої vm-адреси . Це не може бути рішенням, оскільки це означає простої кожного разу, коли я додаю новий Сервер. Чи є рішення?


Хороше запитання, я зрозумів, що це лише питання відтворення мережі після змін у мережі за допомогою virsh після того, як ви відредагували файл xml, як це є з доменами. Але це, мабуть, не так. Як свідчить virsh net-dumpxml, чітко видно, що libvirt все ще має кешований вихідний файл.
3вплив

Відповіді:


7

Додана команда net-update у virsh повинна дозволити оновлення хоста dhcp без перезавантаження віртуальної мережі (я її ще не перевіряв).

людина вірш:

розділ команд net-update xml [- transparent-index index] [[--live] [--config] | [- поточний]]

Оновіть даний розділ існуючого визначення мережі, при цьому зміни, можливо, набирають чинності негайно, не потребуючи знищення та повторного запуску мережі.

Команда є одним із "add-first", "add-last", "add" (синонім add-last), "delete" або "modify".

розділ є одним з "міст", "домен", "ip", "ip-dhcp-хост", "ip-dhcp-діапазон", "вперед", "вперед-інтерфейс", "вперед-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>елемент), але якщо - заданий прозорий індекс, саме цей конкретний екземпляр <ip>отримає модифікацію.

Якщо вказано --live, впливайте на працюючу мережу. Якщо --config вказано, впливайте на наступний запуск постійної мережі. Якщо - заданий струм, впливайте на поточний стан мережі. Можуть бути вказані прапорці --live та --config, але - струм є ексклюзивним. Не вказувати жоден прапор - це те саме, що вказати --current.


5

Наступна процедура працювала для мене з версією 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

Це також працює для інших мереж поруч із мережею за замовчуванням. Просто замініть слово за замовчуванням у прикладі на ім’я мережі.


Я просто спробував цей. Незважаючи на те, що нова конфігурація мережі дійсно набула чинності, всі VM втратили мережевий зв’язок і потрібно було перезавантажити.
user1202136

@ user1202136: Яку зміну конфігурації мережі ви здійснили? І які ти відеомагнітофони ти використовував?
пефу

Я використовував пара-віртуалізовані візуальні пристрої Xen. Щодо зміни конфігурації мережі, я додав новий статичний запис DHCP.
користувач1202136

Крім перезапуску dnsmaq вручну, ви вважаєте за краще перезапустити службу мережі.
Breno Leitão

@Breno Leitão: Як саме? І до яких версій ароматів дистрибуції Linux поширюється ваш коментар?
пефу

2

Рішення @ pefu зробило це і для CentOS 6.4!

Використання net-editin virshне оновлювало XML-файл на, /var/lib/libvirt/network/default.xmlа також не змінювало стан запущеної конфігурації мережі.

Повторний запуск net-editпоказав відредаговану версію навіть після перезавантаження, але вона просто не була завантажена!

Експорт його в реальний XML-файл, редагування та перезавантаження працює!


1

Я думаю, що libvirt використовує dnsmaq для свого dhcp-сервера. Можливо, ви могли просто перезапустити dnsmasq і все було б добре?


1

Після дискусії у списку розсилки я з’ясував: це наразі взагалі неможливо!


Я не знаю, чи рекомендується це, але я зазвичай просто вбиваю процес dnsmasq і запускаю його, використовуючи аргументи, з якими він запускався знову.
bkzland

У відповіді слід вказати дистрибутив Linux та версію, до якої він застосовується. Як я демонстрував нижче, це можливо в Ubuntu 10.04 LTS і новіших версіях.
пефу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.