आप EC2 उदाहरण में स्वैप कैसे जोड़ते हैं?


293

मैं वर्तमान में एक ec2 माइक्रो इंस्टेंस चला रहा हूं और मुझे लग रहा है कि इंस्टेंस कभी-कभार मेमोरी से बाहर चला जाता है।

बड़ा उदाहरण आकार का उपयोग करने के अलावा, और क्या किया जा सकता है?

जवाबों:


574

इस समस्या के लिए एक समाधान उदाहरण के लिए swap(यानी paging) स्थान जोड़ने के लिए है।

पेजिंग आपकी हार्ड ड्राइव पर एक क्षेत्र बनाकर और अतिरिक्त मेमोरी के लिए इसका उपयोग करके काम करता है, यह मेमोरी सामान्य मेमोरी की तुलना में बहुत धीमी है, हालांकि यह बहुत अधिक उपलब्ध है।

आपके द्वारा टाइप किए गए इस अतिरिक्त स्थान को जोड़ने के लिए:

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1

यदि आपको 1024 से अधिक की आवश्यकता है तो उसे कुछ उच्च में बदल दें।

रिबूट के बाद डिफ़ॉल्ट रूप से सक्षम करने के लिए, इस लाइन को / etc / fstab में जोड़ें:

/var/swap.1   swap    swap    defaults        0   0

क्या आप बता सकते हैं कि इसका क्या अर्थ है "if = ...", "का = ...", bs = 1M और गिनती = 1024 क्योंकि मैंने कभी नहीं देखा है, तो और तर्क सूची में।
ア ッ ク ア

31
if'इनपुट फ़ाइल' का ofअर्थ है , 'आउटपुट फ़ाइल', bsजिसका अर्थ है 'ब्लॉक साइज' और countवह संख्या है जिसे आप आवंटित करना चाहते हैं ... आप manअधिक जानकारी के लिए कमांड के पेज को पढ़ सकते हैं : linux.die.net/man/1/ dd
फैबियो बतिस्ता

4
उस dd कमांड लाइन का अर्थ है "प्रति / dev / शून्य से /var /swap.1 की प्रतिलिपि। ऐसा करें कि आकार 1 मेगाबाइट के 1024 ब्लॉक को पढ़कर"। यह जीरो से भरी 1GB फ़ाइल बनाने का एक त्वरित तरीका है।
नेल्सन

3
पर्याप्त पुरानी है, लेकिन मेरी स्वैप मेमोरी 0% बनी हुई है जो पुनः आरंभ करने के बाद भी उपयोग की जाती है, कोई मदद?
गिरधारी अग्रवाल

3
: आप अगर स्वैप है सक्रिय जाँच करना चाहते हैं$> free -m
Herve

216

स्वैप इंस्टेंस स्टोरेज (पंचांग) डिस्क पर होना चाहिए न कि ईबीएस डिवाइस पर। स्वैपिंग से बहुत IO पैदा होगा और EBS पर लागत बढ़ेगी। EBS भी Instance Store से धीमा है और Instance Store कुछ प्रकार के EC2 इंस्टेंस के साथ मुफ़्त आता है ।

यह आमतौर पर / mnt पर आरोहित किया जाएगा, लेकिन अगर नहीं चलाया जाता है

sudo mount /dev/xvda2 /mnt

तब इस डिवाइस पर एक स्वैप फाइल बनाने के लिए 4GB स्वैप के लिए निम्न कार्य करें

sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096

सुनिश्चित करें कि कोई अन्य उपयोगकर्ता स्वैप फ़ाइल नहीं देख सकता है

sudo chown root:root /mnt/swapfile
sudo chmod 600 /mnt/swapfile

स्वैप के रूप में बनाओ और झंडा

sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile

जोड़ें / सुनिश्चित करें कि निम्नलिखित आपके / etc / fstab में हैं

/dev/xvda2      /mnt    auto    defaults,nobootwait,comment=cloudconfig 0   2
/mnt/swapfile swap swap defaults 0 0

अंत में स्वैप सक्षम करें

sudo swapon -a

6
यह निश्चित रूप से सबसे व्यापक उत्तर imo है
जॉन बी

4
फ़ाइल सिस्टम को माउंट करने के लिए किसी को फ़ाइल सिस्टम प्रकार निर्दिष्ट करना होगा। फाइल सिस्टम को खोजने के लिए कमांड है: $ df -T यह आपको डिवाइस और उनके फाइल सिस्टम को दिखाएगा। ज्यादातर ext4। मेरे लिए यह / dev / xvda1 था, न कि 2.
user1452686

8
Docs.aws.amazon.com/AWSEC2/latest/UserGuide/… के अनुसार, इंस्टेंस स्टोर्स को t1 / t2 इंस्टेंस में जोड़ना संभव नहीं है। परवाह किए बिना प्रयास करने के बाद, यह सही प्रतीत होगा।
मटनअप

3
@alfetopito आप संभवतः किसी अन्य विभाजन को स्वैप के रूप में जोड़ने के बजाय किसी मौजूदा विभाजन पर शाब्दिक स्वैफ़ाइल बना सकते हैं। Centos 6 के लिए एक अच्छा गाइड - digitalocean.com/community/tutorials/…
muttonUp

1
अमेज़ॅन के अनुसार, यह गारंटी नहीं है कि आप रिबूट के बाद अपने इंस्टेंस स्टोरेज को बनाए रखें, तो क्या फैस्टब फेल नहीं होगा?
12

42

Ajtrichards द्वारा बताए गए चरणों को लागू करने के बाद आप जांच सकते हैं कि क्या आपका amazon free tier उदाहरण इस कमांड का उपयोग करके स्वैप का उपयोग कर रहा है

cat /proc/meminfo

परिणाम:

ubuntu@ip-172-31-24-245:/$ cat /proc/meminfo
MemTotal:         604340 kB
MemFree:            8524 kB
Buffers:            3380 kB
Cached:           398316 kB
SwapCached:            0 kB
Active:           165476 kB
Inactive:         384556 kB
Active(anon):     141344 kB
Inactive(anon):     7248 kB
Active(file):      24132 kB
Inactive(file):   377308 kB
Unevictable:           0 kB
Mlocked:               0 kB

स्वपोटल: 1048572 केबी

स्वैफ्री: 1048572 केबी

Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        148368 kB
Mapped:            14304 kB
Shmem:               256 kB
Slab:              26392 kB
SReclaimable:      18648 kB
SUnreclaim:         7744 kB
KernelStack:         736 kB
PageTables:         5060 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1350740 kB
Committed_AS:     623908 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        7420 kB
VmallocChunk:   34359728748 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      637952 kB
DirectMap2M:           0 kB

40

आप इन आदेशों के साथ अपने उदाहरण में 1 जीबी स्वैप जोड़ सकते हैं:

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile

रिबूट के बाद डिफ़ॉल्ट रूप से सक्षम करने के लिए, इस पंक्ति को इसमें जोड़ें /etc/fstab:

/swapfile swap swap defaults 0 0

लेकिन मेरे किस फाइल सिस्टम से यह स्वैप बनाने के लिए जगह लेगा?
हुसैन

@ हुसैन यह रूट फाइल सिस्टम में स्वैप बनाएगा क्योंकि रास्ता है /swapfile। लेकिन आप दूसरी फाइलसिस्टम को भी माउंट कर सकते हैं और वहां स्वैप फाइल बना सकते हैं, जैसे /mnt/blah/swapfile
डेविड लेवेस्क

एक t2.micro उदाहरण पर इस काम की पुष्टि कर सकता है। मैंने अपना @ @ mnt / स्वैप किया, हालांकि मुझे एक साफ जड़ पसंद है।
माइक पर्सेल

1
इस जवाब को प्रस्तुत किया क्योंकि यह सबसे छोटा है और काम करता है। हालांकि, स्वैपफाइल chmod 600 कमांड को जोड़ा जाना चाहिए।
सॉबर

15

आप पर हैं, तो t2उदाहरणों ( t2.micro, t2.medium, t2.small), कोई अल्पकालिक या उदाहरण आप के लिए उपलब्ध भंडारण है। तो आपको बस अपना स्वैप बनाने की आवश्यकता है EBSजिसमें आपके उपयोग के मामले के आधार पर एक अच्छा विचार हो सकता है या नहीं हो सकता है। अन्यथा @ डेविड के उत्तर का पालन करें, और ईबीएस की लागत का भुगतान करने से बचने के लिए अल्पकालिक भंडारण पर अपना स्वैप बनाएं।

अधिक जानकारी: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html एक तालिका है जो बताती है कि प्रत्येक उदाहरण के प्रकार के लिए आपको कितना अल्पकालिक संग्रहण मिलता है।


1
यह पुष्टि कर सकता है आम तौर पर एक बुरा विचार है। यदि आपके पास एक ऐसी प्रक्रिया है जो दुष्ट हो जाती है (मेरे पास नोड सर्वर ऐसा है, और एक अजगर / अजवाइन सेटअप है), तो जब आप इसे पढ़ते हैं, तो आप एक सप्ताह में अपने ईबीएस ब्लॉक को पढ़ते हैं और लिखते हैं: -)
ZachM

3
Aws.amazon.com/ebs/pricing के अनुसार , IO प्रोविज़न किए गए IPOS SSD (io1) को छोड़कर सभी EBS संस्करणों में शामिल है। आप केवल प्रति जीबी। यह मूल्य निर्धारण मॉडल में हाल ही में बदलाव हो सकता है - लेकिन इसका मतलब है कि भले ही ईबीएस सच्चे इंस्टेंस स्टॉरेस की तुलना में बहुत धीमा है, लेकिन रीड और राइट के लिए कोई अतिरिक्त शुल्क नहीं है।
bobsoap

@bobsoap क्या आप इसे स्पष्ट करना चाहेंगे? मैंने आपका लिंक जाँच लिया है, और यह पाया है For example, if you provision a volume with 1000 IOPS, and keep this volume for 15 days in a 30 day month, then in a Region that charges $0.10 per provisioned IOPS-month, you would be charged $50 for the IOPS that you provision ($0.10 per provisioned IOPS-month * 1000 IOPS provisioned * 15 days/30). You will be charged for the IOPS provisioned on a volume even when the volume is detached from an instance.। जिससे लगता है कि AWS संचालन और पढ़ने के लिए शुल्क लेगी।
वाल्टर सिल्वा

2
@ValterHenrique आपके द्वारा उद्धृत पाठ केवल प्रावधानित IOPS के साथ संस्करणों पर लागू होता है, लेकिन आपके पास कई भिन्न मात्रा प्रकारों के बीच विकल्प होता है। यदि आप प्रावधान किए गए IOPS के बिना "सामान्य" वॉल्यूम का उपयोग कर रहे हैं (जैसे सामान्य उद्देश्य SSD वॉल्यूम प्रकार जिसे "gp2" कहा जाता है), तो पढ़ने और लिखने के लिए अतिरिक्त शुल्क नहीं लिया जाता है। शायद तुलना करने के लिए एक बेहतर लिंक: aws.amazon.com/ebs/details
bobsoap

8

आप निम्न चरणों का उपयोग करके स्वैप स्थान बना सकते हैं यहां हम स्वैप बना रहे हैं /home/

  1. dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
    यहाँ गिनती स्वैप स्थान की किलोबाइट गिनती है

  2. mkswap /home/swapfile1

  3. vi /etc/fstab
    प्रविष्टि करें:
    /home/swapfile1 swap swap defaults 0 0

  4. Daud:
    swapon -a


4

हम किसी भी सर्वर में स्वैप स्पेस जोड़ सकते हैं

dd कमांड का उपयोग करके एक फाइल बनाएं

 #dd if=/dev/zero of=/swapfile bs=1M count=2048
                    or
 #dd if=/dev/zero of=/swapfile bs=1024M count=2

bs blockize है और गिनती MB या GB में आकार को संदर्भित करता है

हम इसके विपरीत का उपयोग कर सकते हैं

निर्माण के बाद फ़ाइल की अनुमति बदलें:

 #chmod 600 /swapfile 

फिर फ़ाइल बनाता है:

 #mkswap /swapfile 

फिर स्वैप फाइल को स्वेपन कमांड से सक्षम करें:

 #swapon  /swapfile 

मुफ्त कमांड के साथ जांचें कि क्या स्वैप सक्षम है या नहीं:

 #free -h
 #swapon -s

3

डेविड के इंस्टेंस स्टोरेज जवाब का उपयोग करते हुए शुरू में मेरे लिए (एक m5d.2xlarge पर) काम किया, हालांकि, EC2 इंस्टेंस को रोकने और इसे वापस चालू करने के बाद, मैं फिर से इंस्टेंस पर ssh करने में असमर्थ था।

उदाहरण लॉग में बताया गया है: "आप आपातकालीन मोड में हैं। लॉग इन करने के बाद, सिस्टम लॉग देखने के लिए" जर्नलक्टल -xb "टाइप करें, रिबूट करने के लिए" सिस्टमक्टल रिबूट "," सिस्टमैक्टल डिफॉल्ट "या" एक्जिट "को डिफ़ॉल्ट मोड में बूट करने के लिए दबाएं। रखरखाव के लिये"

मैंने इसके बजाय इस लिंक में AWS के निर्देशों का पालन किया और सब कुछ पूरी तरह से काम किया, जिसमें उदाहरण बंद करने के बाद और फिर से शामिल थे।

https://aws.amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/

sudo dd if=/dev/zero of=/swapfile bs=1G count=4

sudo chmod 600 /swapfile

sudo mkswap /swapfile

sudo swapon /swapfile

sudo swapon -s

sudo vi /etc/fstab
/swapfile swap swap defaults 0 0

1

स्वेपस्पेस आज़माएं http://pqxx.org/development/swapspace/

अधिकांश डिस्ट्रोस ने इसे पैक किया है।

EC2 पर आप "swappath" को / mnt या हाई-आयप्स डिस्क में बदलना चाहते हैं।


1
डॉक्स से: "अपने वर्तमान स्वरूप में, स्वेपस्पेस संभवतः उन प्रणालियों के लिए अच्छा विकल्प नहीं है जिन्हें हर समय उत्तरदायी बने रहने की आवश्यकता है;"
दवे अल्बर्ट

-3

अमेज़ॅन लिनक्स पर स्वैप जोड़ने के लिए आप निम्न स्क्रिप्ट का उपयोग कर सकते हैं।

https://github.com/chetankapoor/swap

Wget का उपयोग करके स्क्रिप्ट डाउनलोड करें:

wget https://raw.githubusercontent.com/chetankapoor/swap/master/swap.sh -O swap.sh

फिर स्क्रिप्ट को निम्न प्रारूप के साथ चलाएं:

sh swap.sh 2G

पूर्ण ट्यूटोरियल के लिए आप यहां जा सकते हैं:

https://installvirtual.com/shell-script-to-create-swap/


मैं यह नहीं देखता कि यह उत्तर क्या योगदान देता है, इसके अलावा केवल एक शेलस्क्रिप्ट होने के नाते जो मूल रूप से पहले से ही समझाया गया उत्तर है।
निल्स वर्नर

मैंने सिर्फ एक शेल स्क्रिप्ट बनाई है जिससे समय की बचत होती है इसलिए 5 कमांड चलाने के बजाय स्वैप बनाने के लिए 2 चरण होंगे और यदि स्वैप पहले से मौजूद है तो यह दिखाएगा कि स्वैप पहले से ही है।
चेतन कपूर

3
बिल्कुल सही। एक शेलस्क्रिप्ट जिसे मैं रूट के रूप में चलाने वाला हूं। किसी के द्वारा बनाया गया, कहीं, जो बिना सूचना के बदल सकता है या गायब हो सकता है। सभी को 4-5 कमांड लाइनों को बचाने के लिए जो 5 साल पहले पोस्ट और स्वीकार किए गए थे।
नेल्स वर्नर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.