libvirt : 다시 시작하지 않고 dhcp-setup 변경


11

libvirt와 kvm을 사용하여 서버를 가상화하고 있습니다. 브리지 네트워크 인터페이스에서 dhcp-server를 시작하여 VM의 IP를 제공하도록 libvirt를 구성했습니다. 모든 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 섹션에 새 호스트를 추가 할 때마다 모든 vm을 다시 시작하는 libvirt-bin을 다시 시작해야 합니다. 새 서버를 추가 할 때마다 가동 중지 시간이 발생하기 때문에 해결책이 될 수 없습니다. 해결책이 있습니까?


좋은 질문 xml 파일을 도메인과 마찬가지로 편집 한 후에 virsh를 사용하여 네트워크를 변경 한 후에 네트워크를 다시 작성하는 것이 문제라고 생각했습니다. 그러나 이것은 사실이 아닙니다. virsh net-dumpxml은 libvirt에 여전히 원본 파일이 캐시되어 있음을 분명히 보여줍니다.
3dinfluence

답변:


7

virsh에 추가 된 net-update 명령은 가상 네트워크를 다시 시작하지 않고 dhcp-host 업데이트를 허용해야합니다 (아직 테스트하지는 않았습니다).

남자 virsh :

net-update 네트워크 명령 섹션 xml [--parent-index index] [[--live] [--config] | [--흐름]]

기존 네트워크 정의의 지정된 섹션을 업데이트하십시오. 변경 사항은 네트워크를 파괴하고 다시 시작할 필요없이 선택적으로 즉시 적용됩니다.

command는 "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"는 네트워크 요소 <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>요소 가있는 유일한 요소) --parent-index가 제공되면 해당 특정 인스턴스가 <ip>수정됩니다.

--live를 지정하면 실행중인 네트워크에 영향을줍니다. --config를 지정하면 다음 영구 네트워크 시작에 영향을줍니다. --current를 지정하면 현재 네트워크 상태에 영향을줍니다. --live 및 --config 플래그가 모두 제공 될 수 있지만 --current는 배타적입니다. 플래그를 지정하지 않는 것은 --current를 지정하는 것과 같습니다.


5

다음 절차는 Ubuntu 10.04.4 LTS 호스트에서 libvirt 버전 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라는 단어를 네트워크 이름으로 바꾸십시오.


방금 이것을 시도했습니다. 새 네트워크 구성이 실제로 적용되는 동안 모든 VM의 네트워크 연결이 끊어지고 다시 부팅해야했습니다.
user1202136

@ user1202136 : 어떤 종류의 네트워크 구성 변경을 수행 했습니까? 그리고 어떤 종류의 VM을 사용하고 있습니까?
pefu

Xen 반 가상화 VM을 사용했습니다. 네트워크 구성 변경과 관련하여 새로운 정적 DHCP 항목을 추가했습니다.
user1202136

dnsmaq를 수동으로 다시 시작하는 것 외에 네트워킹 서비스를 다시 시작하는 것이 좋습니다.
Breno Leitão

@Breno Leitão : 정확히 어떻게? 귀하의 의견은 어떤 Linux Distribution 버전에 적용됩니까?
pefu

2

@pefu의 솔루션은 CentOS 6.4에도 적용되었습니다!

net-editin을 사용 virsh하여 XML 파일을 업데이트하지 않았 /var/lib/libvirt/network/default.xml거나 실행중인 네트워크 구성의 상태도 변경하지 않았습니다.

다시 실행 net-edit하면 재부팅 후에도 편집 된 버전이 표시되었지만로드되지 않았습니다!

실제 XML 파일로 내보내고 편집하고 다시로드하면 작동합니다!


1

libvirt는 dhcp 서버에 dnsmaq를 사용한다고 생각합니다. 어쩌면 dnsmasq를 다시 시작할 수 있고 모든 것이 좋을까요?


1

메일 링리스트에 대한 토론 후 나는 이것을 발견했다 : 이것은 현재 전혀 불가능하다!


이것이 권장되는지 모르겠지만 일반적으로 dnsmasq 프로세스를 종료하고 다시 실행중인 인수를 사용하여 시작합니다.
bkzland

대답은 적용 할 Linux 배포 및 버전을 지정해야합니다. 아래에서 설명했듯이 Ubuntu 10.04 LTS 이상에서 가능합니다.
pefu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.