วิธีการปิดการแลกเปลี่ยนอย่างถาวรและคืนพื้นที่? (บน Debian Jessie)


48

ฉันติดตั้ง Debian Jessie ด้วยการแบ่งพาร์ติชั่นเริ่มต้นบนไดรฟ์ SSD การแบ่งพาร์ติชันดิสก์ปัจจุบันของฉันมีลักษณะดังนี้:

การแบ่งพาร์ติชันดิสก์ปัจจุบันของฉันมีลักษณะเช่นนี้

ขณะที่ผมมี 16GB แรมผมถือว่าผมไม่จำเป็นต้องแลกเปลี่ยน แต่เนื่องจากฉันมีดิสก์ไดรฟ์อื่นฉันอาจสร้าง swapfileบนไดรฟ์อื่นแทน

คุณสามารถบอกขั้นตอนที่ฉันควรทำเพื่อลบพาร์ติชันswapอย่างถูกต้องและถาวรเพื่อไม่ให้ใช้พื้นที่ดิสก์ ? ฉันต้องการลบพาร์ติชั่นสว็อปขณะที่ฉันมี 128GB SSD อยู่เท่านั้น

นี่คือสิ่งที่ฉันพยายามและรีบูตทุกครั้ง แต่ละขั้นตอนเหล่านี้ไม่ถาวรหรือไม่ได้ทำอะไร :

  1. การใช้swapoffยูทิลิตี้:

    swapoff --all
    
  2. การใช้ยูทิลิตี้GParted :

    คลิกขวาที่พาร์ทิชันสลับแล้วคลิก Swapoff

  3. การคอมเม้นต์ UUIDของพาร์ติชันswapในไฟล์ต่อไปนี้:

    /etc/fstab
    
  4. การคอมเม้นต์ UUIDของพาร์ติชันswapในไฟล์ต่อไปนี้:

    /etc/initramfs-tools/conf.d/resume
    
  5. การรันคำสั่งเหล่านี้ในที่สุด (ทั้งในคำสั่งนี้และคำสั่งตรงกันข้าม):

    update-grub
    
    update-initramfs -u
    

1
swapoff /etc/fstabเพียงปิดการใช้งานแลกเปลี่ยนสำหรับระบบทำงานอยู่ในปัจจุบันที่จะทำให้มันถาวรคุณควรรวมกับการถอดรายการที่เกี่ยวข้องจาก เมื่อดำเนินการเสร็จแล้วควรปิดใช้งานการสลับและไม่กลับมาในการบู๊ตครั้งถัดไป ตอนนี้คุณควรปรับเปลี่ยนตารางพาร์ติชันและขยายระบบไฟล์หลักของคุณหากคุณต้องการเรียกคืนพื้นที่ที่ไม่ได้ใช้ ดูคำตอบของฉันสำหรับคำแนะนำโดยละเอียด
André Borie

@ burian.vlastimil คุณช่วยโพสต์ทั้งหมดของคุณได้/etc/fstabไหม?
André Borie

@ burian.vlastimil โปรดแก้ไขในคำถามของคุณเนื่องจากความคิดเห็นไม่ช่วยให้มีการขึ้นบรรทัดใหม่ การเปลี่ยนแปลงของคุณใน fstab ยังคงมีอยู่หลังจากรีบูทหรือไม่หรือบรรทัดการแลกเปลี่ยนไม่แสดงข้อคิดเห็น?
André Borie

1
หากฉันอาจพูดถึงคำถามนี้วัตถุประสงค์ของการแลกเปลี่ยนคือการลบหน้าเว็บที่ไม่ได้ใช้และปกป้องระบบจากหน่วยความจำไม่เพียงพอ ดังนั้นตามที่ SnakeDoc แนะนำการมีการสลับขนาด 512MB นั้นดีเสมอ โดยส่วนตัวแล้วฉันเป็น SSD ที่ไม่มีพาร์ติชั่นสว็อป แต่เป็นไฟล์สว็อปในไดเรกทอรีของฉัน หากคุณเลือกที่จะทำเช่นนั้นใช้บทช่วยสอนนี้เพื่อสร้างไฟล์ ในส่วนของ swap partition คุณสามารถบูทยูเอสบีสดและใช้ gparted เพื่อลบพาร์ติชั่นนั้นได้ ตรวจสอบให้แน่ใจว่าได้อัปเดตด้วงแล้ว
Sergiy Kolodyazhnyy

4
@SnakeDoc - โดยปกติคุณจะไม่ได้รับความตื่นตระหนกของเคอร์เนลตัวจัดการ OOM จะเตะและฆ่ากระบวนการ (es) เพื่อเพิ่มหน่วยความจำ (และมักจะเป็นงานที่ดีมากในการตัดสินใจว่าจะฆ่าคนไหน เพื่อฆ่ากระบวนการที่ใหญ่และใหม่กว่า) ฉันบำรุงรักษาเซิร์ฟเวอร์จำนวนมากที่ไม่มีการสลับที่ตั้งค่าเป็น panic บน OOM แทนที่จะฆ่ากระบวนการเพราะเซิร์ฟเวอร์มีการกำหนดค่าไว้ซึ่งโดยปกติแล้วพวกเขาจะไม่หมดหน่วยความจำและถ้าพวกเขาทำฉันต้องการให้พวกเขาตื่นตระหนกและรีบูตมากกว่า swap และทำให้ช้าลง (หรือปล่อยให้ OOM handler ตัดสินใจว่ากระบวนการใดจะฆ่า)
Johnny

คำตอบ:


45

ดำเนินการเป็น root:

# swapoff -a

และเพื่อให้การเปลี่ยนแปลงนั้นเป็นแบบถาวรแก้ไข/etc/fstabและลบหรือใส่ความคิดเห็นในรายการ swap


@ burian.vlastimil คุณหมายถึงอะไรกับล็อค? คุณสามารถตรวจสอบว่าไม่มีการใช้อุปกรณ์ swap ผ่านการดูที่บรรทัดแรกของด้านบน - ควรรายงาน 'KiB Swap: 0 ทั้งหมด' คุณสามารถcat /proc/swaps- ซึ่งควรรายงานบรรทัดส่วนหัว หากเป็นเช่นนั้นคุณสามารถลบพาร์ติชั่นสว็อป - และขยายพาร์ติชั่นอื่น - ได้อย่างปลอดภัยเพื่อเรียกคืนพื้นที่นั้น - ถ้านั่นคือสิ่งที่คุณต้องการ
maxschlepzig

@ burian.vlastimil การสลับอาจจะเปิดใช้งานโดย initramfs ของคุณคุณอาจต้องลบresumeตัวเลือกเคอร์เนล (ที่อ้างอิง UUID ของการแลกเปลี่ยนของคุณ) เช่น grub อัปเดตและสร้าง initramfs ใหม่ (โดยทั่วไปทำตรงข้ามกับบางขั้นตอนในSwapFaq )
maxschlepzig

@ burian.vlastimil คุณยังสามารถ grep config ของคุณ (ใต้/boot) สำหรับ uuid นั้นและคุณสามารถคลาย initramsfs ของคุณและ grep มันเพื่อไปที่ต้นเหตุของเรื่องนี้ ตรวจสอบให้แน่ใจว่าคุณทำ grep ที่คำนึงถึงขนาดตัวพิมพ์
maxschlepzig

2
เพียงแค่ใส่ในswapoff -a /etc/rc.localมีการสลับในไม่กี่มิลลิวินาทีเมื่อคุณบูตขึ้นไม่มีปัญหา ด้วย 16GB RAM จะไม่มีการเขียนอะไรเป็นเวลานาน เพียงแค่ออกจากพื้นที่ swap มี (พื้นที่ดิสก์ที่มีราคาถูก) และจะไม่เปลี่ยน /etc/fstab
Skaperen

สร้างไฟล์ swap ชั่วคราวจากนั้นคุณสามารถกู้คืนพื้นที่ได้โดยการลบไฟล์เมื่อคุณปิด swap
Skaperen

40
  1. หากคุณเปิดGPartedไว้ให้ปิด คุณลักษณะ Swapoff ของมันไม่ปรากฏว่าเป็นแบบถาวร

  2. เปิดเทอร์มินัลแล้วกลายเป็นroot( su); ถ้าคุณได้sudoเปิดใช้งานคุณอาจทำเช่นsudo -i; ดูman sudoตัวเลือกทั้งหมด):

    sudo -i
    
  3. ปิดพาร์ติชันswapเฉพาะและ / หรือทั้งหมดของs swap :

    swapoff --all
    
  4. ตรวจสอบให้แน่ใจ 100% ว่าพาร์ติชันswapพาร์ติชั่นนั้นปิด:

    cat /proc/swaps
    
  5. เปิดโปรแกรมแก้ไขข้อความที่คุณมีความเชี่ยวชาญในไฟล์นี้เช่นnanoหากไม่แน่ใจ:

    nano /etc/fstab
    
  6. ใส่ความคิดเห็นออก / ลบUUIDของพาร์ติชันswapเช่น:

    # UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d    none    swap    sw    0    0
    
  7. เปิดโปรแกรมแก้ไขข้อความที่คุณมีความเชี่ยวชาญในไฟล์นี้เช่นnanoหากไม่แน่ใจ:

    nano /etc/initramfs-tools/conf.d/resume
    
  8. ใส่ความคิดเห็น / ลบUUIDของพาร์ติชันswap ที่ระบุไว้ก่อนหน้านี้เช่น:

    # RESUME=UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d
    
  9. อย่าปิดเทอร์มินัลเนื่องจากคุณจะต้องใช้มันในภายหลัง

หมายเหตุ:ขั้นตอนต่อไปจะแตกต่างกันขึ้นอยู่กับว่าคุณจะพึ่งพาCLIหรือGUI


GUI :

  1. เปิดGPartedทั้งจากเมนูหรือสะดวกกว่าจากเทอร์มินัลที่เราเปิด:

    gparted
    
  2. หากคุณยังไม่ได้ติดตั้งคุณสามารถทำได้ หลังจากนั้นให้รันคำสั่งก่อนหน้าอีกครั้ง:

    apt-get install gparted
    
  3. เลือกไดรฟ์ของคุณจากเมนูด้านบนขวา

  4. เมื่อGPartedเปิดใช้งานswapพาร์ติชั่นใหม่อีกครั้งคุณจะต้องคลิกขวาที่พาร์ติชั่นswapและคลิกที่ Swapoff -> สิ่งนี้จะถูกนำไปใช้ทันที

  5. ลบswap partition ด้วยการคลิกขวา -> ลบ คุณต้องทำการเปลี่ยนแปลงทันที

  6. ปรับขนาดพาร์ติชั่นหลัก / อื่น ๆ ของคุณด้วยการคลิกขวา -> ปรับขนาด / ย้าย คุณต้องทำการเปลี่ยนแปลงทันที

  7. กลับไปที่เทอร์มินัลลองสร้างอิมเมจสำหรับบูตใหม่อีกครั้ง:

    update-initramfs -u -k all
    
  8. อัปเดตGRUB :

    update-grub
    
  9. คุณสามารถรีบูตตอนนี้หากคุณต้องการทดสอบว่าเครื่องบูทขึ้น


CLI :

ฉันจะตรวจสอบในVM s หากวิธีการแก้ปัญหาของฉันทำงานได้จากนั้นฉันจะแบ่งปัน ในระหว่างนี้ดูคำตอบนี้


1
สมบูรณ์ที่สุดอธิบายได้ดี
benzkji

หากคุณพบบูตช้าหลังจากนั้นด้วยข้อความgave up waiting for suspend/resume device: ในไฟล์ไม่เพียงแค่ปิดการใช้งานสายแทนที่ด้วย/etc/initramfs-tools/conf.d/resume RESUME=none( ต้นฉบับ )
tanius

17

ข้อคิดเห็น / ลบรายการที่เกี่ยวข้องใน/etc/fstabเพื่อป้องกันไม่ให้ถูกเปิดใช้งานอีกครั้งในการบู๊ตครั้งถัดไปจากนั้นรีบูตหรือเรียกใช้swapoff -aเพื่อปิดการใช้งานการแลกเปลี่ยนพาร์ติชั่นสำหรับระบบที่กำลังทำงานอยู่

ตอนนี้ลบ swap พาร์ติชันขยายพาร์ติชันระบบของคุณผ่านพื้นที่ว่างที่ไม่ได้ใช้และขยายระบบไฟล์จริง ฉันไม่ทราบว่าตัวจัดการพาร์ติชันกราฟิกของคุณสามารถทำสิ่งนั้นได้หรือไม่ แต่ถ้านี่เป็นวิธีที่ไม่เชื่อเรื่องพระเจ้าโดยใช้วิธีนี้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

ในตอนนี้คุณได้ปิดใช้งานการสลับและเรียกคืนพื้นที่ว่างที่ไม่ได้ใช้สำเร็จโดยไม่ต้องรีบูตเครื่อง

โปรดทราบว่าขั้นตอนสำหรับ Debian นั้นแตกต่างกันเล็กน้อยและต้องแก้ไขไฟล์เพิ่มเติม ลองอ่านคำตอบนี้สำหรับข้อมูลเพิ่มเติม


มันไม่ได้ผลสำหรับฉัน ฉันมี 3 พาร์ติชัน หนึ่งสำหรับ / boot หนึ่งสำหรับ / และ swap เมื่อฉันพยายามสร้างพาร์ติชันใหม่ฉันสามารถสร้างพาร์ติชัน
กิกะไบต์ได้

นอกจากนี้อย่างน้อยสำหรับ Distros ที่ใช้ Debian 9: จำเป็นต้องเรียกใช้partprobeก่อนresize2fsคำสั่งมิฉะนั้นเคอร์เนลไม่ทราบเกี่ยวกับตารางพาร์ติชันใหม่และจะไม่มีการปรับขนาดใด ๆ
tanius

2

คลิกขวาที่ swap partition ใน GParted แล้วคลิก Swapoff จากนั้นลบ swap partition ของคุณลบมันออก/etc/fstabและสร้างinitramfsและgrub(อาจไม่จำเป็น)

พาร์ทิชัน swap ไม่ควรถูกเพิ่มเข้าไปinitramfsโดยinitramfsสคริปต์ปรับปรุงถ้าพาร์ทิชัน swap ไม่อยู่

ตามโพสต์นี้ต่อไปนี้เป็นวิธีที่ถูกต้องในการสร้างใหม่initramfsและgrub:

update-initramfs -c -k <kernel>

update-grub

-2

คุณสามารถคลิกขวาที่ swap partition ใน Gparted และเลือกตัวเลือกswapoff นั่นเป็นวิธีที่รวดเร็วในการบรรลุสิ่งเดียวกันกับที่คุณถาม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.