कैसे सुरक्षित रूप से स्वैप को स्थायी रूप से बंद करें और अंतरिक्ष को पुनः प्राप्त करें? (डेबियन जेसी पर)


48

मैंने अपने एसएसडी ड्राइव पर डिफ़ॉल्ट विभाजन के साथ डेबियन जेसी को स्थापित किया। मेरी वर्तमान डिस्क विभाजन इस तरह दिखता है:

मेरी वर्तमान डिस्क विभाजन इस तरह दिखता है

जैसा कि मेरे पास 16GB RAM है, मुझे लगता है कि मुझे स्वैप की आवश्यकता नहीं है । लेकिन जब से मेरे पास अन्य डिस्क ड्राइव हैं मैं उदाहरण के लिए एक स्वैप ड्राइव बना सकता हूं , इसके बजाय अन्य ड्राइव में से एक पर।

क्या आप मुझे बता सकते हैं कि डिस्क स्थान पर कब्जा न करने के लिए मुझे स्वैप विभाजन को सही और स्थायी रूप से हटाने के लिए क्या कदम उठाने चाहिए ? मैं स्वैप विभाजन को हटाना चाहता हूं क्योंकि मेरे पास वर्तमान में केवल 128GB SSD है।

यहाँ मैंने हर बार कोशिश की और रिबूट किया; इनमें से प्रत्येक चरण स्थायी नहीं है , या कुछ भी नहीं किया है :

  1. swapoffउपयोगिता का उपयोग करना :

    swapoff --all
    
  2. GParted उपयोगिता का उपयोग करना :

    स्वैप विभाजन पर राइट-क्लिक करें और स्वैपऑप पर क्लिक करें।

  3. निम्नलिखित फ़ाइल में स्वैप विभाजन के UUID पर टिप्पणी करना :

    /etc/fstab
    
  4. निम्नलिखित फ़ाइल में स्वैप विभाजन के UUID पर टिप्पणी करना :

    /etc/initramfs-tools/conf.d/resume
    
  5. अंत में इन आदेशों को चलाना (यह और विपरीत क्रम दोनों):

    update-grub
    
    update-initramfs -u
    

1
स्वैपऑफ वर्तमान में चल रही प्रणाली के लिए केवल स्वैप को अक्षम करता है, इसे स्थायी बनाने के लिए आपको संबंधित प्रविष्टि को हटाने के साथ इसे संयोजित करना चाहिए /etc/fstab। एक बार हो जाने के बाद, स्वैप अक्षम होना चाहिए और अगले बूट पर वापस नहीं आना चाहिए। यदि आप अप्रयुक्त स्थान को पुनः प्राप्त करना चाहते हैं तो अब आपको विभाजन तालिका को संशोधित करना चाहिए और अपने मुख्य फाइल सिस्टम को विस्तारित करना चाहिए। विस्तृत निर्देशों के लिए मेरा उत्तर देखें।
एंड्रे बोरी

@ burian.vlastimil क्या आप अपनी पूरी पोस्ट कर सकते हैं /etc/fstab?
आंद्रे बोरी

@ burian.vlastimil कृपया अपने प्रश्न में इसे संपादित करें क्योंकि टिप्पणियां रेखा विराम को संरक्षित नहीं करती हैं। रिस्टूट के बाद फस्टैब में आपके बदलाव जारी रहते हैं या स्वैप लाइन में गड़बड़ी आ जाती है?
एंड्रे बोरी

1
यदि मैं इस प्रश्न पर विचार कर सकता हूं, तो स्वैप का उद्देश्य अप्रयुक्त पृष्ठों को हटाना और सिस्टम को स्मृति से बाहर जाने से बचाना है। इस प्रकार, जैसा कि स्नेकडॉक ने सुझाव दिया था, 512MB स्वैप होना हमेशा अच्छा होता है। व्यक्तिगत रूप से, मैं SSD है जिसमें कोई स्वैप विभाजन नहीं है, बल्कि मेरे / निर्देशिका में एक स्वैप फ़ाइल है। यदि आप ऐसा करने का विकल्प चुनते हैं, तो फ़ाइल बनाने के लिए इस ट्यूटोरियल का उपयोग करें । स्वैप विभाजन के लिए, आप लाइव usb को बूट कर सकते हैं और उस विभाजन को हटाने के लिए gparted का उपयोग कर सकते हैं। हालाँकि, ग्रब को अपडेट करना सुनिश्चित करें।
सर्गी कोलोडियाज़नी

4
@SnakeDoc - आपको आमतौर पर कर्नेल घबराहट नहीं मिलेगी, OOM हैंडलर मेमोरी को फ्री करने के लिए (और) प्रक्रिया को मार देगा (और यह आमतौर पर एक अच्छा काम करता है जो यह निर्णय लेता है कि आम तौर पर वरीयता देने के लिए कौन है मारने के लिए बड़ी और नई प्रक्रियाओं)। मैं स्वैप के बिना सर्वर की एक बड़ी संख्या को बनाए रखता हूं जो हत्या की प्रक्रियाओं के बजाय OOM पर आतंकित हैं क्योंकि सर्वर ऐसे कॉन्फ़िगर किए गए हैं कि वे आम तौर पर मेमोरी से बाहर कभी नहीं निकलेंगे और यदि वे करते हैं, तो मैं चाहता हूं कि वे स्वैप के बजाय घबराएं और रिबूट करें और धीमा करें (या ओओएम हैंडलर को यह तय करने दें कि मारने की क्या प्रक्रिया है)
जॉनी

जवाबों:


46

जड़ के रूप में निष्पादित करें:

# swapoff -a

और उस परिवर्तन को स्थायी बनाने के लिए, /etc/fstabस्वैप प्रविष्टि को संपादित करें या हटाएं या टिप्पणी करें ।


@ burian.vlastimil, आपको लॉक से क्या मतलब है? आप सत्यापित कर सकते हैं कि कोई भी स्वैप डिवाइस शीर्ष की पहली पंक्ति को देखने के माध्यम से उपयोग में नहीं है - इसे 'KiB स्वैप: 0 कुल' की रिपोर्ट करनी चाहिए। आप यह भी कर सकते हैं cat /proc/swaps- जिसे सिर्फ हेडर लाइन की रिपोर्ट करनी चाहिए। अगर ऐसा है, तो हाँ, आप सुरक्षित रूप से स्वैप विभाजन को हटा सकते हैं - और दूसरे विभाजन को बड़ा कर सकते हैं - उस स्थान को पुनः प्राप्त करने के लिए - यदि वह है जो आप चाहते हैं।
maxschlepzig

@ burian.vlastimil, स्वैप आपके initramfs द्वारा सक्षम किया जा सकता है, आपको resumeकर्नेल विकल्प को हटाना पड़ सकता है (जो आपके स्वैप के UUID को संदर्भित करता है), यानी grub को अपडेट करें और initramfs को पुन: उत्पन्न करें (मूल रूप से कुछ चरणों के विपरीत करें स्वप्फक )।
मैक्सक्लेपज़िग

@ burian.vlastimil, आप /bootउस uuid के लिए अपने ग्रब कॉन्फिगर (अंडर ) को भी grep कर सकते हैं और इसके मूल कारणों को प्राप्त करने के लिए अपने initramsfs को अनपैक कर सकते हैं और इसकी सामग्री को grep कर सकते हैं। सुनिश्चित करें कि आप केस-असंवेदनशील grep करते हैं।
मैक्सक्लेपज़िग

2
बस डाल swapoff -aमें /etc/rc.local। स्वैप होने पर कुछ मिलीसेकेंड जब तुम बूट के लिए कोई समस्या नहीं है। 16 जीबी रैम के साथ लंबे समय तक वहां कुछ भी नहीं लिखा जाएगा। बस स्वैप स्थान को वहीं छोड़ दें (डिस्क स्थान सस्ता है) और न बदलें /etc/fstab
Skaperen

एक अस्थायी स्वैप फ़ाइल बनाएं , फिर आप स्वैप बंद करने के बाद फ़ाइल को हटाकर स्थान को पुनर्प्राप्त कर सकते हैं
स्कैपेरेन

40
  1. यदि आपके पास GParted खुला है, तो इसे बंद करें। इसकी स्वॉफ़ फ़ीचर स्थायी नहीं दिखाई देती है।

  2. टर्मिनल खोलें और बनें root( su); यदि आपने sudoसक्षम किया है, तो आप उदाहरण के लिए भी कर सकते हैं sudo -i; man sudoसभी विकल्पों के लिए देखें ):

    sudo -i
    
  3. विशेष रूप से बंद कर दें स्वैप विभाजन और / या के सभी स्वैप रों:

    swapoff --all
    
  4. 100% सुनिश्चित करें कि विशेष स्वैप विभाजन विभाजन बंद है:

    cat /proc/swaps
    
  5. एक पाठ संपादक खोलें जो आप इस फ़ाइल के साथ कुशल हैं, जैसे nanoयदि अनिश्चित हैं:

    nano /etc/fstab
    
  6. टिप्पणी करें / स्वैप विभाजन का UUID निकालें , जैसे:

    # UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d    none    swap    sw    0    0
    
  7. एक पाठ संपादक खोलें जो आप इस फ़ाइल के साथ कुशल हैं, जैसे nanoयदि अनिश्चित हैं:

    nano /etc/initramfs-tools/conf.d/resume
    
  8. पूर्व में पहचाने गए स्वैप विभाजन के UUID पर टिप्पणी करें / निकालें , जैसे:

    # RESUME=UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d
    
  9. टर्मिनल को बंद न करें क्योंकि आपको बाद में इसकी आवश्यकता होगी।

नोट: अगले चरण इस बात पर निर्भर करते हैं कि आप CLI या GUI पर निर्भर हैं ।


जीयूआई :

  1. GParted खोलें , या तो मेनू से, या हमारे द्वारा खोले गए टर्मिनल से अधिक आसानी से:

    gparted
    
  2. यदि आपके पास यह स्थापित नहीं है, तो आप ऐसा कर सकते हैं; बाद में पिछली कमांड को फिर से चलाएं:

    apt-get install gparted
    
  3. टॉप-राइट मेनू से अपनी ड्राइव चुनें।

  4. जैसे ही GParted लॉन्च पर स्वैप विभाजन को पुनः सक्रिय करता है , आपको विशेष स्वैप विभाजन पर राइट-क्लिक करना होगा और स्वैप -क्लिक करना होगा - यह तुरंत लागू किया जाएगा।

  5. हटाएँ स्वैप सही क्लिक के साथ विभाजन -> हटाएं। अब आपको परिवर्तन लागू करना होगा।

  6. दायाँ क्लिक के साथ अपने मुख्य / अन्य विभाजन का आकार बदलें -> आकार बदलें / स्थानांतरित करें। अब आपको परिवर्तन लागू करना होगा।

  7. टर्मिनल पर वापस, आइए बूट छवियों को फिर से बनाएँ :

    update-initramfs -u -k all
    
  8. अद्यतन GRUB :

    update-grub
    
  9. यदि आप परीक्षण करना चाहते हैं कि मशीन बूट करती है तो आप अब रिबूट कर सकते हैं।


सीएलआई :

मैं वीएम एस में जांच करूंगा यदि मेरा समाधान काम करता है, तो मैं इसे साझा करूंगा। इस बीच, इस जवाब को देखें ।


1
सबसे पूर्ण, अच्छी तरह से समझाया गया।
बेंज़कजी

यदि आपको संदेश के बाद धीमी बूट का अनुभव होता है gave up waiting for suspend/resume device: फ़ाइल में /etc/initramfs-tools/conf.d/resume, बस लाइन को अक्षम न करें, इसे बदलें RESUME=none। ( स्रोत )
tanius

17

/etc/fstabअगले बूट पर इसे फिर से सक्रिय होने से रोकने के लिए संबंधित प्रविष्टि को टिप्पणी / हटा दें , फिर swapoff -aवर्तमान में चल रहे सिस्टम के लिए स्वैप विभाजन के उपयोग को अक्षम करने के लिए रिबूट या चलाएं ।

अब स्वैप विभाजन हटाएं, अपने सिस्टम विभाजन को उस अप्रयुक्त स्थान पर विस्तारित करें और वास्तविक फाइल सिस्टम का विस्तार करें। मुझे नहीं पता कि आपका ग्राफ़िकल पार्टीशन मैनेजर वह सब कर सकता है या नहीं, लेकिन अगर यह यहाँ नहीं है, तो यह प्रयोग करने का एक विकृत-अज्ञेय तरीका है fdiskऔर resize2fs:

# fdisk /dev/sdX

# Display current partition table, copy/paste this output somewhere to be able to go back in case you screw up

Command (m for help): p
Device       Boot  Start    End Sectors Size Id Type
/dev/sda1        2048  22527   20480  10M ef EFI (FAT-12/16/32)
/dev/sda2       22528 186367  163840  80M 83 Linux
/dev/sda3      186368 204799   18432   9M 82 Linux swap / Solaris

# Delete the swap partition

Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 has been deleted.

# Delete the system partition

Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.

# Create a new system partition starting the same as the old one but ending a bit farther, at the end of the (now deleted) swap partition

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
# Enter the same start sector as the old part.
First sector (22528-204799, default 22528): 22528
# Enter the end sector of the old swap partition
Last sector, +sectors or +size{K,M,G,T,P} (22528-204799, default 204799): 204799

Created a new partition 2 of type 'Linux' and of size 89 MiB.

# Save the changes
Command (m for help): w
The partition table has been altered.

अंत में हम नए मुक्त स्थान का उपयोग करने के लिए वर्तमान फाइल सिस्टम का विस्तार करते हैं (अब तक वास्तविक फाइल सिस्टम को पता नहीं था कि हमने इसके अंतर्निहित विभाजन में कुछ और स्थान जोड़ा है)। डिफ़ॉल्ट रूप से, resize2fsपूरे विभाजन का उपयोग करता है जब तक कि एक निश्चित आकार नहीं दिया जाता है, इसलिए हमें विभाजन ब्लॉक डिवाइस के अलावा कुछ भी निर्दिष्ट करने की आवश्यकता नहीं है। एक फाइल सिस्टम बढ़ाना (सिकुड़ने के विपरीत) ऑनलाइन किया जा सकता है, जो विभाजन के साथ है:

# resize2fs /dev/sda2

अब आपने सफलतापूर्वक स्वैप को अक्षम कर दिया है और बिना रिबूट किए बिना अप्रयुक्त स्थान को पुनः प्राप्त किया है।

ध्यान दें कि डेबियन के लिए प्रक्रिया थोड़ी अलग है और कुछ और फाइलों के संपादन की आवश्यकता है। अधिक जानकारी के लिए इस उत्तर को देखें।


यह मेरे लिए काम नहीं करता है। मेरे 3 विभाजन थे। / बूट के लिए एक, / के लिए एक और स्वैप। जब मैं नए विभाजन को बनाने की कोशिश करता हूं तो मैं केवल 16gb विभाजन बना सकता हूं: /
फ्रीडो

जोड़, कम से कम डेबियन 9 आधारित डिस्ट्रोस के लिए: यह कमांड partprobeसे पहले चलाने के लिए आवश्यक है resize2fs, अन्यथा कर्नेल को नए विभाजन तालिका के बारे में नहीं पता है और कुछ भी आकार परिवर्तन नहीं होगा।
तानीस

2

GParted में स्वैप विभाजन पर राइट क्लिक करें, और Swapoff पर क्लिक करें। फिर अपने स्वैप विभाजन को हटा दें, इसे हटा दें /etc/fstabऔर अपने initramfsऔर grub(शायद अनावश्यक) को पुन: उत्पन्न करें ।

स्वैप स्क्रिप्ट मौजूद नहीं होने initramfsपर initramfsअद्यतन स्क्रिप्ट द्वारा स्वैप विभाजन को नहीं जोड़ा जाना चाहिए ।

इस पोस्ट के अनुसार , पुनर्जीवित करने का सही तरीका निम्नलिखित है initramfsऔर grub:

update-initramfs -c -k <kernel>

update-grub

-2

आप Gparted में स्वैप विभाजन पर राइट क्लिक कर सकते हैं और स्वैप विकल्प का चयन कर सकते हैं । यह उसी तरीके को पूरा करने का एक त्वरित तरीका है जो आपने पूछा था।

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