Computer >> कंप्यूटर ट्यूटोरियल >  >> सॉफ्टवेयर >> आभासी मशीन

KVM में वर्चुअल मशीन क्लोनिंग के लिए चरण-दर-चरण गाइड

नोट: यह ट्यूटोरियल मानता है कि आपके पास virt-sysprep नहीं है; नीचे देखें!

नहीं, यह virt-clone का उपयोग करने पर एक और सामान्य howto नहीं है। जबकि virt-clone आपके वर्चुअल मशीनों के डुप्लिकेट बनाने के लिए एक बल्कि उपयोगी उपकरण है, इसकी वर्तमान कॉन्फ़िगरेशन में, यह केवल आपके क्लोन सिस्टम को अद्वितीय ID और MAC पता असाइन करेगा, जिससे आपको क्लोन बूट होने के बाद अतिरिक्त ट्विक्स और कस्टमाइज़ेशन करने के लिए मजबूर होना पड़ेगा। इसका मतलब है कि आपको काफी मेडल करना पड़ सकता है, जो आप नहीं चाहते हैं।

ठीक है, मैं आपको KVM तकनीक में अपने वर्चुअल मशीनों की समान प्रतियां बनाने का एक अलग तरीका दिखाऊंगा, प्रति-होस्ट अद्वितीय जानकारी के साथ ताकि किसी भी संख्या में डुप्लिकेट आपके नेटवर्क पर व्यक्तिगत होस्ट बन जाएं। दूसरे शब्दों में, एक बार इंस्टॉल करें और फिर गेस्ट के जितने इंस्टेंस चाहिए उतने बनाएं, प्रत्येक अपने स्वयं के होस्टनाम, MAC पता, IP पते और ऐसे के साथ। पूरी तरह से स्क्रिप्ट करने योग्य और वह सब। तो कृपया मेरा अनुसरण करें।

नोट: यह छवि Wikimedia से ली गई है, CC BY 2.0 के तहत लाइसेंस प्राप्त।

कम कुशल तरीका

आइए एक पल के लिए virt-clone पर संक्षेप में चर्चा करें। यह एक बुरी उपयोगिता नहीं है, लेकिन इसका उपयोग डिस्ट्रीब्यूशन में मानक नहीं है। कुछ GUI घटक को शिप करते हैं, Virtual Machine Manager के हिस्से के रूप में, अन्य कमांड लाइन टूल भी प्रदान करते हैं। दोनों मामलों में, क्लोन को केवल नई अद्वितीय ID और MAC पता असाइन किया जाएगा, लेकिन कोई अन्य जानकारी नहीं। कॉन्फ़िगरेशन फाइलें /etc/libvirt/qemu के तहत संग्रहीत की जाएंगी।

यहां एक उदाहरण है:

अब, हम यह नहीं चाहते। पूर्ण नहीं।

क्लोनिंग + ट्रेड के उपकरण

अब, सही तरीका। आपको वांछित परिणाम प्राप्त करने के लिए बहुत कम उपकरणों की आवश्यकता होगी; वास्तव में, सिर्फ एक उपकरण, और इसे kpartx कहा जाता है, एक उपयोगिता जो पार्टीशन टेबल से डिवाइस मैप बना सकती है। विशेष रूप से यहां, आप इसका उपयोग अपने गेस्ट मशीनों के लिए पार्टीशन मैपिंग बनाने के लिए वर्चुअल डिस्क को क्वेरी करके कर सकते हैं। हम Linux का उपयोग करके प्रदर्शित करेंगे, लेकिन अधिकांश UNIX-आधारित सिस्टम काम करेंगे।

तो हमें वर्चुअल डिस्क से पार्टीशन टेबल पढ़ने की आवश्यकता है। पहले, हमें वर्चुअल डिस्क की एक प्रति बनानी होगी, क्योंकि प्रत्येक मशीन की अपनी होगी। यह क्लोन प्रक्रिया का एक धीमा चरण है, और यह इस बात पर निर्भर करेगा कि आपकी फाइलें कितनी बड़ी हैं और डिस्क कितनी धीमी हैं। सामान्य तौर पर, आपको एक विशिष्ट 20GB डिस्क फाइल को कॉपी करने के लिए कुछ मिनटों की आवश्यकता होगी।

cp <old disk file> <new disk file>

अब, पार्टीशन टेबल:

kpartx -a <virtual disk file>

यह कुछ आउटपुट उत्पन्न करेगा। वास्तव में, आप वर्चुअल मशीन के अंदर निहित प्रत्येक व्यक्तिगत पार्टीशन के लिए एक अलग मैपर देखेंगे। उदाहरण के लिए, यदि आपके पास / और /home है, तो आपके पास दो मैपर होंगे।

kpartx -av /kvm/disk.raw
add map loop0p1 (253:0): 0 4206592 linear /dev/loop0 2048
add map loop0p2 (253:1): 0 79677440 linear /dev/loop0 4208640

अब, संबंधित डिवाइस को माउंट करने और प्रति-होस्ट परिवर्तन करने की बात है:

mount /dev/mapper/<relevant partition loopback> /mountpoint

उदाहरण के लिए:

mount /dev/mapper/loop0p1 /mnt

अद्वितीय होस्ट परिवर्तन

अब आपके वर्चुअल मशीन को सबसे अधिक संभावना निम्नलिखित परिवर्तनों की आवश्यकता होगी:

/etc/hosts
/etc/HOSTNAME

और इस पर निर्भर करता है कि आप Debian या RedHat/SUSE का उपयोग कर रहे हैं, नेटवर्क कॉन्फ़िगरेशन, हालांकि ये आवश्यक नहीं हो सकते हैं यदि आप DHCP का उपयोग कर रहे हैं। हालांकि, यदि आप स्टेटिक IP पते का उपयोग कर रहे हैं, तो यह जरूरी है:

/etc/sysconfig/network/ifcfg-<device>

OR

/etc/network/interfaces

अन्य परिवर्तन आवश्यक हो सकते हैं, लेकिन ये बुनियादी हैं। एक बार जब आप परिवर्तनों को सहेज लेते हैं, umount। आपका अगला कदम नए क्लोन के लिए KVM कॉन्फ़िगरेशन फाइल को संपादित करना है। XML फाइलें सामान्य रूप से /etc/kvm/vm या /etc/libvirt/qemu डायरेक्टरी में रखी जाती हैं, यदि मशीनें Virtual Machine Manager का उपयोग करके ऑटो-बनाई गई थीं।

XML फाइल परिवर्तन

पहले, टेम्पलेट कॉन्फ़िगरेशन की एक प्रति बनाएं।

अब आपको अपने डोमेन की अद्वितीय ID, नाम और MAC पते को संपादित करने की आवश्यकता होगी। पहले की तरह, आपको किसी प्रकार के विशिष्टता तर्क को लागू करना होगा, शायद grep, awk और इंलाइन सर्च और रिप्लेस के साथ sed का उपयोग करके, साथ ही जब आवश्यक हो तो नियमित अभिव्यक्तियों की एक स्वस्थ खुराक, ताकि आप अपनी प्रक्रिया को पूरी तरह से स्क्रिप्ट कर सकें। स्वाभाविक रूप से, आपको हार्ड डिस्क निर्देश को सही फाइल पर इंगित करने की भी आवश्यकता होगी।

एक उदाहरण के रूप में, यहां उन कमांड्स का सेट है जिनकी आपको आवश्यकता हो सकती है:

sed -i -e 's/\<uuid\>.*/\<\/uuid\>/uuid\>dedoimedo\<\/uuid/'
file.xml

और grep के साथ यह सुनिश्चित करने के लिए कि यह काम करता है:

sed -i -e 's/\<uuid\>.*/\<\/uuid\>/uuid\>dedoimedo\<\/uuid/'
file.xml. | grep dedoimedo

<uuid>dedoimedo</uuid>

इसे एक साथ रखना

इसलिए, एक पूर्ण क्लोन स्क्रिप्ट होगी - मैं एक विशिष्ट RedHat उदाहरण दे रहा हूं, आप अपने स्वयं के समायोजन कर सकते हैं। इसी तरह, स्क्रिप्ट के कुछ भागों को आपके अपने तर्क की आवश्यकता होगी, जैसे पार्टीशन आउटपुट को कैसे पार्स करना है। इसके अलावा, आपको XML फाइलों के आउटपुट को पार्स करने और ओपनिंग और क्लोजिंग ब्रैकेट, उद्धरण चिह्न और अन्य वर्णों को हटाने में कुछ अतिरिक्त काम की आवश्यकता हो सकती है।

#!/bin/bash

# suspend template OS while cloning

virsh suspend <domain>
cp <old disk> <new disk>
virsh resume <domain>

kpartx -a <new disk>

# some logic to read relevant partitions

mount <desired partition> <mount point>

# some logic to parse contents of host-unique files

sed -i -e 's/old hostname line/new hostname line/' /etc/HOSTNAME
sed -i -e 's/old hostname line/new hostname line/' /etc/hosts
sed -i -e 's/old IP config/new IP config/' /etc/sysconfig/network/ifcfg-eth0

umount <mount point>

cp /etc/kvm/vm/old.xml /etc/kvm/vm/new.xml

# some logic to create new uuid, name, mac, etc
# some logic to parse XML files correctly

sed -i -e 's/old uuid/new uuid/' /etc/kvm/vm/new.xml
sed -i -e 's/old name/new name/' /etc/kvm/vm/new.xml
sed -i -e 's/old mac/new mac/' /etc/kvm/vm/new.xml
sed -i -e 's/old disk/new disk/' /etc/kvm/vm/new.xml

virsh create /etc/kvm/vm/new.xml

exit 0

और हम कर चुके हैं। बूट करें और आनंद लें!

भविष्य सबसे अधिक संभावना: virt-sysprep

यह पूरा ट्यूटोरियल बेकार हो जाता है यदि आपके बॉक्स पर virt-sysprep उपलब्ध है, जिसका शायद मतलब है कि आप अपने पसंदीदा ऑपरेटिंग सिस्टम के बाद के संस्करणों में से एक का उपयोग कर रहे हैं। हालांकि, एक व्यावसायिक वातावरण में, यह सबसे अधिक संभावना नहीं है, इसलिए उपकरण अधिकांश सिस्टम एडमिनिस्ट्रेटर्स के लिए उपलब्ध नहीं होगा। यदि आपको इसका उपयोग करने का मौका मिलता है, तो यह बुनियादी क्लोन टूल में कुछ वास्तव में आसान सुधार प्रदान करता है। मूल दस्तावेज़ से उद्धरण:

Virt-sysprep एक वर्चुअल मशीन को रीसेट या अनकॉन्फ़िगर करता है ताकि इससे क्लोन बनाए जा सकें। इस प्रक्रिया में चरणों में SSH होस्ट कुंजियों को हटाना, लगातार नेटवर्क MAC कॉन्फ़िगरेशन को हटाना, और यूजर अकाउंट्स को हटाना शामिल है। प्रत्येक चरण को आवश्यकतानुसार सक्षम या अक्षम किया जा सकता है। Virt-sysprep गेस्ट या डिस्क इमेज को स्थानांतरित करता है। गेस्ट को बंद होना चाहिए। यदि आप गेस्ट की मौजूदा सामग्री को संरक्षित करना चाहते हैं, तो आपको पहले डिस्क को कॉपी या क्लोन करना होगा।

हम इस आसान टूल पर अलग से एक अन्य ट्यूटोरियल में चर्चा करेंगे।

अधिक पठन

KVM मज़ा पर अधिक:

KVM + VirtualBox सद्भाव में रहना

KVM ब्रिज्ड नेटवर्क ट्यूटोरियल

KVM स्टोरेज और नेटवर्क प्रशासन

और यहां ESXi मशीनों को क्लोन करने का तरीका है - अवधारणा में समान

वर्चुअल मशीन डिस्क इमेज टूल्स का एक और शानदार संसाधन - libguestfs

निष्कर्ष

यह एक बहुत ही सरल और सुंदर ट्यूटोरियल है। मुझे लगता है कि आप इसे अन्य टूल्स के साथ ज्यादातर मैन्युअल क्लोनिंग प्रक्रियाओं को पूरक करने के रूप में बेहद उपयोगी पाएंगे। आपको कमांड का एक सेट मिलता है जिसे आप आसानी से एक ही BASH स्क्रिप्ट में रख सकते हैं, और फिर, बॉब्स योर अंकल।

एक अधिक गंभीर नोट पर, आपने KVM कॉन्फ़िगरेशन और फाइल स्थानों के बारे में थोड़ा और सीखा, virt-clone का एक बहुत ही प्रारंभिक उपयोग, वर्चुअल मशीन डिस्क को माउंट करने और partx का उपयोग करके प्रासंगिक पार्टीशन में डेटा संपादित करने का तरीका, जिसमें नेटवर्क और होस्ट कॉन्फ़िगरेशन शामिल हैं, और अपने वर्चुअल डोमेन को अद्वितीय फ़ील्ड असाइन करने का तरीका। और libguestfs भी है। प्लस कुछ अन्य अत्यधिक उपयोगी गाइड। कुल मिलाकर, पांच मिनट के काम के लिए बुरा नहीं।

अंत में, virt-sysprep क्लोनिंग को इतना आसान बना देता है, हालांकि, मैन्युअल विधि, जबकि थोड़ी अधिक जटिल, फूलप्रूफ है। आप इसके साथ कुछ भी कर सकते हैं जो आप चाहते हैं, और आप मौजूदा कमांड-लाइन स्विच और विकल्पों के सबसेट तक सीमित नहीं हैं। यह हमेशा काम करेगा, और इसे हमेशा पूरी तरह से स्क्रिप्ट किया जा सकता है। शानदार।

खैर, मुझे लगता है कि यह सब होगा।

चीयर्स।

  1. चरण-दर-चरण गाइड: VMware सर्वर में वर्चुअल मशीन क्लोन करना चरण-दर-चरण गाइड: VMware सर्वर में वर्चुअल मशीन क्लोन करना

    यदि आप वर्चुअलाइजेशन के प्रशंसक हैं, तो आप जल्दी या बाद में VMware सर्वर के सामने आएंगे। सर्वर एक मुफ्त समाधान है जो आपको अपने मौजूदा डेस्कटॉप के ऊपर विभिन्न ऑपरेटिंग सिस्टम के कई उदाहरण चलाने की अनुमति देता है, जिससे आपके सामने दक्षता, उत्पादकता, मॉड्यूलरिटी, परीक्षण और ट्वीकिंग की दुनिया खुल जाती

  1. VirtualBox में 3D त्वरण मास्टर करें: विंडोज VM के लिए OpenGL सक्षम करें VirtualBox में 3D त्वरण मास्टर करें: विंडोज VM के लिए OpenGL सक्षम करें

    यह वर्चुअल मशीनों में 3D वर्चुअलाइजेशन को कॉन्फ़िगर करने और उपयोग करने के लिए समर्पित तीन लेखों में से दूसरा है। आज, हम सीखेंगे कि VirtualBox में स्थापित विंडोज वर्चुअल मशीनों के लिए OpenGL एप्लिकेशन (और गेम) के लिए 3D त्वरण कैसे सक्षम करें, चाहे वह विंडोज या लिनक्स होस्ट पर स्थापित हो। पहले लेख मे

  1. VMware VM में DirectX के साथ 3D त्वरण अनुकूलित करें - ट्यूटोरियल भाग 1 VMware VM में DirectX के साथ 3D त्वरण अनुकूलित करें - ट्यूटोरियल भाग 1

    मौजूदा होस्ट के ऊपर वर्चुअलाइज्ड ऑपरेटिंग सिस्टम चलाना एक शानदार विचार है। यह मजेदार है, यह कूल है, यह आपको अपने वास्तविक प्लेटफॉर्म पर प्रतिबद्ध होने से पहले सॉफ़्टवेयर के साथ प्रयोग करने की अनुमति देता है, यह आपको उन चीजों को करने की अनुमति देता है जो आप सामान्य रूप से करने की हिम्मत नहीं करेंगे,