libvirt + KVM का उपयोग करके VM का नाम कैसे बदलें


24

मैं KVM + libvirt पर एक VM का नाम कैसे बदल सकता हूं?

मैं चाहूंगा कि 'इन्वेंट्री' में नाम बदलने के साथ-साथ स्टोरेज आदि का नाम भी बदल दें।


3
जब मैंने इस सवाल को पूछा कि libvirt प्रोजेक्ट पर ललित लोगों ने 'virsh edit my-vm-name' कमांड जोड़ दिया है।
आर्थर उल्फल्ड्ट

जवाबों:


18

रन

virsh dumpxml name_of_vm > name_of_vm.xml

डुप्लिकेट UUID के कारण त्रुटि को रोकने के लिए पुराने vm को अनफ़ाइन करें।

virsh undefine name-of-vm

Xml फ़ाइल को संपादित करें फिर इसे आयात करें।

virsh define name_of_vm.xml

बेशक आपको परिवर्तनों को प्रभावी होने के लिए वीएम को रोकना और शुरू करना होगा

virsh destroy name_of_vm
virsh start name_of_vm

5
एक कदम जोड़ने की जरूरत है: (नए नाम के साथ vm को परिभाषित करने से पहले) "virsh undefine name-of-vm" अन्यथा यह डुप्लिकेट UUID के बारे में शिकायत करता है।
आर्थर उल्फल्ड्ट

1
मुझे भी hd.img फ़ाइल का नाम बदलना पड़ा और लाइन को xml फ़ाइल में संपादित करना
पड़ा

सही आदेश दूसरे उत्तर में है। यदि आपको पुरानी मशीन का उपयोग नहीं करना है तो आपको img का नाम बदलना नहीं है।
नक्स

1
यह उत्तर अब पुराना हो चुका है। मेरा जवाब नीचे देखें। tldr; virsh में अब अधिवास है।
16


13

virshdomrename1.2.19 रिलीज में लागू : 02 सितंबर 2015। तो वर्तमान में सबसे अच्छा अभ्यास सिर्फ है:

 virsh domrename oldname newname

जैसा कि आप उम्मीद कर सकते हैं, थोमडेन को रोका जाना चाहिए, लेकिन यह भी किसी भी स्नैपशॉट नहीं हो सकता है।


+1 - यदि आप सब कुछ मिलान करना चाहते हैं, तो आप virsh edit newnameफ़ाइल पथ को बदल सकते हैं और mv oldname newnameनिर्देशिका का नाम बदल सकते हैं।
अगली सूचना तक रोक दिया गया।

दूसरे शब्दों में, आपको 1) का नाम बदलना होगा /var/lib/libvirt/images/oldname.qcow2 invar/lib/libvirt/images/newname.qcow2; और 2) संपादित करें /etc/libvirt/qemu/newname.xml सही स्रोत फ़ाइल को सेट करने के लिए <b> स्रोत फ़ाइल = '/ var / lib / libvirt / images / newname.qcow2'
MaxReglisse

लेकिन केवल तभी जब आपको डोमेन नाम से मेल खाने के लिए फ़ाइल नाम की आवश्यकता होती है (जो मैं मानता हूं, सुविधाजनक है) - यह एक विनाश / निर्माण चक्र से बचता है, हालांकि अभी भी एक स्टॉप (और कोई स्नैपशॉट) की आवश्यकता नहीं है
रीड

5

कई मशीनों को बदलने के लिए आप इसका उपयोग कर सकते हैं:

virsh shutdown old-name

समाप्त करने और चलाने के लिए ऊपर की प्रतीक्षा करें:

virsh dumpxml old-name > old-name.xml
virsh undefine old-name

समाप्त करने और चलाने के लिए ऊपर की प्रतीक्षा करें:

sed -i 's/<name>old-name<\/name>/<name>new-name<\/name>/g' old-name.xml
virsh define old-name.xml

प्रत्येक मशीन के लिए इस एक-एक को चलाएं। यदि आपके पास एक सूची है, तो आप इस RegExp का उपयोग कर सकते हैं old-name new-name:

([^\r\n]+?)[ \t]+([^\r\n]+)
virsh shutdown $1\n#WAIT!\nvirsh dumpxml $1 > $1.xml\nvirsh undefine $1\n\#WAIT!\nsed -i 's/<name>$1<\\/name>/<name>$2<\\/name>/g' $1.xml\nvirsh define $1.xml\n

0

मैं इसे थोड़ा अलग तरीके से करता हूं और अन-अनुशंसित विधि (निश्चित नहीं) हो सकती है।

virsh destroy old-vm virsh edit old-vm

XML परिवर्तन में

  1. डोमेन नाम पुराना-vm से नया-vm
  2. UUID सेव और एग्जिट में चार / अंक बदलें।

virsh list --all

1 पुराना-वीएम शट-ऑफ

2 नए-वीएम शट-ऑफ

अब पुराने-वीएम को अपरिभाषित करें

virsh undefine old-vm

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.