टर्मिनल में इसे हटाए बिना मैं स्वैपफाइल के आकार को कैसे बढ़ाऊं?


59

क्या इसे नष्ट करने और इसे फिर से बनाने के बिना मेरे मौजूदा "स्वैपफाइल" को बढ़ाने का एक तरीका है? मैं अपनी स्‍पैप स्‍पेस को 1GB से 2GB करना चाहूंगा। वर्तमान में इसे इस प्रकार स्थापित किया गया है:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        1048572 736640  -1
$ ls -lh /swapfile
-rw------- 1 root root 1.0G Nov  9  2016 /swapfile

मैं Ubuntu 14.04 का उपयोग कर रहा हूं।


आपके पास कितना रैम है? क्या 2G काफी है? मुझे लगता है कि आपको swapoffएक नया / mkswapswapon -a
स्वैफाइल बनाना होगा

1
एक नई स्वैप फ़ाइल जोड़ें, उपरोक्त प्रश्न के निर्देश का पालन करें। आपके पास 2 स्वैप फ़ाइल हो सकती है;)
रेवेक्सिना

1
@ रेवेक्सिना, एक नौसिखिया सवाल शायद, लेकिन मैं मौजूदा एक के आकार को बढ़ाने के बजाय एक नई स्वैप फाइल क्यों जोड़ना चाहूंगा? या किसी मौजूदा स्वैप फ़ाइल को बढ़ाना संभव नहीं है?
डेव

@ यह भी संभव है, जैसा कि आप जानते हैं कि हम swapoffतब ddऔर mkswapअंत में कर सकते हैं swapon। मुझे लगा कि आप अपनी फ़ाइल को नहीं छूना चाहते हैं।
रवेक्सिना

2
@ रेवेक्सिना उत्तर के रूप में पोस्ट करती है
सर्गी

जवाबों:


66

पहले स्वैप फ़ाइल अक्षम करें:

sudo swapoff /swapfile

अब स्वैप फ़ाइल का आकार बढ़ाते हैं:

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 oflag=append conv=notrunc

उपरोक्त कमांड आपकी स्वैप फ़ाइल के अंत में शून्य बाइट्स के 1GiB को जोड़ देगा।

फ़ाइल को "स्वैप फ़ाइल" के रूप में सेट करें:

sudo mkswap /swapfile

स्वैपिंग सक्षम करें:

sudo swapon /swapfile

3
sudo fallocate -l 2G /swapfileशायद dd की तुलना में अधिक सुरक्षित है (हालाँकि यह मूल स्वैफ़ाइल नहीं रखता है), और इसे भी चाहिए sudo chmod 600 /swapfile
हेयनेमा

7
@ हायनेमा fallocateविरल फाइलें नहीं बनाती? swaponमैनपेज का कहना है विरल स्वैप फ़ाइलों समस्याग्रस्त (विशेष रूप से उल्लेख कर रहे हैं fallocate)।
मुरु

3
@heynnema नहीं, mkswapमैनपेज यह भी कहता है कि फाइलों में कोई छेद नहीं होना चाहिए।
मुरु

1
@ muru का अनुमान है कि मैं गलत हूं: हर बार जब मैं पढ़ता हूं कि 17.04 की शुरुआत के साथ / swapfile कैसे बनाया जाता है, तो वे फॉलेटेट का उपयोग करते हैं। मुझे लगता है कि हमें "डिस्क विध्वंसक" का उपयोग करना होगा!
हेयनेमा

1
@ हायनेमा: आप जो कुछ भी कर सकते हैं, वह fallocateडिस्क स्थान को पूर्व-आवंटित करने के लिए उपयोग करना है और फिर ddशून्य से छेद भरने के लिए उपयोग करना है।
डेविड फ़ॉस्टर

39

आपको अस्तित्व को बदलने के बजाय एक नया स्वैप जोड़ना चाहिए क्योंकि ऐसा करने के लिए आपको कुछ भी खर्च नहीं करना पड़ता है । एक स्वैफ़ाइल का आकार बदलने के लिए, आपको पहले इसे अक्षम करना होगा, जो कि राम को स्वैप सामग्री को दिखाता है, जो रैम पर दबाव बढ़ाता है और यहां तक ​​कि ओओएम किलर को भी बुला सकता है (यह उल्लेख नहीं करने के लिए कि आप संभवतः कई मिनटों के लिए अपने डिस्क को फेंक सकते हैं)। एकाधिक स्वैप फाइलें एक समस्या नहीं हैं, यह तुच्छ रूप से सेटअप करना आसान है फिर भी एक और स्वैप फाइल है। वहाँ काफी शाब्दिक एक और जोड़ने पर एक स्वैप फ़ाइल का आकार बदलने का कोई लाभ नहीं है।

dd if=/dev/zero of=/some/file count=1K bs=1M
mkswap /some/file
sudo chown root:root /some/file
sudo chmod 600 /some/file
sudo swapon /some/file

है sudo chmod 600 /some/fileआवश्यक है या नहीं?
हेयनेमा

1
और count=1K1G फाइल देता है? गणना ब्लॉक आकार में है, हाँ? और वह 512/4096 हो सकता है? या मेरा गणित गलत है?
हेयनेमा

3
+1 यह दृष्टिकोण स्वेपफाइल्स में से किसी एक को डिस्कनेक्ट करना भी आसान बनाता है यदि आप बाद में निर्णय लेते हैं कि आपको डिस्क स्थान की आवश्यकता है।
joeytwield

2
इसे वास्तव में सही उत्तर के रूप में चिह्नित करने की आवश्यकता है। वाह, ब्रावो!
बैशॉय गिर्गिस

1
@ मरमू क्या यह एक स्थायी समाधान है? मैंने 30 अप्रैल को ये आदेश दिया था, लेकिन मई के महीने में कुछ समय के लिए, मेरा दूसरा स्वैपफाइल चला गया था। मैंने डिलीट नहीं किया लेकिन यह चला गया
क्रिस्टोफर रुकिंस्की

13

जैसा कि मैंने किया था आप एक और स्वैप फ़ाइल बना सकते हैं:

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. सत्यापित करें कि यह साथ काम कर रहा है sudo swapon --show
    इसे fstabफ़ाइल टाइपिंग में स्थायी रूप से जोड़ने के लिए :
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

कृपया ध्यान दें कि fallocateफ़ाइल बनाने के लिए बिट का उपयोग किया जाना चाहिए, क्योंकि यह एक विरल फ़ाइल बनाता है। देखेंman mkswap
चार्ल्स ग्रीन

@CharlesGreen ने मुझे लिखा के रूप में काम किया, इसलिए इसे किसी को भी काम करना चाहिए।
बोरकॉन

मैं man mkswap"पर्यावरण" से पहले विशेष रूप से अंतिम दृष्टांत पढ़ता हूं
चार्ल्स ग्रीन

1
अर्नियन वी 5.65
बायोटेनेरी

5

मैं से अरियन अकोस्टा की सलाह के बाद मेरे उबंटू 17.04 पर अच्छा परिणाम ब्लॉगपोस्टsudo fallocate -l 4G /swapfileआप जो चाहें गीगाबाइट की किसी भी राशि के साथ यहां 4G का विकल्प चुन सकते हैं। sudo fallocate -l 2G /swapfileटीएस के लिए उदाहरण के लिए।

सामान्यतया, स्वैप फ़ाइल के लिए अनुशंसित आकार 2X RAM की मात्रा है, लेकिन आप इसे आवश्यकतानुसार बड़ा बना सकते हैं। याद रखें कि यह मेमोरी का विकल्प नहीं है क्योंकि प्रदर्शन बहुत खराब है क्योंकि डिस्क में चीजें संग्रहीत होती हैं।

मैंने एक साधारण बैश स्क्रिप्ट बनाई है जो स्वैप फाइल को 4GB तक बढ़ाती है और इसे Ubuntu 16.04 पर परीक्षण किया गया है।

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

#!/bin/bash
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Turning Off Swap ======"
sudo swapoff /swapfile
echo "====== Allocating 4GB Swap ======"
sudo fallocate -l 4G /swapfile
echo "====== Making Swap ======"
sudo mkswap /swapfile
echo "====== Setting Permissions to Root Only  ======"
sudo chmod 600 /swapfile
echo "====== Turning On Swap ======"
sudo swapon /swapfile
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Done! ======"

3
आपको स्क्रिप्ट में एक तर्क जोड़ा जाना चाहिए, जो कि SWAP को जोड़ने की मात्रा है और अंत में इसे fstab में जोड़ें। लेकिन फिर भी, मुझे यह पसंद है
LnxSlck

0

"स्वैप फ़ाइल का आकार परिवर्तन कैसे करें" के लिए सामान्य उत्तर:

बोगदान कोर्निशु से, यहाँ: https://bogdancornianu.com/change-swap-size-in-ubb/

[उद्धरण (ALMOST VERBATIM, मेरी कुछ टिप्पणी के अतिरिक्त) START]

निम्नलिखित उदाहरण में, हम 4 GiB से 8 GiB तक / swapfile में उपलब्ध स्वैप स्थान का विस्तार करेंगे ।

  1. सभी स्वैप प्रक्रियाओं को बंद करें

    sudo swapoff -a
    
  2. स्वैप का आकार बदलें

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

    if= इनपुट फ़ाइल
    of= आउटपुट फ़ाइल
    bs= ब्लॉक आकार; यहाँ, 1G1 गिबीबाइट या GiB का अर्थ है, जो man ddकि G = 1024 * 1024 * 1024 बाइट्स
    count= ब्लॉकों के गुणक के अनुसार है।

  3. फ़ाइल को स्वैप के रूप में प्रयोग करने योग्य बनाएं

    sudo mkswap /swapfile
    
  4. स्वैप फ़ाइल को सक्रिय करें

    sudo swapon /swapfile
    
  5. उपलब्ध स्वैप की मात्रा की जाँच करें

    grep SwapTotal /proc/meminfo
    

[QUOTE END]

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