Вопрос или проблема
Используя:
$ virsh version
Скомпилировано против библиотеки: libvirt 1.3.1
Используемая библиотека: libvirt 1.3.1
Используемый API: QEMU 1.3.1
Запускаемый гипервизор: QEMU 2.5.0
$
$
$ lsb_release -a
Нет доступных модулей LSB.
Идентификатор дистрибьютора: Ubuntu
Описание: Ubuntu 16.04.2 LTS
Версия: 16.04
Кодовое имя: xenial
Я хотел бы удалить запись dhcp-аренды libvirt с помощью virsh.
$ virsh net-list
Имя Состояние Автозапуск Постоянный
----------------------------------------------------------
default активен да да
docker-machines активен да да
$ virsh net-dhcp-leases docker-machines
Время истечения MAC-адрес Протокол IP-адрес Имя хоста ID клиента или DUID
-------------------------------------------------------------------------------------------------------------------
2017-05-10 16:15:38 52:54:00:8e:15:f5 ipv4 192.168.42.22/24 minikubecluster ff:c2:72:f6:09:00:02:00:00:ab:11:af:a8:d1:af:21:23:5c:49
2017-05-10 16:09:57 52:54:00:c6:51:45 ipv4 192.168.42.23/24 registry 01:52:54:00:c6:51:45
Я пробовал разные варианты с virsh net-update delete
, но продолжаю получать эту ошибку:
не удалось найти соответствующую запись dhcp хоста в сети 'docker-machines'
Не связано ли это с тем, что файлы аренды libvirt были изменены (они названы по имени сетевого интерфейса и имеют формат JSON)? Если да, то как тогда это сделать?
Подкоманда удаления работает так же, как и подкоманда добавления.
virsh net-update docker-machines delete ip-dhcp-host \
"<host mac="52:54:00:8e:15:f5" \
name="minikubecluster" ip='192.168.42.22' />" \
--live --config
Ответ или решение
Чтобы удалить запись DHCP-арендного соглашения libvirt с использованием virsh
, нужно последовательно выполнить несколько шагов. Давайте рассмотрим процесс более подробно, учитывая вашу информацию и используемые инструменты.
Шаг 1: Определение текущих арендаторов DHCP
В первую очередь, необходимо узнать, какие DHCP-арендные записи уже присутствуют в сети. Вы уже указали команду, которая выводит эту информацию:
virsh net-dhcp-leases docker-machines
В результате вы получили список активных арендаторов с их MAC-адресами, IP-адресами и другими соответствующими данными. На примере из вашего вопроса, вы видите следующее:
Expiry Time MAC address Protocol IP address Hostname Client ID or DUID
-------------------------------------------------------------------------------------------------------------------
2017-05-10 16:15:38 52:54:00:8e:15:f5 ipv4 192.168.42.22/24 minikubecluster ff:c2:72:f6:09:00:02:00:00:ab:11:af:a8:d1:af:21:23:5c:49
Шаг 2: Удаление записи через virsh net-update
Чтобы удалить запись DHCP, вы можете использовать команду virsh net-update
. Формат команды для удаления выглядит следующим образом:
virsh net-update <имя_сети> delete ip-dhcp-host \
'<host mac="52:54:00:8e:15:f5" name="minikubecluster" ip="192.168.42.22" />' \
--live --config
В вашей команде нужно заменить <имя_сети>
на docker-machines
. Таким образом, ваша команда будет выглядеть следующим образом:
virsh net-update docker-machines delete ip-dhcp-host \
'<host mac="52:54:00:8e:15:f5" name="minikubecluster" ip="192.168.42.22" />' \
--live --config
Шаг 3: Обработка ошибок
Если вы получили ошибку, подобную:
couldn't locate a matching dhcp host entry in network 'docker-machines'
Это может означать, что запись, которую вы хотите удалить, не была ранее добавлена либо была удалена каким-то другим способом. Убедитесь, что вы правильно указали MAC-адрес и другие параметры.
Шаг 4: Проверка конфигурации сети
Чтобы убедиться, что изменения вступили в силу, вы можете снова выполнить команду:
virsh net-dhcp-leases docker-machines
Убедитесь, что запись была успешно удалена. Если ваша сеть непрерывно использует DHCP, и вы не видите изменения, попробуйте перезагрузить сеть:
virsh net-destroy docker-machines
virsh net-start docker-machines
Заключение
Удаление записей DHCP в libvirt может показаться сложным процессом, но с правильной командой virsh net-update
и пониманием текущих настроек сети, вы сможете легко управлять своими DHCP-арендаторами. Если у вас возникнут дополнительные вопросы или сложности, вы всегда можете обратиться к документации libvirt или к сообществу за поддержкой.