ฉันจะปิดการแลกเปลี่ยนอย่างถาวรได้อย่างไร


64

Swap ทำให้ระบบของฉันซบเซาและการปิดทำให้ทุกอย่างราบรื่นขึ้น ฉันมี RAM 3.5 GB

ฉันรู้วิธีปิดการแลกเปลี่ยนโดยป้อนsudo swapoff -aในเทอร์มินัล แต่นั่นเป็นเพียงสำหรับเซสชันปัจจุบันเพราะหลังจากรีบูตการสลับเปิดตัวเองอีกครั้ง มีวิธีใดที่จะปิดการแลกเปลี่ยนอย่างถาวร?


2
AFAIK การสลับจะใช้สำหรับการไฮเบอร์เนต เพียงแค่พูดว่า '
DanMan

1
ใช่มันเป็น แต่ก็ยังสามารถใช้งานได้ ฉันมีสคริปต์เล็กน้อยที่เมาท์พาร์ทิชัน swap เมื่อระบบเข้าสู่โหมดไฮเบอร์เนตและยกเลิกการเมานต์เมื่อมันกลับมา ไฟล์ swap ไม่จำเป็นต้องใช้งานในระหว่างนี้
animaletdesequia

เพียงใส่swapoff -aใน /etc/rc.local แล้วลืมเรื่องนั้น ... ;)
user264467

1
@ user264467: มันค่อนข้างใช้งานง่ายที่จะเปิดใช้งานการสลับเพียงแค่ปิดการใช้งานในทุก ๆ การรีบูต
karatedog

คำตอบ:


119

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

ดังนั้นแทนที่จะปิดการใช้งานการสลับโดยสิ้นเชิงเพียงให้แน่ใจว่าระบบปฏิบัติการของคุณมีการแลกเปลี่ยนบ่อยครั้งมาก นี้จะถูกควบคุมโดยการตั้งค่าในvm.swappiness /etc/sysctl.confการตั้งค่าเริ่มต้นของ Ubuntu คือ60ถ้าฉันจำได้อย่างถูกต้องซึ่งมากเกินไปสำหรับสถานการณ์ส่วนใหญ่และจะทำให้คุณเริ่มการแลกเปลี่ยนแม้ในขณะที่ RAM ยังคงมีอยู่ หากคุณลดค่านี้คุณจะสามารถรักษาระดับความปลอดภัยของการแลกเปลี่ยนในขณะที่ใช้มันในกรณีฉุกเฉินเท่านั้น ดังนั้นเปิดไฟล์:

sudo nano /etc/sysctl.conf

และเพิ่มบรรทัดนี้ลงไป:

vm.swappiness=10

หากยังคงมากเกินไปเปลี่ยน 10 เป็น 1 ทีนี้หลังจากคุณรีสตาร์ทคุณจะสลับเมื่อจำเป็นเท่านั้นและคุณสามารถลืมมันได้


ฉันชอบเปลี่ยน swappines และฉันไม่ได้ทำในหลายปี ขอบคุณสำหรับการเตือน sudo upvote turdon!
Darth Egregious

16
เพียงเพิ่มไปยังอาร์กิวเมนต์ 'แนวทางที่ปลอดภัยกว่า': เมื่อคุณไม่มี swap และระบบไม่มีหน่วยความจำเครื่องฆ่า Linux OOM (Out Of Memory) จะถูกเรียกใช้ นี่เป็นการเลือกกระบวนการที่ขึ้นอยู่กับคะแนน 'ความไม่ดี' แล้ว ... ฆ่ามัน (ยุติ, ปิด) โดยไม่มีโอกาสที่แอปพลิเคชันจะบันทึกการเปลี่ยนแปลงล้างข้อมูล ฯลฯ ดังนั้นหากคุณปิดสวิตช์และหมด หน่วยความจำคุณใช้ความเสี่ยงของการสูญเสียงานเป็นอย่างดีถ้ากระบวนการสำคัญทำคะแนนไม่ดีในสายตาของนักฆ่า OOM ดังนั้นคุณควรปิดการแลกเปลี่ยนหากคุณมั่นใจว่าคุณจะไม่มีหน่วยความจำหมด
เรด

5
@ เรดน่าจะชี้ให้เห็นอย่างชัดเจนว่าสิ่งเดียวกันนี้จะเกิดขึ้นหากคุณไม่มีพื้นที่สวอปมากเกินไป
o0 '

11
สิ่งนี้ไม่ได้ตอบคำถาม การปิดใช้งานการสลับอย่างสมบูรณ์นั้นสามารถสร้างความรู้สึกได้มากมายบนระบบที่มี RAM ขนาด 16GB หรือ 32GB การสลับขนาดพิเศษเล็กน้อยจะไม่สามารถทำได้ดีในกรณีของแอปพลิเคชันที่กินหน่วยความจำในขณะที่จำนวนมากของการสลับ (เช่น 20GB) จะใช้พื้นที่ฮาร์ดไดรฟ์ / SSD จำนวนมาก นอกจากนี้จำศีลกับ 32GB ของ RAM เป็นไม่ สนุก
jmiserez

7
สำหรับการตั้งค่าบางอย่างทันทีที่คุณหมด RAM จริงและเริ่มแลกเปลี่ยนระบบจะเริ่ม "ดูดโคลน" และใช้ไม่ได้ ใช่ในทางทฤษฎีคุณสามารถเข้ามาและฆ่าผู้กระทำความผิดได้ แต่เมื่อใช้เวลา 20+ นาทีในการเปลี่ยนโฟกัสใน UI และยิ่งใช้เวลานานขึ้นกว่าจะได้รับพรอมต์รหัสผ่านผ่าน SSH OOMing ก็กลายเป็นตัวเลือกที่ดีที่สุด รีบูตตามด้วยการเข้าและแก้ไขปัญหา)
BCS

46

ค้นหาบรรทัดใน / etc / fstab ที่อ้างถึง swap และคอมเม้นท์ ฉันเป็นเช่นนี้

UUID=6880a28d-a9dc-4bfb-ba47-0876b50e96b3 /               ext4    errors=remount-ro 0       1
UUID=7350e6f2-e3a7-4d80-9a95-8741c7db118f /home           ext4    defaults        0       2
UUID=E2E26AD1E26AAA0D /media/windows  ntfs    defaults,umask=007,gid=46 0       0

# Swap a usb extern (3.7 GB):
#/dev/sdb1 none swap sw 0 0

คุณสามารถแก้ไขไฟล์นี้ด้วย gedit สำรองข้อมูลก่อนในกรณี:

sudo cp /etc/fstab /etc/fstab_backup
gksu gedit /etc/fstab

เพียงแค่เพิ่ม # ไปยังจุดเริ่มต้นของบรรทัดที่มีการสลับและรีบูตคอมพิวเตอร์

หรือ

ลองวิธีที่บรรทัดคำสั่งในการคอมเม้นต์รายการ swap ใน/etc/fstabไฟล์

sudo sed -i.bak '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

ฉันได้รับสิ่งนี้เมื่อฉันพิมพ์gksu gedit /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /host/ubuntu/disks/root.disk / ext4 loop,errors=remount-ro 0 1 /host/ubuntu/disks/swap.disk none swap loop,sw 0 0
Alex Li

1
ดังนั้นทำในสิ่งที่เขาพูด ใส่ความคิดเห็นในบรรทัดแรกที่อ้างถึง "สลับ" : P
cHao

13

เพียงแค่ลบรายการ (หรือแสดงความคิดเห็นโดยใช้ # ด้านหน้าของบรรทัด) จาก fstab และรีบูต มองหาบรรทัดที่มีคำว่า "swap" อยู่

sudo nano /etc/fstab

10
อันนี้ก็ใช้งานได้เช่นกัน แต่ฉันคิดว่าเป็นการดีกว่าที่จะแสดงความคิดเห็นในบรรทัดแทนที่จะลบออกอย่างสมบูรณ์ในกรณีที่คุณต้องการยกเลิกการเปลี่ยนแปลง
animaletdesequia

1
ฉันแก้ไขโพสต์แล้ว
mdalacu

11

ผิด .. หาก systemd พบพาร์ทิชัน SWAP บนไดรฟ์ใด ๆ มันจะทำการติดตั้งอัตโนมัติ แปลกที่ไม่มีใครพูดถึง systemd การแก้ปัญหาค่อนข้างง่ายอยู่แล้ว; หากต้องการปิดใช้งานการสลับอย่างถาวรคุณต้อง:

  1. swapoff -a
  2. แก้ไข / etc / fstab และแสดงความคิดเห็นรายการ swap ใด ๆ ถ้ามี
  3. รัน: sudo systemctl mask dev-sdXX.swap (โดยที่ XX คือ swap partition นอกจากนี้ยังมีประโยชน์ที่จะทำมันสำหรับทุก ๆ พาร์ติชันที่เป็นไปได้ดังนั้นถ้ามี swap พาร์ติชั่นบนไดรฟ์อื่นมันจะไม่ถูกเมาท์)

ลาก่อน.


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