AWS EBS रूट वॉल्यूम का आकार कैसे कम करें?


16

EC2 उदाहरण बढ़ाना एक सांस की तरह आसान है (उदाहरण के लिए, एएमआई बनाएं, इससे एक उदाहरण लॉन्च करें और फिर स्टोरेज को बदलें)।

लेकिन इसे कम करना ज्यादा मुश्किल हो जाता है। मैं Amazon Web Services (AWS) EC2 इंस्टेंस इलास्टिक ब्लॉक स्टोर (EBS) रूट वॉल्यूम साइज़ को कम करना चाहता हूँ। नेट पर पुरानी उच्च स्तरीय प्रक्रियाओं के जोड़े हैं। अधिक विस्तृत संस्करण जो मुझे मिला है वह स्टैकऑवरफ्लो प्रश्न पर एक साल पुराना उत्तर है: मैं अपनी ईबीएस मात्रा क्षमता को कैसे कम कर सकता हूं , चरणों का एक उच्च स्तर है:

एक नया ईबीएस वॉल्यूम बनाएं जो वांछित आकार (जैसे / देव / xvdg) है

एक उदाहरण लॉन्च करें, और इसके लिए दोनों ईबीएस वॉल्यूम संलग्न करें

फ़ाइल सिस्टम (मूल रूट वॉल्यूम की) की जाँच करें: (जैसे) e2fsck -f / dev / xvda1

मूल रूप से मूल मात्रा को कम करें: (जैसे ext2 / 3/4) resize2fs -M -p / dev /vv1

डेटा को dd के साथ कॉपी करें:

  • एक चंक आकार चुनें (मुझे 16MB पसंद है)

  • गणना की संख्या की गणना (resize2fs आउटपुट से ब्लॉक की संख्या का उपयोग करके): ब्लॉक * 4 / (chunk_size_in_mb * 1024) - सुरक्षा के लिए थोड़ा ऊपर

  • डेटा कॉपी करें: (जैसे) dd if = / dev / xvda1 ibs = 16M of = / dev / xvdg obs = 16M count = 80

नए (छोटे) EBS वॉल्यूम पर फ़ाइल सिस्टम का आकार बदलें: (जैसे) resize2fs -p / dev / xvdg

फ़ाइल सिस्टम (मूल रूट वॉल्यूम की) की जाँच करें: (जैसे) e2fsck -f / dev / xvdg

अपने नए ईबीएस रूट वॉल्यूम को अलग करें, और इसे अपने मूल उदाहरण में संलग्न करें

मैं "कैसे" समाधान के लिए एक विस्तृत कदम खोजने में असमर्थ हूँ।

मेरा EBS रूट वॉल्यूम एक HVM उबंटू उदाहरण से जुड़ा हुआ है।

किसी भी तरह की सहायता की सच में प्रशंसा की जाएगी।


यह एक बहुत अच्छा कदम-दर-कदम "कैसे" समाधान की तरह दिखता है।
सिवायजोज़

dd - copy disk-to-disk dd if = / dev / xvdf of = / dev / xvdh bs = 4k count = 227613 e2fsck -f / dev / xvdh1 resize2fs -p / dev / xvdh1
sirkubax

जवाबों:


6

AWS कंसोल में:

  1. उस उदाहरण को बंद करें जिसे आप आकार बदलना चाहते हैं

  2. सक्रिय वॉल्यूम का एक स्नैपशॉट बनाएँ और फिर उस स्नैपशॉट से "सामान्य प्रयोजन SSD" वॉल्यूम बनाएँ।

  3. आकार में एक और "सामान्य प्रयोजन एसएसडी" वॉल्यूम बनाएं जो आप चाहते हैं।

  4. उदाहरण के लिए इन 3 संस्करणों को संलग्न करें:

    • / देव / sda1 सक्रिय मात्रा के लिए।
    • / dev / xvdf वॉल्यूम के लिए जो लक्ष्य आकार है।
    • / देव / xvdg सक्रिय मात्रा के स्नैपशॉट से बने वॉल्यूम के लिए।
  5. उदाहरण शुरू करें।

  6. SSH के माध्यम से नए उदाहरण पर लॉग ऑन करें।

  7. ये नई निर्देशिका बनाएं:

mkdir /source /target

  1. नए वॉल्यूम पर एक ext4 फाइल सिस्टम बनाएं:

mkfs.ext4 /dev/xvdf

  1. इसे इस निर्देशिका में माउंट करें:

mount -t ext4 /dev/xvdf /target

  1. यह बहुत महत्वपूर्ण है, फ़ाइल सिस्टम को पहचानने और इसे बूट करने के लिए लिनक्स के लिए एक e2label की आवश्यकता है, "e2label / dev / xvda1" का उपयोग एक सक्रिय उदाहरण पर यह देखने के लिए कि यह क्या होना चाहिए, इस मामले में लेबल है: / "

e2label /dev/xvdf /

  1. स्नैपशॉट से बनाई गई मात्रा को माउंट करें:

mount -t ext4 /dev/xvdg /source

  1. सामग्री की प्रतिलिपि बनाएँ:

rsync -ax /source/ /target

नोट: कोई "/" निम्नलिखित "/ लक्ष्य" नहीं है। इसके अलावा, सिम्बलिंक और अटार्स के बारे में कुछ त्रुटियां हो सकती हैं, लेकिन आकार अभी भी सफल था

  1. फ़ाइल सिस्टम को आगे बढ़ाएँ:

umount /target
umount /source

  1. AWS कंसोल में वापस: उदाहरण रोकें, और सभी संस्करणों को अलग करें।

  2. उदाहरण के लिए नए आकार का वॉल्यूम संलग्न करें: "/ dev / sda1"

  3. उदाहरण शुरू करें, और इसे बूट करना चाहिए।

STEP 10 IS महत्वपूर्ण : ऊपर उल्लिखित "e2label" के साथ नए वॉल्यूम को लेबल करें, या इंस्टेंस में बूट करने के लिए उदाहरण दिखाई देगा, लेकिन कनेक्शन की जांच पास नहीं करेगा।


9
मैं कई बार (Ubuntu 14.04) इन चरणों से गुजरा हूं और हर बार जब मैं नया वॉल्यूम संलग्न करता हूं, तो उदाहरण बंद हो जाता है। किसी और को इस मुद्दे का अनुभव? यह मेरे दिमाग को लुट रहा है!
thiesdiggity

2
आप अकेले नहीं हैं। मैंने इस और अन्य समाधानों की कोशिश की है और आपके अच्छे स्व की तरह, मेरा उदाहरण भी ठीक है।
ब्लेयरमिस्टर

1
@blairmeister मैं एक ही मुद्दा था, लेकिन यह काम करने में कामयाब रहा! नीचे दिए गए मेरे उत्तर पर एक नज़र डालें यदि आप अभी भी अटके हुए हैं :)
Ruben Serrate

मेरे e2label Cloudimg-rootfs है ... इन सभी चरणों का पालन करने पर मैं Ubuntu 14.04 पर पुष्टि कर सकता हूं
NineCattoRules

1
मैं इस जवाब को नीचा दिखा रहा हूं क्योंकि यह उपयोगकर्ताओं को अनजाने में होने वाले नुकसान से बचाने के लिए वॉल्यूम (जैसे बूट वॉल्यूम) के लिए पर्याप्त उपयोग के मामलों को कवर नहीं करता है।
जेसी एडेलमैन

6

यदि वॉल्यूम को रूट (बूट करने योग्य) डिवाइस के रूप में उपयोग किया जाता है, तो कोई भी अन्य समाधान काम नहीं करेगा।

नव निर्मित डिस्क बूट विभाजन को याद कर रही है, इसलिए इसे GRUB स्थापित करने की आवश्यकता होगी और उदाहरण के पहले कुछ झंडे सही तरीके से सेट होने चाहिए, इसे रूट वॉल्यूम के रूप में उपयोग कर सकते हैं।

रूट वॉल्यूम कम करने के लिए मेरा (आज का, काम करने वाला ) समाधान है:

पृष्ठभूमि: हमारे पास एक उदाहरण ए है, जिसकी मूल मात्रा हम सिकोड़ना चाहते हैं। आइए इस वॉल्यूम को VA कहते हैं। हम VA को 30GB से सिकोड़ना चाहते हैं तो 10GB कहते हैं

  1. उदाहरण के रूप में एक ही OS के साथ एक नया Ec2 उदाहरण, B बनाएँ, भंडारण के रूप में, एक वॉल्यूम चुनें जो VA के समान है, लेकिन 10GB के आकार के साथ। (या आपका लक्ष्य आकार जो भी हो)। तो अब हमारे पास एक उदाहरण B है जो इस नए वॉल्यूम (इसे VB कहते हैं) को रूट वॉल्यूम के रूप में उपयोग करता है।
  2. एक बार नया उदाहरण (B) चल रहा है। इसे रोकें और इसे रूट वॉल्यूम (VB) अलग करें।

नोट: निम्नलिखित कदम ज्यादातर @bill समाधान से लिए गए हैं:

  1. वह उदाहरण बंद करें जिसे आप आकार बदलना चाहते हैं (ए)।

  2. वॉल्यूम VA का स्नैपशॉट बनाएँ और फिर उस स्नैपशॉट से "सामान्य प्रयोजन SSD" वॉल्यूम बनाएँ। इस वॉल्यूम को हम VASNAP कहेंगे।

  3. अमेज़ॅन लिनक्स के साथ एक नया उदाहरण स्पिन करें, हम इस उदाहरण को सी कहेंगे। हम इस उदाहरण का उपयोग VASNAP की सामग्री को VB में कॉपी करने के लिए करेंगे। हम शायद इन चरणों को करने के लिए उदाहरण ए का उपयोग कर सकते हैं, लेकिन मैं इसे एक स्वतंत्र मशीन में करना पसंद करता हूं।

  4. VB के लिए C. / dev / xvdf को निम्न संस्करणों में संलग्न करें। VASNAP के लिए / देव / xvdg

  5. रिबूट उदाहरण सी।

  6. उदाहरण के लिए C को SSH के माध्यम से लॉग ऑन करें।

  7. ये नई निर्देशिका बनाएँ:

mkdir /source /target

  1. एक ext4 फाइल सिस्टम के साथ VB के मुख्य विभाजन को प्रारूपित करें:

mkfs.ext4 /dev/xvdf1

यदि आपको कोई त्रुटि नहीं मिलती है, तो चरण 11 पर आगे बढ़ें। अन्यथा, यदि आपके पास नहीं है /dev/xvdf1, तो आपको निम्नलिखित i-vii द्वारा विभाजन बनाने की आवश्यकता है:

i) यदि /dev/xvdf1किसी भी कारण से अस्तित्व में नहीं है, तो आपको इसे बनाने की आवश्यकता है। पहले दर्ज करें:

sudo fdisk /dev/xvdf

ii) दर्ज करके डिस्क को पोंछें: wipefs

iii) दर्ज करके एक नया विभाजन बनाएँ: n

iv) pप्राथमिक विभाजन बनाने के लिए दर्ज करें

v) डिफ़ॉल्ट सेटिंग्स के साथ जारी रखने के लिए एंटर दबाए रखें।

vi) जब यह फिर से कमांड मांगता है, तो wपरिवर्तन लिखने और छोड़ने के लिए दर्ज करें।

vii) सत्यापित करें कि आपके पास /dev/xvdf1विभाजन है: lsblk

आपको कुछ इस तरह देखना चाहिए:

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  250G  0 disk
└─xvda1 202:1    0  250G  0 part
xvdf    202:80   0   80G  0 disk
└─xvdf1 202:81   0   80G  0 part 
xvdg    202:96   0  250G  0 disk
└─xvdg1 202:97   0  250G  0 part

अब स्टेप 11 पर आगे बढ़ें।

  1. इसे इस निर्देशिका में माउंट करें:

mount -t ext4 /dev/xvdf1 /target

  1. यह बहुत महत्वपूर्ण है, फ़ाइल सिस्टम को लिनक्स को पहचानने और इसे बूट करने के लिए एक e2label की आवश्यकता है, "e2label / dev / xvda1" का उपयोग एक सक्रिय उदाहरण पर यह देखने के लिए कि यह क्या होना चाहिए, इस मामले में लेबल है: ""

e2label /dev/xvdf1 /

  1. माउंट VASNAP पर / स्रोत:

mount -t ext4 /dev/xvdg1 /source

  1. सामग्री की प्रतिलिपि बनाएँ:

rsync -vaxSHAX /source/ /target

नोट: कोई "/" निम्नलिखित "/ लक्ष्य" नहीं है। इसके अलावा, सिम्बलिंक और अटार्स के बारे में कुछ त्रुटियां हो सकती हैं, लेकिन आकार अभी भी सफल था

  1. उम्मेद वीबी:

umount /target

  1. AWS कंसोल में वापस: C से उदाहरण VB का पता लगाएं, और A से VA को अलग करें।

  2. नए आकार के वॉल्यूम (VB) को उदाहरण के लिए संलग्न करें: "/ dev / xvda"

  3. बूट उदाहरण ए, अब यह रूट डिवाइस 10GB है :)

  4. बी और सी दोनों उदाहरणों को हटा दें, और सभी संस्करणों को भी, लेकिन वीबी, जो अब ए की मूल मात्रा है।


आपका ओएस क्या है?
NineCattoRules

@NineCattoRules Amazon Linux
Ruben

मैंने Ubuntu 14.04 पर कोशिश की और यह काम नहीं करता है
NineCattoRules

@NineCattoRules Ouch ... मैं इसकी पुष्टि अमेज़ॅन लिनक्स के लिए काम करता हूं, हाल ही में करना पड़ा।
रुबेन

1
क्या हमें /dev/sda1@RubenSerrate के चरण 17 में वॉल्यूम को संलग्न नहीं करना चाहिए /dev/xvda?
alper

2

निम्नलिखित चरणों ने मेरे लिए काम किया

चरण 1. रूट एब्स वॉल्यूम का स्नैपशॉट बनाएं और स्नैपशॉट से नया वॉल्यूम बनाएं (चलो इस वॉल्यूम-कॉपी को कॉल करें)

चरण 2. वांछित आकार के साथ ईबीएस रूट वॉल्यूम के साथ नया उदाहरण बनाएं। (आइए इस वॉल्यूम-आकार को कॉल करें) इस ebs वॉल्यूम में बूटिंग के लिए सही विभाजन होगा। (स्क्रैच से एक नया ईबीएस वॉल्यूम बनाने से मेरे लिए काम नहीं किया गया)

चरण 3. एक उदाहरण में वॉल्यूम-आकार और वॉल्यूम-कॉपी संलग्न करें।

चरण 4. प्रारूप मात्रा-आकार बदलें।

sudo fdisk -l
    sudo mkfs -t ext4 /dev/xvdf1

नोट: सुनिश्चित करें कि विभाजन की मात्रा दर्ज /dev/xvdf1नहीं की गई है/dev/xvdf

चरण 5. माउंट वॉल्यूम-आकार और वॉल्यूम-कॉपी mkdir / mnt / copy mkdir / mnt / resize

sudo mount /dev/xvdh1 /mnt/copy
sudo mount /dev/xvdf1 /mnt/resize

चरण 6. कॉपी फ़ाइलें

rsync -ax /mnt/copy/ /mnt/resize

चरण 7. सुनिश्चित करें कि e2label रूट वॉल्यूम के समान है

sudo E2label /dev/xvdh1 > cloudimg-rootfs
sudo E2label /dev/xvdf1 cloudimg-rootfs

चरण 8. अद्यतन वॉल्यूम-कॉपी पर नई मात्रा udid से मिलान करने के लिए

/Boot/grub/grub.cfg में uudid खोजें और बदलें

ubuntu@server:~/mnt$ sudo blkid
/dev/xvdh1: LABEL="cloudimg-rootfs" UUID="1d61c588-f8fc-47c9-bdf5-07ae1a00e9a3" TYPE="ext4"
/dev/xvdf1: LABEL="cloudimg-rootfs" UUID="78786e15-f45d-46f9-8524-ae04402d1116" TYPE="ext4"

चरण 9. अनमाउंट वॉल्यूम

चरण 10. उदाहरण / देव / sda1 के लिए नए आकार के ईबीएस वॉल्यूम संलग्न करें


1
ग्रब UUID अपडेट के साथ @ruben सीरत उत्तर का संयोजन मेरे लिए क्या काम करता है।
जोनाथन मैम

छोटे नोट जैसा कि मैंने अभी कुछ समय बर्बाद किया है: रिटर्न के blkidबिना चल रहा है sudoउन्हें सत्यापित किए बिना कैश्ड परिणाम। तो ऐसा लगेगा कि UUID नहीं बदला है।
अखिल नायर

0

यहाँ एक वैकल्पिक दृष्टिकोण है;

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

वांछित आकार का एक नया ईबीएस वॉल्यूम बनाएं।

नए वॉल्यूम को उदाहरण के लिए संलग्न करें और (ध्यान से) उस पर एक नया फाइल सिस्टम प्रारूपित करें (उदाहरण के लिए, mkfs का उपयोग करके)। इसे माउंट करें।

पुरानी फ़ाइल सिस्टम सामग्री को पुराने वॉल्यूम से नए वॉल्यूम में कॉपी करें:

rsync -vaxSHAX /oldvol/ /newvol/

नए वॉल्यूम को अनमाउंट करें और इसे उदाहरण से अलग करें।

यदि आप रूट फाइल सिस्टम की प्रतिलिपि बना रहे थे, तो:

नए वॉल्यूम का EBS स्नैपशॉट बनाएं।

स्नैपशॉट को एक नए एएमआई के रूप में पंजीकृत करें।


0

नीचे दिया गया लेख ईबीएस वॉल्यूम के आकार को कम करने के तरीके पर एक अच्छा और सरल ट्यूटोरियल है। चरण-दर-चरण मार्गदर्शिका और स्क्रीनशॉट का पालन करना आसान है।

अपने EC2 उदाहरण में EBS वॉल्यूम का आकार घटाएं

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