AWS उदाहरण में पर्याप्त डिस्क स्थान '/' नहीं है


28

मैं अपने वेब सर्वर के लिए AWS क्लाउड पर Ubuntu 11.04 इंस्टेंस चला रहा हूं, अब मुझे मिल रहा है कि मेरे सर्वर का कोई डिस्क स्पेस / पार्टीशन नहीं है। df -ah यह कहते हैं

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            7.9G  7.8G   97M  99% /
proc                     0     0     0   -  /proc
none                     0     0     0   -  /sys
fusectl                  0     0     0   -  /sys/fs/fuse/connections
none                     0     0     0   -  /sys/kernel/debug
none                     0     0     0   -  /sys/kernel/security
none                  3.7G  112K  3.7G   1% /dev
none                     0     0     0   -  /dev/pts
none                  3.7G     0  3.7G   0% /dev/shm
none                  3.7G   80K  3.7G   1% /var/run
none                  3.7G     0  3.7G   0% /var/lock
/dev/xvdb             414G   16G  377G   4% /mnt

अब मैंने इन चीजों को / विभाजन पर कुछ अतिरिक्त स्थान पाने की कोशिश की है

  • अपाचे के लिए सभी लॉग फ़ाइलों को साफ करें।
  • सर्वर से सभी अनावश्यक फ़ाइलों को हटा दिया।
  • होम डायरेक्टरी क्लीनअप।

लेकिन फिर भी मुझे पर्याप्त जगह नहीं मिल रही है। यह इंस्टेंस टाइप 8 जीबी EBS के साथ m1.large है । अब मुझे मिल रहा है मैं पर्याप्त डिस्क स्थान में / देव / xvdb है

वहाँ एक तरह से मैं / / देव / xvdb या किसी भी अन्य तरीकों से / के लिए कुछ डिस्क आवंटित कर सकता है । कृपया मुझे इसके लिए संभावित समाधान सुझाएं । क्या मैं एक ही उदाहरण के साथ एक ही / dev / xvdb विभाजन का उपयोग करना संभव है ।


1
2017 अपडेट: अमेज़ॅन आजकल मक्खी पर अपने ड्राइव (यहां तक ​​कि बूट ड्राइव) का आकार बदलने की अनुमति देता है! मेरे एसओ का जवाब यहां देखें: stackoverflow.com/a/42791031/7022062
दिमित्री शेवकोपेलीस

जवाबों:


26

जवाब दुगुना है।

वर्कअराउंड: अस्थायी डेटा के लिए उपयोग / देव / xvdb (/ mnt)

यह आपके अमेज़ॅन EC2 उदाहरण का तथाकथित अल्पकालिक भंडारण है और इसकी विशेषताएँ अन्य अमेज़ॅन ईबीएस स्टोरेज के उपयोग की तुलना में कहीं अधिक भिन्न हैं । विशेष रूप से, यह अल्पकालिक भंडारण स्टॉप / स्टार्ट साइकल पर खो जाएगा और आम तौर पर दूर जा सकता है , इसलिए आप निश्चित रूप से वहां स्थायी मूल्य का कुछ भी नहीं डालना चाहते हैं, अर्थात केवल अस्थायी डेटा वहां रखें जहां आप आसानी से खो सकते हैं या पुनर्निर्माण कर सकते हैं , कंप्यूट फ़ाइल या कड़ाई से उपयोग के दौरान उपयोग में अस्थायी डेटा। बेशक, आप उदाहरण के लिए वहाँ विशाल अनुक्रमित स्टोर कर सकते हैं, लेकिन जो भी कारण (उदाहरण के लिए रिबूट, हार्डवेयर विफलता, ...) के लिए भंडारण को मंजूरी दे दी गई है, के बाद इनका पुनर्निर्माण करने के लिए तैयार रहना चाहिए।

समाधान: वांछित भंडारण प्राप्त करने के लिए आकार / देव / xvda1 (/)

यह आपके अमेज़ॅन ईबीएस समर्थित ईसी 2 इंस्टेंस का तथाकथित रूट डिवाइस स्टोरेज है , जो विशेष रूप से लचीलेपन और स्थायित्व के लिए अमेज़ॅन ईबीएस की सुविधा प्रदान करता है, अर्थात वहां रखा गया डेटा यथोचित सुरक्षित है और इंस्टेंस विफलताओं से बचता है; आप अपने ईबीएस वॉल्यूम के नियमित स्नैपशॉट ले कर लचीलेपन और स्थायित्व को और भी बढ़ा सकते हैं, जो अमेज़ॅन एस 3 पर संग्रहीत हैं , जिसमें प्रसिद्ध 99.999999999% स्थायित्व की विशेषता है।

यह स्नैपशॉट विशेषताएं आपको बदले में आपकी समस्या को हल करने में सक्षम बनाती हैं, इनफ़ॉफ़र आप अपने वर्तमान 8 जीबी ईबीएस रूट स्टोरेज (/ देव / xvda1) को एक या अधिक या कम से कम अपनी इच्छानुसार बदल सकते हैं। इस प्रक्रिया को एरिक हैमंड के उत्कृष्ट लेख में एक चल रहे ईबीएस बूट ईसी 2 उदाहरण पर रूट डिस्क के रूप में उल्लिखित किया गया है :

जब तक आप EC2 उदाहरण (कुछ मिनट) पर थोड़ा कम समय के साथ ठीक होते हैं, तब तक एक नई प्रतिलिपि शुरू करने की आवश्यकता के बिना रूट ईबीएस वॉल्यूम को एक बड़ी प्रति के साथ बदलना संभव है।

यदि आप सही तरीके से उनके द्वारा बताए गए चरणों को तैयार करते हैं (मैं प्रक्रिया से परिचित होने के लिए पहले उन्हें फेंकने वाले EC2 उदाहरण के साथ परीक्षण करने की सलाह देता हूं, या एक अनुरूप स्क्रिप्ट के माध्यम से इसे स्वचालित भी करता हूं), तो आपको कुछ के साथ प्रक्रिया समाप्त करने में सक्षम होना चाहिए मिनट डाउनटाइम केवल वास्तव में।

उल्लिखित अधिकांश कदम AWS प्रबंधन कंसोल के माध्यम से भी किए जा सकते हैं , जो अमेज़न EC2 API टूल्स से निपटने से बचते हैं ; यह करने के लिए नीचे फोड़े:

  • रोकें (समाप्त नहीं!) EC2 उदाहरण
  • बंद उदाहरण से ईबीएस मात्रा अलग करें
  • अलग ईबीएस मात्रा का एक स्नैपशॉट बनाएँ
  • बनाए गए स्नैपशॉट से एक नया (बड़ा) ईबीएस वॉल्यूम बनाएं
  • EC2 उदाहरण के लिए नया EBS वॉल्यूम संलग्न करें ( महत्वपूर्ण ! यदि यह आपका रूट डिवाइस है, तो यह सुनिश्चित करें कि इसे उदाहरण के मूल उपकरण के रूप में नाम दिया जाए जैसा कि उल्लेख किया गया था (/ dev / sda1) या (/ dev / xdva1) अन्यथा यह एक ब्लॉक डिवाइस के रूप में संलग्न किया जाएगा न कि रूट डिवाइस के रूप में और आप इंस्टेंस को शुरू करने में सक्षम नहीं होंगे क्योंकि कोई रूट डिवाइस उदाहरण के लिए सूचीबद्ध नहीं होगा। '
  • SSH रनिंग इंस्टेंस में है और सब कुछ कन्फर्म होता है df -ah
    • यदि आपका सिस्टम स्वचालित रूप से फाइल सिस्टम का आकार परिवर्तन नहीं करता है, तो आपको एरिक के लेख में बताए अनुसार इसे मैन्युअल रूप से करना होगा

सौभाग्य!


विकल्प

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

उदाहरण के लिए, हम कुछ हेवीवेट जावा अनुप्रयोगों के एक जोड़े का उपयोग कर रहे हैं, प्रत्येक में प्रति संस्करण 1-2GB का भंडारण होता है; संस्करणों को अपग्रेड करने में आसानी करने के लिए और आम तौर पर इन ऐप्स को मेरे विवेक पर अलग-अलग उदाहरणों में स्थानांतरित करने में सक्षम होने के लिए, मैंने उन्हें प्रत्येक पर समर्पित ईबीएस वॉल्यूम पर रखा है, इन्हें एक इंस्टेंस पर माउंट करें और उन्हें इच्छित स्थान, जैसे आमतौर पर /var/lib/<app>/<version>और सॉफ्ट लिंक से कनेक्ट करें /usr/local/<app>/<version>

इस पद्धति के साथ, हम वर्तमान में रूट डिवाइस स्टोरेज के साथ ईसीजी इंस्टेंसेस को 8GB के अपने डिफ़ॉल्ट आकार (अभी भी आपकी तरह) पर चला रहे हैं, लेकिन कभी-कभी 8 EBS वॉल्यूम अलग-अलग आकार (1-15GB) के साथ जुड़े होते हैं।

आपको संभावित नेटवर्क प्रदर्शन मुद्दों के बारे में पता होना चाहिए, हालांकि, इन सभी ईबीएस संस्करणों का उपयोग उनके I / O के लिए बहुत ही LAN का उपयोग कर रहा है, जो संबंधित प्रदर्शन लाभ भी प्राप्त कर सकता है, या चरम मामलों में आपके नेटवर्क को संतृप्त कर सकता है - इसलिए हमेशा की तरह यह निर्भर करता है उपयोग के मामले में और हाथ में काम का बोझ।


मैं अपने डेटाबेस को रखने के लिए / dev / xvdb का उपयोग कर रहा हूं जो अब लगभग 16GB आकार का है, एक पृष्ठभूमि प्रक्रिया इसे चालू रखने के लिए चल रही है। तो क्या इस डेटाबेस के लिए सबसे अच्छा स्थायी भंडारण होना चाहिए। क्या मुझे Amazon RDS या Amazon DynamoDB के लिए जाना चाहिए। आपका सुझाव क्या है मैं इस उदाहरण पर PHP सर्वर चला रहा हूँ।
सुमंत

2
@ सुमंत: यह अच्छा नहीं है, इसलिए आपने वास्तव में क्या खतरनाक है, अर्थात् डेटा को एक डिस्क पर बनाए रखने के लिए रखा है जो मूल रूप से किसी भी समय दूर जा सकता है (यह आमतौर पर नहीं होता है, एक व्यक्ति को इसका इलाज करना चाहिए)? मुझे आशा है कि मैं मधुमक्खी इस संबंध में भ्रामक नहीं है - जब प्रक्रिया (के दौरान से बचने के डेटा हानि करने के क्रम में यह कम करने अतिरिक्त सावधान रहना कृपया कर ? परवाह किए बिना डेटाबेस बैकअप है, तो आप करते हैं)!
स्टीफन ओपेल

@ सुमंत: अपने प्रश्न के बारे में - आपको स्टोरेज की समस्या को दूर करने के लिए अपने ऐप आर्किटेक्चर (या उस मामले के लिए डीबी) को बदलने की आवश्यकता नहीं है, बस आपको रूट डिस्क का आकार बदलना होगा या सुझाए गए अनुसार अधिक ईबीएस वॉल्यूम संलग्न करना होगा। अगर, हालांकि, आप डीबी टियर में सुधार करना और उसे कम करना चाहते हैं, जो कि भविष्य में विकास के साथ सिद्धांत में एक अच्छी बात है (लेकिन शुरुआत से संबंधित लागत के साथ आता है), और यह मानते हुए कि आप वर्तमान में MySQL चला रहे हैं, तो अमेज़न आरडीएस सही और सुविधाजनक विकल्प होगा। Amazon DynamoDB को एक पूर्ण नए ऐप आर्किटेक्चर की आवश्यकता है और यह केवल विशिष्ट उपयोग के मामलों पर लागू होता है।
स्टीफन ओपल

1
@ सुमंत: हालांकि सलाह दी जाती है, कि अपने DB को m1.small RDS उदाहरण में माइग्रेट करना वास्तव में EC2 पर आपके वर्तमान MySQL की तुलना में धीमा प्रदर्शन प्रदर्शित कर सकता है , जो संबंधित CPU और m / O के लाभ के साथ m1.large चल रहा है - चाहे यह लागू हो, यद्यपि आपके वर्तमान DB कार्यभार पर निर्भर करता है। बेशक, आप इसे मापने के लिए बड़े आरडीएस उदाहरणों का उपयोग कर सकते हैं, लेकिन आपकी लागत तदनुसार बढ़ेगी।
स्टीफन ओपल

1

हाँ, इसे fstab करने के लिए एक सरल तरीका है और फिर इसे कहने के लिए माउंट करें / var / www / html / files2 /

उसके बाद mkdir / var / www / html / files2 / वेबसाइट फिर ln -s -d / var / www / html / वेबसाइट / var / www / html / files2 / वेबसाइट


विभाजन को बनाने के लिए UUID का उपयोग करके विभाजन को माउंट करें और fdisk का कहना है कि '/ dev / vxds /' विभाजन बनाने के लिए। एक फ़ोल्डर से दूसरे फ़ोल्डर में F6 के साथ फ़ाइलों को स्थानांतरित करने के लिए मध्यरात्रि कमांडर का उपयोग करें, सुनिश्चित करें कि आपने माउंट स्थिति ओह के तहत सही फ़ोल्डर का चयन किया है और निश्चित रूप से आपको fstab में जोड़ने के बाद 'माउंट-ए' करने की आवश्यकता होगी
डैनियल चे

0

आज मुझे भी यही समस्या हुई है, जब आप नए ईको 2 का इरादा डिफ़ॉल्ट रूप से ईबीएस 8GB करते हैं। आप नए इंटेस बनाने या स्नैपशॉट लेने या ईबीएस को अलग किए बिना संलग्न ईबीएस के आकार को संशोधित कर सकते हैं .. यहां तीन चरण हैं जिनका आप अनुसरण कर सकते हैं:

  1. ईबीएस वॉल्यूम का आकार बदलें
  2. विभाजन का आकार बदलें
  3. विभाजन का आकार बदलें पहले चरण के लिए अपने AWS कंसोल पर जाएं और EBS पर क्लिक करें और वांछित आकार बदलें और संशोधित करें पर क्लिक करें।

बाकी चरणों के लिए कृपया इस लेख का अनुसरण करें यदि आपके पास कोई पूछने के लिए स्वतंत्र है।

धन्यवाद!

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