अमेज़ॅन EC2: एक मौजूदा पीवी एएमआई को एचवीएम में कैसे परिवर्तित किया जाए


82

सवाल:

पूरे सिस्टम सेटअप को दोबारा बनाए बिना मुझे अपने मौजूदा एएमआई के साथ नए एडब्ल्यूएस ईसी 2 वर्गों (आर 3, आई 2) का उपयोग कैसे करना चाहिए?

नई EC2 कक्षाएं केवल एचवीएम आधारित वर्चुअलाइजेशन का समर्थन करती हैं लेकिन मेरे पास केवल पीवीएम एएमआई छवियां हैं।


3
बस CentOS के साथ यह कोशिश की, लेकिन अंत में निम्नलिखित त्रुटि के साथ ins tep 10: / dev / xvdf के पास कोई संगत BIOS ड्राइव नहीं है।
टॉबी

आगे @ROMANARMY ने जो कहा है, मैं उत्तर देता हूं कि उत्तर को एक उचित उत्तर में विभाजित किया जाना चाहिए। तब आप इसे स्वीकार कर सकते हैं, इसलिए यह प्रश्न अनुत्तरित नहीं होगा। देखें stackoverflow.com/help/self-answer
टिम

@ टोबियास ज़ेंडर क्या आपको कभी सेंटोस के साथ यह काम मिला?
दिलेर

1
@ dennis.hempler हमने बहुत अधिक समय निवेश नहीं किया और सिर्फ नए उदाहरण बनाए
Tobias

जवाबों:


77

उत्तर:

  1. एक उबंटू एचवीएम लिनक्स शुरू करें, कोई भी संस्करण, नया

  2. मेरे मौजूदा एएमआई / पीवीएम लिनक्स के साथ एक उबंटू शुरू करें, और उन पर ग्रब पैकेज स्थापित करें: apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists

  3. PVM linux को रोकें

  4. PVM linux में डिस्च रूट (/ dev / sda1) विभाजन

  5. PVM linux रूट विभाजन को HVM linux चलाने के लिए कहीं अटैच करें, जैसे: / dev / sdf

  6. HVM लाइनक्स पर: mkdir -p /mnt/xvdf && mount /dev/xvdf /mnt/xvdf

  7. rsync -avzXA /boot/ /mnt/xvdf/boot/

  8. mount -o bind /dev /mnt/xvdf/dev && mount -o bind /dev/pts /mnt/xvdf/dev/pts && mount -o bind /proc /mnt/xvdf/proc && mount -o bind /sys /mnt/xvdf/sys

  9. chroot /mnt/xvdf

  10. grub-install --no-floppy --recheck --force /dev/xvdf

  11. update-grub2

  12. निकास चुरोट: CTRL + D

  13. एचवीएम लिनक्स बंद करो

  14. detach / dev / sda1 मूल रूट और detach / dev / sdf PVM रूट

  15. PVM रूट को / dev / sda1 के रूप में HVM लिनेक्स में जोड़ें

  16. एचवीएम लिनक्स शुरू करें, वॉयला!

  17. चल रहे एचवीएम लिनक्स से एक नई एएमआई छवि बनाएं, यह एचवीएम वर्चुअलाइज्ड होगा।


पूरी तरह से काम किया ... एक बार मैंने पीवीएम वॉल्यूम के रूप में ठीक उसी उपलब्धता क्षेत्र पर एचवीएम उदाहरण बनाया।
मेघुरफिन

2
ग्रब-इंस्टॉल चलाते समय मुझे निम्नलिखित चेतावनी मिलती है: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged.. /usr/sbin/grub-bios-setup: error: will not proceed with blocklists.फिर, सब कुछ अच्छा लग रहा है, लेकिन यह बूट नहीं करता है या मुझे कोई सुराग नहीं देता है, यह बूट क्यों नहीं हो रहा है।
पाउलो ने

3
यह पूरी तरह से मेरे लिए काम किया, बहुत बहुत धन्यवाद! मुझे डरावनी ग्रब चेतावनी मिली जो पाउलो नेव्स ने ऊपर बताई थी, लेकिन मेरे नए उदाहरण ने वैसे भी ठीक बूट किया।
गैरीओ

मेरे पास एक एएमआई लिनक्स पीवीएम उदाहरण है और मैं इसे एक नए एचवीएम एएमआई लिनक्स उदाहरण में स्थानांतरित करने की कोशिश कर रहा हूं। मैंने आपके समाधानों को लागू करने की कोशिश की, लेकिन मैं चरण 10 पर अटका हुआ हूं। क्या कोई कृपया बता सकता है कि उबंटू के बजाय नए एएमआई लिनक्स उदाहरण के लिए यह कैसे करें? धन्यवाद!
tolgamorf

1
नए इंस्टेंस प्रकार (जैसे C5) का उपयोग करते समय इंस्टेंस अनुपलब्ध है। xvd*इन उदाहरणों पर कोई नहीं है , केवल nvme*नामकरण परंपराएं हैं। xvdसही के साथ प्रतिस्थापित करने से nvmeकाम नहीं होता है। :(
एलेक्स

2

@Divyenduz का जवाब काम करता है लेकिन आधुनिक के लिए कुछ सफाई और स्पष्टीकरण की आवश्यकता है (लगभग 2019) AWS EC2। महत्वपूर्ण रूप से, आधुनिक इंस्टेंस क्लासेस डिवाइस नाम का अनुवाद अलग तरीके से करते हैं।

यहाँ मेरे संशोधित कदम हैं।

स्पष्टता के लिए, नोड्स हैं:

  • मूल PVM नोड जिसे आप HVM में अपग्रेड करना चाहते हैं "PVM01"
  • नया HVM नोड जिसे आप PVM01 की रूट डिस्क पर "HVM01" पर भेजेंगे

आगे की प्रक्रिया: मूल नोड PVM01 का बैकअप लें

  1. नोड PVM01 पर पूर्वापेक्षाएँ स्थापित करें

    • PVM01 पर ग्रब पैकेज स्थापित करें

      apt-get install  grub-pc  grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
      
  2. नोड PVM01 बंद करो

    • / Dev / sda1 का स्नैपशॉट बनाएं
    • या पूरे नोड का एएमआई बनाएं
  3. PVM01 पर मूल रूट वॉल्यूम का स्नैपशॉट बनाएं और इस स्नैपशॉट से नया वॉल्यूम बनाएं
    • PVM01 पर / dev / sda1 का स्नैप बनाएं
    • इस स्नैप से वॉल्यूम बनाएं
    • प्रत्येक संसाधन को अपने अनुसार लेबल करें
      • टैग नाम; मान: pvm01: / dev / sda1: स्नैपशॉट-फॉर-कन्वर्ज़न-टू-एचवीएम: 2019-07-01
      • आदि
  4. बनाएँ-उदाहरण: नया उबंटू एचवीएम उदाहरण "एचवीएम 01"। कोई भी उदाहरण वर्ग को काम करना चाहिए; हालाँकि, डिवाइस का नाम अलग हो सकता है, नीचे नोट्स देखें
    • मैंने बायोनिक उबंटू 18.04 HVM AMI ID ami-0a313d6098716f372 और उदाहरण वर्ग C5.XLARGE का उपयोग किया
  5. PVM01 रूट विभाजन (पिछले चरण से नया वॉल्यूम) को नए HVM01 / dev / sdf में संलग्न करें

    • नोट : C3 जैसे पुराने इंस्टेंस क्लासेज वॉल्यूम नाम / dev / xvdf में अनुवाद करेंगे
    • नोट : नए उदाहरण वर्ग जैसे C5 वॉल्यूम नाम / dev / nvme1 में अनुवाद करेंगे
      • नए उदाहरण वर्गों पर, रूट वॉल्यूम / dev / nvme0 - ZERO होगा
      • नए उदाहरण वर्गों में, संलग्न, द्वितीयक वॉल्यूम होगा / dev / nvme1 - ONE
    • संलग्न वॉल्यूम डिवाइस नाम पर ध्यान दें

    ssh PVM01 sudo fdisk -l

  6. HVM01 पर:

    # For xvdf, e.g. on C3.XLARGE
    DEVNAME=xvdf1
    # For nvme, e.g. on C5.XLARGE
    DEVNAME=nvme1n1
    mkdir -p /mnt/${DEVNAME} && mount /dev/${DEVNAME} /mnt/${DEVNAME}
    rsync -avzXA /boot/ /mnt/${DEVNAME}/boot/
    mount -o bind /dev /mnt/${DEVNAME}/dev && mount -o bind /dev/pts /mnt/${DEVNAME}/dev/pts && mount -o bind /proc /mnt/${DEVNAME}/proc && mount -o bind /sys /mnt/${DEVNAME}/sys
    chroot /mnt/${DEVNAME}
    grub-install --no-floppy --recheck --force /dev/${DEVNAME}
    update-grub2
    
  7. CTRL + D के साथ चिरोट से बाहर निकलें

  8. रोकें HVM01
  9. दोनों संस्करणों को अलग करें
    • detach / dev / nvme0 PVM01 रूट
      • नोट: यह C3 उदाहरण वर्ग पर / dev / sda1 होगा
    • detach / dev / $ {DEVNAME} (उपरोक्त स्क्रिप्ट से DEVNAME)
  10. PVM01 रूट वॉल्यूम को HVM01 को / dev / sda1 के रूप में संलग्न करें
    • एक बार फिर, / dev / sda1 नाम कंसोल में है; यह नाम / dev / nvme0 या / dev / xvda1 में अनुवादित होगा जो इस बात पर निर्भर करता है कि उदाहरण वर्ग कितना आधुनिक है
  11. HVM01 शुरू करें
  12. वैकल्पिक: अब चल रहे HVM01 से एक नई एएमआई छवि बनाएं, यह एचवीएम वर्चुअलाइज्ड होगा।

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