क्या मैं अपने amazon EC2 उदाहरण के रूट EBS उपकरण को बदल सकता हूँ?


107

मेरे पास ईबीएस समर्थित अमेज़ॅन ईसी 2 उदाहरण है। मैं इस उदाहरण पर रूट डिवाइस को बदलना चाहूंगा। क्या आप इसके बारे में जाने के लिए सबसे अच्छा तरीका बता सकते हैं?

मैं केवल ब्लॉक डिवाइस की कई विशेषताओं को बदलने के बारे में दस्तावेज ढूंढता हूं, लेकिन वे इसे रूट डिवाइस के रूप में सेट करना शामिल नहीं करते हैं।

जवाबों:


191

हां, यह आसान है:

  1. उदाहरण रोकें।
  2. रूट EBS वॉल्यूम को अलग करें।
  3. रूट के रूप में वैकल्पिक ईबीएस मात्रा संलग्न करें: /dev/sda1
  4. उदाहरण शुरू करें।

यह बताता है कि आपका वैकल्पिक ईबीएस वॉल्यूम बूट करने योग्य है, निश्चित रूप से - इसमें बूट करने योग्य ओएस छवि शामिल है।


50
कुंजी "जड़ के रूप में" है - /dev/sda1वास्तव में!
असीम किशोर

6
धन्यवाद, यह बहुत अच्छा है। एक गोचा यह है कि ऐसा होने पर DNS / IP बदल सकते हैं, इसलिए किसी भी DNS / Elastic IP, et cetera को अपडेट करना सुनिश्चित करें। मैंने यह जानने की कोशिश में कुछ समय बिताया कि मैं इसमें अब और क्यों नहीं आ सकता, और यही कारण था।
मैरोनी

13
न तो /dev/sdaहै और न ही /dev/sda1मेरे लिए काम किया, लेकिन /dev/xvdaनहीं किया।
भास्करें

8
यार, वह डरावना था। /dev/sda- काम नहीं किया। /dev/sda1, dev/sdf- काम किया, लेकिन उदाहरण बूट नहीं किया। /dev/xvdaकाम किया।
एलेक्स फोर्टुना

13
जो नाम आपको उपयोग करना चाहिए वह इस आदेश का परिणाम है: aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceNameमेरे मामले में/dev/xvda
निकोस

42

मेरे पास चयनित उत्तर में टिप्पणी जोड़ने के लिए पर्याप्त प्रतिनिधि नहीं है, लेकिन मैं यह बताना चाहता हूं कि मेरे लिए, /dev/sda1काम नहीं किया (रूट के रूप में संलग्न नहीं किया गया), लेकिन /dev/xvdaकाम किया (रूट के रूप में संलग्न) का उपयोग करना। उदाहरण HVM का उपयोग करते हुए नए t2.micro में से एक है।


मुझे लगता है कि मशीनें जो VPC में हैं, प्रारूप / dev / xv * के डिवाइस नाम स्वयं काम करती हैं और आपको प्रारूप / dev / sd * में नाम देने की आवश्यकता नहीं है। यह एक अवलोकन है - मैं विश्वास के साथ यह कहने के लिए कोई विशेषज्ञ नहीं हूं।
मयंक जायसवाल

मेरे पास इस विवरण से मेल खाने वाला एक उदाहरण है, जो रूट डिवाइस को अलग करने और पुन: व्यवस्थित करने के बाद बूट करने में असमर्थ है ("रूट डिवाइस खोजने में असमर्थ")। मैं इस उत्तर की कोशिश करना चाहता हूं, लेकिन अगर मैं इसे संलग्न नहीं करता हूं /dev/sda1तो AWS ने मेरा उदाहरण शुरू करने से इनकार कर दिया है। क्या कोई अन्य सेटिंग है जिसे मुझे वैकल्पिक रूट डिवाइस नाम का उपयोग करने के लिए कॉन्फ़िगर करने की आवश्यकता है?
जैक ओ'कॉनर

लिनक्स के लिए देव / sda1 / विंडोज के लिए देव / xvda
लुइस

इसके अलावा, विभाजन की पहचान करना सुनिश्चित करें, / dev / sda 1 , /dev/sdaअमान्य है लेकिन /dev/sda1ठीक है।
थोरसुमोनर

16

Diomidis Spinellis की टिप्पणी के स्वीकृत उत्तर के थ्रेड में टिप्पणी को विस्तृत करने के लिए, उस डिवाइस के फाइल सिस्टम लेबल की जांच करना महत्वपूर्ण है जिसे आप अपने नए रूट डिवाइस के रूप में स्विच करने का प्रयास कर रहे हैं। अपने स्वयं के सर्वर माइग्रेशन की समस्या का निवारण करते समय, मुझे अपने उदाहरण को बूट करने से पहले निम्न करना होगा:

e2labelअपने नए रूट डिवाइस के लिए आपके द्वारा बनाए गए ext2 / ext3 / ext4 फाइल सिस्टम पर लेबल को बदलने के लिए कमांड का उपयोग करें ।

सबसे पहले, अपने वर्तमान रूट डिवाइस के लिए फाइलसिस्टम लेबल की जाँच करें।

$ sudo e2label /dev/xvda1
cloudimg-rootfs

नया डिवाइस सेट करें जिसमें समान फाइल सिस्टम लेबल हो।

$ sudo e2label /dev/xvdg 'cloudimg-rootfs'

मेरे मामले में, लेबल था cloudimg-rootfs। कभी-कभी यह बस होगा /

यह समझना महत्वपूर्ण है कि e2label कैसे काम करता है; man e2labelअपनी मशीन पर जाँच करें या अधिक जानकारी के लिए http://linux.die.net/man/8/e2label पर जाएं ।


1
यह इतना अविश्वसनीय रूप से महत्वपूर्ण है, मैं यह नहीं समझ सकता कि यह उत्तर अधिक सामान्यतः क्यों नहीं मिलता है।
ays0110

3

यह सुझाव दिया गया समाधान है मूल रूट मात्रा को आप इसे रोकने के बाद मूल उदाहरण से अलग कर सकते हैं। रूट वॉल्यूम / देव / sda1 पर संलग्न है। एक बार जब यह अलग हो जाता है, तो कृपया इसे नए उदाहरण में संलग्न करें। वॉल्यूम संलग्न होने के बाद, आपको इसे ओएस से माउंट करना पड़ सकता है। इसके माउंट होने के बाद, आपको इसके भीतर डेटा देखना चाहिए।

नई कुंजी जोड़ने के बाद, आप इसे अलग कर सकते हैं और मूल उदाहरण में / dev / sda1 में संलग्न कर सकते हैं।

मेरा सुझाव है कि कोई भी बदलाव करने से पहले रूट वॉल्यूम का एक स्नैपशॉट बनाएं।

किसी भी समाधान को आजमाने से पहले सिर्फ महत्वपूर्ण उदाहरणों या हाजिर उदाहरणों में प्रयास करें


1

यदि आप CloudFormation के माध्यम से ऐसा करना चाहते हैं, तो आपको निम्नलिखित कार्य करने होंगे:

  1. मौजूदा रूट वॉल्यूम (कंसोल या CLI के माध्यम से) से स्नैपशॉट बनाएं
  2. इस स्नैपशॉट से नए एएमआई बनाएं - यहां रूट वॉल्यूम का आकार बढ़ाएं, सुनिश्चित करें कि आप सही वर्चुअलाइजेशन समय (पैरावर्टिकल या एचवीएम) का चयन करें।
  3. अपने AWS :: EC2 :: इंस्टेंस संसाधन पर, आपने जो नया AMI बनाया है, उसकी ImageId पैरामीटर सेट करें

अपने ढेर को तैनात करें। यह आपके उदाहरण को फिर से बनाएगा, इसलिए सुनिश्चित करें कि आप एक इलास्टिक IP पते का उपयोग कर रहे हैं या DNS का उपयोग कर रहे हैं।

आपको यह वर्कअराउंड करने का कारण यह है क्योंकि CF आपको EC2 BlockDeviceMappings पर रूट वॉल्यूम का आकार समायोजित करने या रूट वॉल्यूम के SnapshotId को समायोजित करने की अनुमति नहीं देगा।


0

जब आपका वॉल्यूम माउंट किया जाता है, तो यह संख्याओं के साथ एक पश्च-निर्धारण प्राप्त करता है, जैसे: जब /dev/sdaमाउंट किया जाता है, /dev/sda1, /dev/sda2तो आपके द्वारा किए गए विभाजन के आधार पर इसका माउंट किया जाता है । जैसा कि हम रूट डिवाइस को ही बढ़ा रहे हैं, यह मानता है कि डिवाइस पहले से ही माउंट है, इसलिए हमें /dev/sda1वॉल्यूम को रूट डिवाइस के रूप में माउंट करने के लिए देना होगा । नोट: कोई भी रूट वॉल्यूम संलग्न नहीं होना चाहिए।

इन चरणों का पालन करें: 1) अपने संस्करणों पर जाएं, कार्रवाई से वॉल्यूम संलग्न करें चुनें। 2) अपने उदाहरण का चयन करें 3) रूट के रूप में बढ़ते के लिए, डिवाइस को /dev/sda1 4 के रूप में नाम दें ) अपनी आवृत्ति प्रारंभ करें।

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