Bagaimana saya bisa mematikan swap secara permanen?

65

Swap membuat sistem saya semua lamban dan mematikannya membuat semuanya lebih lancar. Saya memiliki RAM 3,5 GB.

Saya tahu cara mematikan swap dengan memasukkan sudo swapoff -adi terminal, tapi itu hanya untuk sesi saat ini, karena setelah swap reboot hidupkan kembali. Apakah ada cara untuk mematikan swap secara permanen?

Alex Li
sumber
2
AFAIK swap digunakan untuk hibernasi. Katakan saja '
DanMan
1
Ya, tapi masih bisa digunakan. Saya punya skrip kecil yang me-mount partisi swap ketika sistem masuk ke hibernasi dan un-mount ketika kembali. Sementara itu, file swap tidak perlu aktif.
animaletdesequia
Sederhananya swapoff -a di /etc/rc.local dan lupakan itu ...;)
user264467
1
@ user264467: cukup berlawanan dengan intuisi untuk membiarkan swap diaktifkan hanya untuk menonaktifkannya pada setiap reboot, jauh lebih bersih untuk menonaktifkannya secara permanen.
karatedog

Jawaban:

119

Bolehkah saya menyarankan pendekatan yang lebih aman? Anda tidak pernah tahu kapan swap dapat menyelamatkan Anda dari crash. Meskipun bertukar memang memperlambat komputer Anda, jika Anda menggunakan program yang memakan semua RAM Anda, memiliki kemampuan bertukar dapat menyelamatkan Anda dari reboot yang keras. Ketika komputer mulai bertukar, Anda akan melihat dan dapat mematikan aplikasi yang melanggar.

Jadi, daripada menonaktifkan swap sama sekali, pastikan OS Anda bertukar sangat jarang. Ini dikendalikan oleh vm.swappinesspengaturan di /etc/sysctl.conf. Pengaturan default Ubuntu adalah 60jika saya ingat dengan benar yang terlalu banyak untuk sebagian besar situasi dan akan menyebabkan Anda mulai bertukar bahkan ketika RAM masih tersedia. Jika Anda mengurangi nilai ini, Anda akan dapat menjaga jalur pengaman swap saat hanya menggunakannya untuk keadaan darurat. Jadi, buka file:

sudo nano /etc/sysctl.conf

Dan tambahkan baris ini ke sana:

vm.swappiness=10

Jika itu masih terlalu banyak, ubah 10 menjadi 1. Sekarang, setelah Anda memulai ulang, Anda hanya akan bertukar ketika benar-benar diperlukan dan Anda bisa melupakannya.

terdon
sumber
Saya suka mengganti swappine, dan saya belum melakukannya selama bertahun-tahun. Terima kasih atas pengingatnya. sudo upvote turdon!
Darth Egregious
16
Hanya untuk menambah argumen 'pendekatan yang lebih aman': Ketika Anda tidak memiliki swap dan sistem kehabisan memori, pembunuh Linux OOM (Kehabisan Memori) dipanggil. Ini memilih proses berdasarkan skor 'buruk' dan kemudian ... membunuhnya (berakhir, ditutup) tanpa peluang aplikasi menyimpan perubahan, membersihkan, dll. Jadi, jika Anda mematikan swap dan kehabisan memori, Anda menjalankan risiko kehilangan pekerjaan jika proses penting skor buruk di mata pembunuh OOM. Jadi, Anda hanya harus mematikan swap jika Anda yakin bahwa Anda tidak akan pernah kehabisan memori.
Reid
5
@ Layak menunjukkan bahwa, jelas, hal yang persis sama akan terjadi jika Anda kehabisan ruang swap juga.
o0 '.
11
Ini sebenarnya tidak menjawab pertanyaan. Menonaktifkan swap sama sekali dapat membuat banyak akal pada sistem dengan 16GB atau 32GB RAM. Beberapa GB swap tambahan tidak akan ada gunanya dalam hal aplikasi pemakan memori, sementara sejumlah besar swap (misalnya 20GB) akan memakan banyak ruang harddrive / SSD. Juga, hibernasi dengan 32GB RAM tidak menyenangkan .
jmiserez
7
Untuk beberapa pengaturan, segera setelah Anda kehabisan RAM fisik dan mulai bertukar, sistem mulai "mengisap lumpur" dan menjadi tidak dapat digunakan. Ya, secara teori Anda bisa masuk dan membunuh pelaku, tetapi ketika dibutuhkan 20+ menit untuk mengubah fokus di UI dan bahkan lebih lama untuk mendapatkan prompt kata sandi melalui SSH, OOMing akhirnya menjadi pilihan terbaik (diikuti oleh hard reboot, diikuti dengan masuk dan memperbaiki masalah).
BCS
46

Temukan baris di / etc / fstab yang merujuk pada swap, dan beri komentar. Milik saya seperti ini:

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

Anda dapat mengedit file ini dengan gedit. Cadangkan dulu, untuk berjaga-jaga:

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

Tambahkan saja # ke awal baris tempat swap, dan reboot komputer.

ATAU

Coba cara baris perintah untuk mengomentari entri swap dalam /etc/fstabfile,

sudo sed -i.bak '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
animaletdesequia
sumber
Saya mendapatkan ini ketika saya mengetikgksu 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
Jadi, lakukan apa yang dia katakan. Komentari baris pertama yang merujuk pada "swap". : P
cHao
13

Hapus saja entri (atau komentar menggunakan # di depan baris) dari fstab dan reboot. Cari baris dengan kata "swap" di dalamnya.

sudo nano /etc/fstab
mdalacu
sumber
10
Yang ini akan bekerja juga, tapi saya pikir lebih baik mengomentari baris daripada menghapusnya sepenuhnya, kalau-kalau Anda ingin mengembalikan perubahan.
animaletdesequia
1
Saya telah mengedit posting saya.
mdalacu
11

Salah .. jika systemd menemukan partisi SWAP pada drive apa pun itu akan tetap otomatis melakukannya. Aneh bahwa tidak ada yang menyebutkan systemd. Solusinya cukup sederhana; untuk menonaktifkan swap secara permanen, Anda harus:

  1. swapoff -a
  2. sunting /etc/ststab dan komentar setiap entri swap jika ada.
  3. jalankan: sudo systemctl mask dev-sdXX.swap (di mana XX adalah partisi swap. Juga berguna untuk melakukannya untuk semua partisi yang mungkin sehingga jika ada partisi swap pada drive lain itu tidak akan dipasang)

Damai keluar.

Zibri
sumber
nomor 3 untuk kemenangan !!
oneklc