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.