नोट: यह ट्यूटोरियल मानता है कि आपके पास 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 क्लोनिंग को इतना आसान बना देता है, हालांकि, मैन्युअल विधि, जबकि थोड़ी अधिक जटिल, फूलप्रूफ है। आप इसके साथ कुछ भी कर सकते हैं जो आप चाहते हैं, और आप मौजूदा कमांड-लाइन स्विच और विकल्पों के सबसेट तक सीमित नहीं हैं। यह हमेशा काम करेगा, और इसे हमेशा पूरी तरह से स्क्रिप्ट किया जा सकता है। शानदार।
खैर, मुझे लगता है कि यह सब होगा।
चीयर्स।