libvirt: เปลี่ยน dhcp-setup โดยไม่ต้องรีสตาร์ท


11

ฉันใช้ libvirt และ kvm เพื่อทำเวอร์ชวลเซิร์ฟเวอร์ของฉัน ฉันกำหนดค่า libvirt เพื่อเริ่ม dhcp-server บน bridge-network-interface เพื่อให้ vm ของ 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 ยังคงมีไฟล์ต้นฉบับอยู่
3dinfluence

คำตอบ:


7

คำสั่งnet-update ที่เพิ่มใน virsh ควรอนุญาตการอัพเดท dhcp-host โดยไม่ต้องรีสตาร์ทเครือข่ายเสมือน (ฉันยังไม่ได้ทดสอบ)

ผู้ชาย virsh:

ส่วนคำสั่งเครือข่าย net-update xml [- ดัชนีดัชนีแบบโปร่งใส] [[--live] [--config] | [--ปัจจุบัน]]

อัปเดตส่วนที่กำหนดของคำจำกัดความเครือข่ายที่มีอยู่โดยการเปลี่ยนแปลงจะมีผลบังคับทันทีโดยไม่จำเป็นต้องทำลายและเริ่มเครือข่ายอีกครั้ง

คำสั่งเป็นหนึ่งใน "add-first", "add-last", "add" (คำพ้องสำหรับ Add-last), "ลบ" หรือ "แก้ไข"

ส่วนเป็นหนึ่งใน "บริดจ์", "โดเมน", "ip", "ip-dhcp-host", "ip-dhcp-range", "ไปข้างหน้า", "ไปข้างหน้าอินเตอร์เฟส", "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: 55 'ip =' 1.2.3.4 '/> "หรือชื่อของ ไฟล์ที่มีองค์ประกอบ xml ที่สมบูรณ์ Disambiguation ดำเนินการโดยดูที่อักขระตัวแรกของข้อความที่ให้ - หากอักขระตัวแรกคือ "<" จะเป็นข้อความ xml หากอักขระตัวแรกไม่ใช่ "<" จะเป็น ชื่อของไฟล์ที่มีข้อความ xml ที่จะใช้

ตัวเลือก --parent-index ใช้เพื่อระบุว่าองค์ประกอบใดที่เป็นองค์ประกอบหลักที่ร้องขออยู่ใน (อิงตาม 0) ตัวอย่างเช่น<host>องค์ประกอบdhcp อาจอยู่ในหนึ่งในหลาย ๆ<ip>องค์ประกอบในเครือข่าย หากไม่ได้จัดทำดัชนีผู้ปกครอง<ip>องค์ประกอบ"ที่เหมาะสมที่สุด" จะถูกเลือก (โดยปกติจะเป็นเพียง<dhcp>องค์ประกอบเดียวที่มีองค์ประกอบอยู่แล้ว) แต่หากได้รับ - ดัชนีแบบโปร่งใสอินสแตนซ์<ip>นั้นจะได้รับการแก้ไข

หาก --live ระบุไว้ส่งผลกระทบต่อเครือข่ายที่รันอยู่ หาก --config ระบุไว้จะมีผลกับการเริ่มต้นครั้งต่อไปของเครือข่ายถาวร หาก --current ถูกระบุส่งผลกระทบต่อสถานะเครือข่ายปัจจุบัน อาจได้รับทั้งแฟล็ก - 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

นอกจากนี้ยังใช้งานได้กับเครือข่ายอื่นนอกเหนือจากเครือข่ายเริ่มต้น เพียงแค่แทนที่คำเริ่มต้นในตัวอย่างด้วยชื่อของเครือข่าย


ฉันแค่ลองอันนี้ ในขณะที่การกำหนดค่าเครือข่ายใหม่มีผลบังคับใช้แน่นอน VMs ทั้งหมดขาดการเชื่อมต่อเครือข่ายและจำเป็นต้องรีบูต
user1202136

@ user1202136: คุณทำการเปลี่ยนแปลงการกำหนดค่าเครือข่ายแบบใด และคุณใช้ VMs แบบไหน?
pefu

ฉันใช้ Xen para-virtualized VMs เกี่ยวกับการเปลี่ยนแปลงการกำหนดค่าเครือข่ายฉันได้เพิ่มรายการ DHCP แบบคงที่ใหม่
user1202136

นอกเหนือจากการรีสตาร์ท dnsmaq ด้วยตนเองคุณต้องการเริ่มบริการเครือข่ายอีกครั้ง
Breno Leitão

@Breno Leitão: เป็นอย่างไรกันแน่ ความคิดเห็นของคุณใช้กับรุ่นใดของ Linux Distribution
pefu

2

วิธีการแก้ปัญหา @ pefu ทำเพื่อ CentOS 6.4 เช่นกัน!

การใช้net-editในvirshไม่ได้อัปเดตไฟล์ XML ที่/var/lib/libvirt/network/default.xmlหรือไม่เปลี่ยนสถานะของการกำหนดค่าเครือข่ายที่กำลังทำงานอยู่

การเรียกใช้ซ้ำnet-editแสดงรุ่นที่แก้ไขแม้หลังจากรีบูตเครื่อง แต่ไม่ได้โหลด!

ส่งออกไปยังไฟล์ XML ของจริงแก้ไขและโหลดซ้ำได้เลย!


1

ฉันคิดว่า libvirt ใช้ dnsmaq สำหรับเซิร์ฟเวอร์ dhcp บางทีคุณอาจจะรีสตาร์ท dnsmasq และทุกอย่างจะดีขึ้นหรือไม่


1

หลังจากดิสโก้พบกับรายการส่งเมลที่ฉันพบ: สิ่งนี้ไม่สามารถทำได้ในขณะนี้!


ฉันไม่รู้ว่าสิ่งนี้แนะนำหรือไม่ แต่ฉันมักจะฆ่ากระบวนการ dnsmasq และเริ่มใช้อาร์กิวเมนต์ที่มันทำงานด้วยอีกครั้ง
bkzland

คำตอบควรระบุ Linux Distribution และรุ่นที่ใช้ ดังที่ฉันได้แสดงไว้ด้านล่างมันเป็นไปได้ใน Ubuntu 10.04 LTS และที่ใหม่กว่า
pefu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.