सवाल मौजूदा पैरावार्चुअल लिनक्स एएमआई से एक एडब्ल्यूएस एचवीएम लिनक्स एएमआई बनाएं


मौजूदा पैरावार्चुअल (पीवी) एएमआई से हार्डवेयर वर्चुअल मशीन (एचवीएम) एएमआई बनाना संभव है।

मेरा प्रारंभिक विचार एक नया पीवी उदाहरण शुरू करना था और इसका उपयोग करना था ec2-create-image वायरसलाइजेशन प्रकार के रूप में एचवीएम निर्दिष्ट करते समय एक नई छवि बनाने के लिए आदेश। हालाँकि, ec2-create-image वर्चुअलाइजेशन प्रकार निर्दिष्ट करने के लिए कमांड लाइन पैरामीटर नहीं है।

क्या ऐसा करने का कोई और तरीका है?


37
2017-10-18 20:26


मूल




जवाब:


अद्यतन करें

एडब्ल्यूएस ने इस सुविधा को ईसी 2 एपीआई में सक्षम किया है। यह के रूप में उपलब्ध है --virtualization-type विकल्प aws ec2 register-image नए बोटो आधारित awscli में।

मूल उत्तर

हाँ! दुर्भाग्यवश, ऐसा करने का कोई सीधा तरीका नहीं है। इसके अलावा, कुछ पीवी उदाहरणों में कर्नेल और बूटलोडर संशोधन की आवश्यकता हो सकती है।

  1. अपने मौजूदा पीवी एएमआई से वॉल्यूम बनाएं। यदि यह आपका स्वयं का पीवी एएमआई था, तो आप स्नैपशॉट से वॉल्यूम बना सकते हैं। यदि यह तीसरी पार्टी एएमआई है, तो आपको एक इंस्टेंस लॉन्च करने और स्नैपशॉट लेने की आवश्यकता होगी।
  2. किसी भी एएमआई के साथ एक एचवीएम उदाहरण लॉन्च करें।
  3. उस एचवीएम उदाहरण को रोकें।
  4. उस उदाहरण से रूट वॉल्यूम को अलग करें।
  5. एचवीएम उदाहरण में रूट वॉल्यूम (/ dev / sda1 या / dev / sda अगर इसे विभाजित किया गया था) के रूप में पीवी वॉल्यूम संलग्न करें।
  6. रन ec2-create-image एचवीएम उदाहरण पर।
  7. अपने नए एचवीएम एएमआई के साथ अन्य उदाहरण लॉन्च करें।

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


21
2017-10-22 14:22



मैंने चरण 1-5 की कोशिश की और यह मेरे लिए काम नहीं किया, क्योंकि उदाहरण कुछ सेकंड के बाद बंद हो जाता है। क्या कोई क्रोट सेट अप करने और कर्नेल और बूटलोडर को स्थापित करने के बारे में विस्तृत जानकारी दे सकता है? पुराने और नए दोनों उदाहरण एएमआई लिनक्स हैं। धन्यवाद। - tolgamorf
यदि आपके पास एक काम कर रहे पीवी इंस्टेंस है, तो आप इसे चलाकर एचवीएम में बदल सकते हैं aws ec2 register-image पीवी छवि के स्नैपशॉट पर - वर्चुअलाइजेशन-प्रकार ध्वज के साथ। देख aws ec2 register-image help ब्योरा हेतु। - Jeff Strunk
मैंने अपने पीवी इंस्टेंस का उपयोग करके एक एचवीएम छवि बनाई है aws ec2 register-image। तब मैंने उस छवि से एक नया एचवीएम उदाहरण लॉन्च किया। हालांकि सिस्टम बूट नहीं होगा। - tolgamorf
Aws ec2 फोरम के माध्यम से खोदने के बाद, मैं एक समाधान के साथ आया जिसमें रूपांतरण मैन्युअल रूप से फ़ाइलों को बदलकर किया जाता है। मैं जल्द ही एक जवाब लिखूंगा। - tolgamorf
@tolgamorf क्या आपको याद है कि आपने क्या किया? मुझे भी यही समस्या हो रही है। - Dmitry Minkovsky


मेरे मामले में, मुझे उस उदाहरण के बाद मैन्युअल रूप से रूपांतरण करना पड़ा जो मैंने उपयोग किया था aws ec2 register-image बूट नहीं किया मेरा समाधान पर आधारित है ये पद पर एडब्ल्यूएस ईसी 2 फोरम

तैयारी

सुनिश्चित करें कि सभी वॉल्यूम एक ही उपलब्धता क्षेत्र में हैं।

  1. एसएसएच आपकी पीवी मशीन पर जिसे आप माइग्रेट करना चाहते हैं और सभी अपडेट लागू करना चाहते हैं, फिर लॉग आउट करें।

  2. एडब्ल्यूएस कंसोल पर जाएं और उसी आधार एएमआई का चयन करके एक नया एचवीएम इंस्टेंस लॉन्च करें जो पीवी सिस्टम से बनाया गया था (मेरे मामले में, अमेज़ॅन 64-बिट लिनक्स एएमआई)।

  3. इस नए उदाहरण के लिए एसएसएच और सभी अपडेट लागू करें, फिर लॉग आउट करें।

  4. एडब्ल्यूएस कंसोल पर जाएं और पीवी इंस्टेंस को रोकें। रूट डिवाइस का एक स्नैपशॉट लें और एक नई मात्रा बनाएं (SOURCE VOLUME) इस स्नैपशॉट से।

  5. एचवीएम उदाहरण बंद करो। नए इंस्टेंस पर रूट डिवाइस का स्नैपशॉट लें और एक नई वॉल्यूम बनाएं (TARGET VOLUME) इस स्नैपशॉट से।

  6. एडब्ल्यूएस कंसोल का उपयोग करना:

    • संलग्न करें SOURCE VOLUME के रूप में नए उदाहरण के लिए /dev/xvdf
    • संलग्न करें TARGET VOLUME के रूप में नए उदाहरण के लिए /dev/xvdg

रूपांतरण प्रक्रिया

  1. नए उदाहरण के लिए एसएसएच और रूट पहुंच प्राप्त करें:

    sudo su
    
  2. स्रोत और लक्ष्य ड्राइव माउंट करें।

    mkdir -p /mnt/source && mount /dev/xvdf /mnt/source
    mkdir -p /mnt/target && mount /dev/xvdg1 /mnt/target
    

    मेरे मामले में, डिवाइस थे /dev/xvdf (स्रोत) और /dev/xvdg1 (लक्ष्य)। ये विभाजन की संख्या और जहां आपने उन्हें संलग्न किया है, के आधार पर आपकी कॉन्फ़िगरेशन में बदल सकते हैं (तैयारी में चरण 6 देखें)। उपयोग ls -al /dev/xvd* ड्राइव देखने के लिए।

  3. बैकअप /lib/modules/* (यदि पीवी अमी का कर्नेल नई एचवीएम मशीन से अलग है। इस मॉड्यूल का उपयोग एडब्ल्यूएस की कुछ सेवाओं द्वारा किया जाता है।)

  4. सबकुछ हटाएं लेकिन /boot लक्ष्य मात्रा पर:

    cd /mnt/target && ls | grep -v boot | xargs rm -Rf
    
  5. हटाना /boot स्रोत मात्रा पर:

    rm -Rf /mnt/source/boot
    
  6. सभी गुणों को संरक्षित करने के लिए स्रोत वॉल्यूम के डेटा को लक्ष्य मात्रा में कॉपी करें:

    rsync -aAXHPv /mnt/source/ /mnt/target
    
  7. संपादित करें /mnt/target/etc/fstab के लिये / विभाजन, ताकि यह संदर्भित करता है TARGET VOLUME जब चरण (8) में अपने अंतिम स्थान पर चढ़ाया जाता है। या तो एक लेबल या बस कुछ का उपयोग कर:

    /dev/xvda1 /     ext4    defaults,barrier=0 1 1
    

फिर बहाल करें /lib/modules/ जिसे चरण 3 में बैक अप लिया गया था। (यदि पीवी एमी का कर्नेल नई एचवीएम मशीन से अलग है।)

  1. सिस्टम को रोकें और एडब्ल्यूएस कंसोल का उपयोग करके सभी वॉल्यूम अलग करें। संलग्न करें TARGET VOLUME नए उदाहरण के रूप में /dev/xvda

    यह सुनिश्चित करना सुनिश्चित करें कि मूल रूट डिवाइस को कहाँ रखा गया था। ज्यादातर मामलों में, यह होना चाहिए /dev/xvda

  2. अपना एचवीएम उदाहरण शुरू करें। अब यह आपके पीवी सिस्टम का सटीक डुप्लिकेट होना चाहिए। अगर सबकुछ ठीक दिखता है, तो अब आप अपने पीवी इंस्टेंस को भी हटा सकते हैं SOURCE VOLUME


13
2018-03-27 21:17



आप बस ऐसा क्यों नहीं करते हैं rm -f /boot तथा cp -a /mnt/source/boot /mnt/target? - michelem
@Michelem अगर मुझे सही याद है, तो मैंने इसे पहले स्थान पर करने की कोशिश की। मशीन बूट नहीं हुई थी। - tolgamorf
@tolgamorf इस प्रतिबिंबित करने के लिए उत्तर को अद्यतन करने का कोई मौका? - Dan Tenenbaum
ये निर्देश वास्तव में सहायक थे (और मेरे लिए काम किया !!) लेकिन मेरे पास एक आखिरी सुझाव है। चूंकि मूल प्रश्न एचवीएम एएमआई बनाने के बारे में था, इसलिए उस चरण को निहित न करें, उदाहरण को रोकने और इसे से एएमआई बनाने का अंतिम चरण जोड़ें (और फिर उदाहरण को समाप्त करना)। इसके अलावा, मेरे पास @DanGravell के समान ही मुद्दे थे और मैं चुंबकीय भंडारण का उपयोग नहीं कर रहा हूं, इसलिए ये सामान्य समस्याएं हो सकती हैं जिन्हें उत्तर में संबोधित किया जा सकता है। - Dan Tenenbaum
बहुत धन्यवाद! इसने मुझे बहुत समय बचाया, इसे fstab भाग को साफ़ करने के लिए संपादित किया जो मुझे थोड़ा उलझन में डाल दिया। चरण (4) के दौरान सावधान रहें, मैंने किसी भी तरह अस्थायी वॉल्यूम की जड़ को हटा दिया है, न कि लक्ष्य, उस वॉल्यूम को तोड़ना और प्रक्रिया को पुनरारंभ करना पड़ा। - Zar


TLDR:

ec2-register -a x86_64 -d '3.15.7-200.fc20.x86_64' -n 'Fedora_20_HVM_AMI'  --sriov simple --virtualization-type hvm -s snap-b44feb18 --root-device-name /dev/sda1 

विस्तृत कदम:

आगे के आधार पर जवाब देना जेफ स्ट्रंक की प्रतिक्रिया चरणों को सरल बनाने और ec2 रजिस्टर छवि पर थोड़ा और विवरण देने के लिए:

  1. पीवी छवि का उपयोग कर इंस्टेंस बनाएं। अपने इच्छित परिवर्तनों को बनाएं / अपडेट करें।

  2. उपरोक्त उदाहरण से छवि बनाएँ।

  3. EC2> लोचदार ब्लॉक स्टोर> ईसी 2 कंसोल में स्नैपशॉट के तहत उपरोक्त एएमआई द्वारा उपयोग की गई स्नैपशॉट आईडी खोजें।

    या यदि आपके पास ec2 api उपकरण सेटअप है:

    ec2-description-images ami-id_of_above_created_ami

    और एमी के लिए स्नैपशॉट आईडी खोजें

    .. आगे के चरणों के लिए धारणाएं: आपकी ec2 कुंजी और एपीआई उपकरण सेट और उपयोग करने के लिए तैयार हैं:

  4. उपरोक्त स्नैपशॉट का उपयोग करके एक नया एचवीएम एएमआई पंजीकृत करें: उदाहरण:

ec2-register -a x86_64 -d '3.15.7-200.fc20.x86_64' -n   'फेडोरा_20_एचवीएम_एएमआई' - एसआरओवी सरल - वर्चुअलाइजेशन-प्रकार एचवीएम-एस   स्नैप-बी 44feb18 --root-device-name / dev / sda1

कहा पे

  • -डी एएमआई विवरण है
  • -एन एएमआई नाम है
  • चरण 3 से स्नैपशॉट आईडी है।
  • -a वास्तुकला है
  • - एचवीएम बनाने के लिए virtualization- प्रकार की आवश्यकता है
  • --sriov उन्नत नेटवर्किंग को सक्षम करने के लिए है, हालांकि यह अनावश्यक हो सकता है, सुनिश्चित नहीं है।

अधिक जानकारी के लिए:


10
2017-08-02 04:16



जब तक मैं कुछ गलत नहीं कर रहा हूं, यह बाजार एएमआई के लिए काम नहीं करेगा जो आवृत्ति प्रकारों को प्रतिबंधित करता है। आधिकारिक मोंगोडीबी पैरावार्चुअल एएमआई को एचवीएम में परिवर्तित करने का प्रयास किया, और जब मैं एचवीएम एएमआई बना सकता था, तो यह इसके साथ एक एचवीएम-इंस्टेंस लॉन्च नहीं करेगा। - Matt Beckman
@MattBeckman मुझे एएमआई प्रतिबंध के बजाय अंतर्निहित कर्नेल / बूटलोडर समर्थन के बारे में लगता है। फेडोरा के लिए ऊपर काम करता है लेकिन अमेज़ॅन लिनक्स के लिए नहीं। वहां आपको जेफ स्ट्रंक उत्पत्ति द्वारा सुझाए गए तरीके से जाना होगा। - Anshu Prateek
यह @ AnshuPrateek काम किया - Atmesh Mishra


आप इसे एडब्ल्यूएस वेब इंटरफ़ेस के अंदर से कर सकते हैं। पर जाए स्नैपशॉट, वांछित स्नैपशॉट पर क्लिक करें जिसे आप एचवीएम में कनवर्ट करना चाहते हैं और क्लिक करें कार्रवाई और फिर चित्र बनाएं। बनाएँ छवि विज़ार्ड में ड्रॉपडाउन में चयन करें HVM


2
2017-07-24 18:31



मैंने बस यह कोशिश की, लेकिन यह उदाहरण की तरह loos ठीक से बूट नहीं होगा। इसे शुरू करने के कुछ ही क्षण बाद, यह केवल बंद राज्य में ही हो जाता है। - ovi


यहां सभी सुझावों का प्रयास करने के बाद, जिनमें से कोई भी मेरे लिए काम नहीं करता, मुझे इस विषय पर एक उत्कृष्ट ब्लॉग प्रविष्टि मिली https://www.opswat.com/blog/aws-2015-why-you-need-switch-pv-hvm ।

प्रक्रिया के तत्व (विवरण) हैं:

  1. इंस्टॉल करें grub पीवी इंस्टेंस पर माइग्रेट किया जाना चाहिए (स्रोत उदाहरण)।

  2. स्रोत उदाहरण (स्रोत वॉल्यूम, एसवी) पर रूट वॉल्यूम का एक सावधानी पूर्वक स्नैपशॉट बनाएं।

  3. एक अस्थायी HVM उदाहरण बनाएं जो वॉल्यूम माइग्रेट करेगा।

    1. मैंने एक अमेज़ॅन लिनक्स उदाहरण का इस्तेमाल किया
  4. एक गंतव्य वॉल्यूम (डीवी) बनाएं, और अस्थायी उदाहरण में यह और एसवी दोनों संलग्न करें।

    1. DV कम से कम एसवी के रूप में बड़ा होना चाहिए।

    2. एसवी के रूप में संलग्न करें /dev/{sd,xvd}f, और डीवी के रूप में /dev/{sd,xvd}g

    3. विभाजन DV:

    parted /dev/xvdg --script 'mklabel msdos mkpart primary 1M -1s print quit'

    partprobe /dev/xvdg

    udevadm settle

  5. न्यूनतम आकार एसवी के एफएस का आकार बदलें, और उपयोग करें dd इसे DV पर छवि।

    1. स्रोत वॉल्यूम के एफएस को साफ करें: e2fsck -f /dev/xvdf

    2. इसे कम करें: resize2fs -M /dev/xvdf

    3. Resize2fs से आउटपुट का निरीक्षण करें (उदाहरण के लिए Resizing the file system on /dev/xvdf to 269020 (4k) blocks) और अगले चरण के लिए इसे नोट करें।

    4. DV के लिए डुप्लिकेट एसवी: dd if=/dev/xvdf of=/dev/xvdg1 bs=<block size from previous step, here 4k> count=<use block count from last step, here 269020>

    5. नए विभाजन पर एफएस का विस्तार करें: resize2fs /dev/xvdg1

  6. इंस्टॉल करें grub डीवी के बूट ब्लॉक में

    1. अस्थायी रूप से DV पर डिवाइस फ़ाइलों को बनाएँ: mount /dev/xvdg1 /mnt; cp -a /dev/xvdg /dev/xvdg1 /mnt/dev/

    2. ग्रब फाइलें इंस्टॉल करें:

    rm -f /mnt/boot/grub/*stage*

    cp /mnt/usr/*/grub/*/*stage* /mnt/boot/grub/

    rm -f /mnt/boot/grub/device.map

    1. एक क्रोट पर्यावरण में grub स्थापित करें:

    cat << ARNIE | chroot /mnt grub --batch

    device (hd0) /dev/xvdg

    root (hd0,0)

    setup (hd0)

    ARNIE

  7. गंतव्य वॉल्यूम पर कुछ अन्य मामूली परिवर्तन करने के बाद, स्नैप करें वॉल्यूम, और इससे एएमआई बनाओ।

    1. अस्थायी डिवाइस फ़ाइलों को व्यवस्थित करें: rm -f /mnt/dev/xvdg /mnt/dev/xvdg1

    2. में /mnt/boot/grub/grub.conf, परिवर्तन root (hd0) सेवा मेरे root (hd0,0), जोड़ें (या प्रतिस्थापित करें console=*) console=ttyS0 कर्नेल लाइन के लिए, और यदि आवश्यक हो तो root=* साथ में root=LABEL=/ कर्नेल लाइन में

    3. में /mnt/etc/fstab, सुनिश्चित करें कि रूट एफएस की रेखा में एक लेबल संदर्भ है, उदाहरण के लिए

    LABEL=/ / ext4 defaults,noatime 1 1

    1. के साथ नई रूट एफएस लेबल e2label /dev/xvdg1 /

    2. अस्थायी उदाहरण से डीवी को अनमाउंट करें, अस्थायी उदाहरण से एसवी और डीवी दोनों को अलग करें।

    3. DV को स्नैप करें, और उस स्नैप से एएमआई छवि बनाएं।

  8. उस एचएमआई से एक एचवीएम उदाहरण लॉन्च करें। यह आपका माइग्रेटेड उदाहरण है।


1
2017-09-18 19:35