libvirt: बिना पुनः आरंभ किए dhcp-setup बदलें


11

मैं अपने सर्वर को वर्चुअलाइज करने के लिए libvirt और kvm का उपयोग कर रहा हूं। मैंने vm के उनके ips देने के लिए ब्रिज-नेटवर्क-इंटरफ़ेस पर dhcp-server शुरू करने के लिए libvirt कॉन्फ़िगर किया है। हर वीएम को हमेशा मैक के आधार पर एक ही आईपी मिलता है, इसे इस तरह कॉन्फ़िगर किया गया है:

<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 को पुनरारंभ करना पड़ता है जो मेरे सभी vms को पुनरारंभ करता है । यह समाधान नहीं हो सकता क्योंकि इसका मतलब है कि हर बार जब मैं एक नया सर्वर जोड़ता हूं। क्या कोई हल है?


अच्छा सवाल मैंने सोचा कि यह सिर्फ xml फ़ाइल को संपादित करने के बाद नेटवर्क का परिवर्तन करने के बाद नेटवर्क को फिर से बनाने का मामला था जैसे कि यह डोमेन के साथ है। लेकिन ऐसा प्रतीत नहीं होता है। जैसा कि वायर नेट-डंपएक्सएमएल स्पष्ट रूप से दर्शाता है कि अभी भी libvirt की मूल फ़ाइल कैश है।
डीफ्लुएंस

जवाबों:


7

वायर में जोड़े गए नेट-अपडेट कमांड को वर्चुअल नेटवर्क को पुनरारंभ किए बिना एक dhcp- होस्ट अपडेट की अनुमति देनी चाहिए (मैंने अभी तक परीक्षण नहीं किया है)।

आदमी वायर:

नेट-अपडेट नेटवर्क कमांड अनुभाग xml [- अपरेंट-इंडेक्स इंडेक्स] [[--live] [--config] | [--वर्तमान]]

मौजूदा नेटवर्क परिभाषा के दिए गए अनुभाग को अपडेट करें, परिवर्तनों को वैकल्पिक रूप से तुरंत प्रभाव में लाए बिना, नेटवर्क को नष्ट करने और फिर से शुरू करने की आवश्यकता के बिना।

कमांड "ऐड-फ़र्स्ट", "ऐड-लास्ट", "ऐड" (ऐड-लास्ट का एक पर्याय), "डिलीट", या "मॉडिफाई" में से एक है।

अनुभाग "ब्रिज", "डोमेन", "आईपी", "आईपी-डीएचसीपी-होस्ट", "आईपी-डीएचसीपी-रेंज", "फॉरवर्ड", "फॉरवर्ड-इंटरफेस", "फॉरवर्ड-पीएफ", "पोर्टग्रुप में से एक है। "," 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 पाठ का उपयोग किया जाना है।

--पारदर्शी-सूचकांक विकल्प का उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि अनुरोधित तत्व कितने मूल तत्वों में से है (0-आधारित)। उदाहरण के लिए, एक dhcp <host>तत्व <ip>नेटवर्क में कई तत्वों में से किसी एक में हो सकता है ; यदि कोई पेरेंट-इंडेक्स प्रदान नहीं किया जाता है, तो "सबसे उपयुक्त" <ip>तत्व का चयन किया जाएगा (आमतौर पर केवल एक ही है जिसमें पहले से ही एक <dhcp>तत्व है), लेकिन अगर --parent-index दिया गया है, तो उस विशेष उदाहरण में <ip>संशोधन होगा।

यदि - निर्दिष्ट है, तो एक चल रहे नेटवर्क को प्रभावित करें। यदि --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

यह डिफ़ॉल्ट नेटवर्क के साथ अन्य नेटवर्क के लिए भी काम करता है। उदाहरण में डिफ़ॉल्ट शब्द को नेटवर्क के नाम से बदलें।


मैंने बस यही कोशिश की। जबकि नए नेटवर्क कॉन्फ़िगरेशन ने वास्तव में प्रभाव डाला, सभी वीएम ने नेटवर्क कनेक्टिविटी खो दी और इसे रिबूट करने की आवश्यकता थी।
user1202136

@ user1202136: आपने किस तरह का नेटवर्क कॉन्फ़िगरेशन परिवर्तन किया है? और आप किस तरह के वीएम का उपयोग कर रहे थे?
पेफू

मैंने Xen para-virtualized VMs का उपयोग किया। नेटवर्क कॉन्फ़िगरेशन परिवर्तन के बारे में, मैंने एक नई स्थैतिक डीएचसीपी प्रविष्टि जोड़ी।
user1202136

मैन्युअल रूप से dnsmaq को पुनरारंभ करने के अलावा, आप नेटवर्किंग सेवा को फिर से शुरू करना पसंद करेंगे।
ब्रेनो लेइटो

@ ब्रेनो लेइटो: बिल्कुल कैसे? और लिनक्स वितरण फ्लेवर के किन संस्करणों पर आपकी टिप्पणी लागू होती है?
पीफू

2

@ pefu के समाधान ने इसे CentOS 6.4 के लिए भी किया!

का प्रयोग net-editमें virshकम से एक्सएमएल फ़ाइल को अद्यतन नहीं किया /var/lib/libvirt/network/default.xmlहै और न ही इसे चलाने नेटवर्क config की स्थिति बदलने था।

net-editरिबूट के बाद भी पुन: चल रहे संस्करण को दिखाया गया लेकिन यह अभी लोड नहीं हुआ था!

इसे असली XML फ़ाइल में निर्यात करना, संपादन करना और इसे फिर से लोड करना!


1

मुझे लगता है कि libvirt अपने dhcp सर्वर के लिए dnsmaq का उपयोग करता है। शायद तुम सिर्फ dnsmasq को पुनः आरंभ कर सकते हैं और सब ठीक हो जाएगा?


1

मेलिंगलिस्ट पर एक डिस्कशन के बाद मुझे पता चला: यह वर्तमान में संभव नहीं है!


मुझे नहीं पता कि क्या यह सिफारिश की गई है, लेकिन मैं आमतौर पर सिर्फ dnsmasq प्रक्रिया को मारता हूं और इसे उन तर्कों का उपयोग करके शुरू करता हूं जो यह फिर से चल रहा था।
bkzland

उत्तर को लिनक्स वितरण और उस संस्करण पर निर्दिष्ट करना चाहिए जो इसके लिए लागू होता है। जैसा कि मैंने नीचे दिखाया है, यह Ubuntu 10.04 LTS और नए में संभव है।
पीफू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.