Bagaimana cara menonaktifkan swap?

83

Saya punya beberapa data sensitif di ram yang saya lebih suka tidak berada di disk. Bagaimana cara menonaktifkan swap? Saya punya lebih dari cukup ram. Jika ram terlalu tinggi saya tidak punya masalah dengan proses yang dihentikan. Bagaimana cara menonaktifkan swap?

Catatan: Saya tidak memiliki partisi swap dan ini berjalan di VM (VMWare)


sumber
2
Bahkan jika Anda memiliki banyak RAM, itu bukan ide terbaik untuk sepenuhnya bekerja tanpa swap (lihat misalnya alexonlinux.com/swap-vs-no-swap ). Bergantung pada kebutuhan Anda, Anda mungkin mempertimbangkan untuk menempatkan partisi swap pada perangkat aman dm-crypt, sehingga semua yang tertulis di dalamnya akan dienkripsi. Anda harus memastikan dalam kasus seperti itu, bahwa swap diaktifkan setelah volume terenkripsi tersedia, dan dinonaktifkan sebelum pemetaan perangkat dinonaktifkan, tentu saja (saya pikir itu default di Ubuntu, tapi saya tidak yakin). Cukup cari di web untuk "swap terenkripsi" untuk menemukan banyak panduan.
soulsource
1
Apropos: askubuntu.com/questions/248158/… Anda tidak perlu bertukar sampai Anda membutuhkannya. Dan kemudian Anda benar-benar membutuhkannya.
Bagaimana dengan cryptswap? / dev / mapper / cryptswap1

Jawaban:

121

Menggunakan

sudo swapoff -a  

adalah cara yang biasa untuk mematikan swap, dengan swapon -aperintah yang digunakan untuk menyalakannya kembali. Lihat man swapoff untuk informasi lebih lanjut tentang mematikan swap untuk perangkat eksplisit.

ubfan1
sumber
7
Ini sepertinya tidak bertahan selama reboot?
ebyrob
19
Perubahan permanen untuk swap biasanya dilakukan di / etc / fstab.
ubfan1
Apakah kita cukup menyalin ini ke / etc / fstab
Max
6
Tidak. Sebaliknya, Anda mengomentari baris swap di / etc / fstab.
Torsten Bronger
Anda dapat membaca jawaban lain bagaimana berkomentar.
Carolus
25

Anda dapat menonaktifkan swap setelah reboot dengan hanya berkomentar (tambahkan # di depan baris) entri swap dalam /etc/fstabfile. Ini akan mencegah partisi swap dari pemasangan secara otomatis setelah reboot. Untuk melakukan ini dalam satu perintah:

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

atau hanya:

sudo sed -i '/ swap / s/^/#/' /etc/fstab

Sekarang entri swap Anda /etc/fstabakan terlihat mirip dengan ini:

#UUID=xxxxxxxx-xxxx-xxxxx-xxx-xxxxxxxxxxx none            swap    sw              0       0

Dengan nomor spesifik Anda sendiri dan huruf kecil, bukan huruf "x".

Avinash Raj
sumber
2
Mengapa UUID yang Anda kutip memiliki beberapa angka konkret? Haruskah mereka identik untuk semua UUID? UUID partisi saya tidak memiliki kebetulan dengan angka yang Anda tentukan.
Ruslan
Perintah sed Anda tidak berfungsi seandainya bidang dipisahkan oleh tab (bukan spasi). Lebih baik ditulis sebagai sed -ri '/\sswap\s/s/^#?/#/' /etc/fstabPS: Saya juga menambahkan #?untuk mencegah perubahan tambahan ke / etc / fstab ketika saluran sudah dinonaktifkan.
Alek_A
4

Jika Anda khawatir tentang konten swap Anda selalu dapat mematikannya seperti yang ditentukan dengan cara biasa dengan sudo swapoff -adan kemudian mengisi perangkat swap dengan nol atau data acak menggunakan dd.

Pertama-tama gunakan konten fstab untuk menemukan swapfile atau perangkat Anda ( less /etc/fstab)

Setelah menemukannya dan double dan triple memeriksa lokasi di say sda5 atau /swapfile (partisi swap diganti secara default dengan swapfile di 17,04 dan seterusnya.) .

Dalam kasus partisi swap atau drive: (diawali dengan / dev) mengeluarkan perintah "disk destroyer" (tidak boleh digunakan dengan ringan)

sudo dd if=/dev/zero of=swapmengganti kata swap dengan perangkat swap atau file tempat Anda berada/etc/fstab

untuk meledakkannya dengan nol atau

sudo dd if=/dev/random of=swapsekali lagi mengganti kata swap dengan perangkat swap atau file tempat Anda berada/etc/fstab

untuk meledakkannya penuh dengan data acak.

Dalam kasus swapfile (diawali dengan hanya path): Anda cukup menghapus file denganrm /path/to/swapfile

Lain kali Anda mengaktifkan swap dengan

swapon -a

Sistem akan dengan senang hati menggunakannya lagi. Jika Anda memiliki banyak RAM, Anda mungkin tidak perlu menukar sama sekali. Keluarkan perintah

free ketika sistem berada di bawah beban berat dan lihat berapa banyak yang digunakan untuk membuat penentuan ini.

Jika Anda menentukan bahwa Anda secara permanen tidak perlu swap (untuk hibernasi atau apa pun), Anda cukup mengomentari baris itu di fstab seperti yang disarankan di sini

Gratis

Penatua Geek
sumber
3

Ini mungkin solusi yang lemah, tetapi saya sering menggunakannya. Anda cukup mengetik

sudo -s
crontab -e

Dan tambahkan

@reboot sudo swapoff -a  

Jadi, itu akan dinonaktifkan secara otomatis saat boot.

pengguna10635
sumber
4
Saya harap tidak usah dikatakan bahwa ini adalah metode yang sangat buruk. Mengapa membuat tugas boot-time untuk mematikan opsi lain, ketika ada file lain yang dapat diedit untuk menghentikannya dinyalakan di tempat pertama
underscore_d
Mungkin tidak menyenangkan secara estetika, tetapi tidak ada yang buruk tentang hal itu. Jika Anda sudah sangat terbiasa menggunakan crontab maka solusi ini akan menggulung jari sedikit lebih mudah dan lebih masuk akal daripada hanya menyalin secara membabi buta apa yang pengguna lain di SE katakan kepada Anda untuk lakukan pada / etc / fstab. Dan, Anda masih ingat bagaimana cara melakukannya ke komputer baru tanpa harus lari ke google lagi. Saya kebetulan hampir tidak tahu apa itu crontab dan saya jauh lebih akrab dengan partisi disk, tetapi logikanya masih berlaku.
Nicholas Pipitone
Sebenarnya, ini mungkin solusi yang lebih baik. Karena / etc / fstab saran hanya berfungsi untuk partisi swap. Solusi ini berlaku untuk pengaturan linux terlepas dari apakah mereka menggunakan partisi atau swapfile atau tidak.
Nicholas Pipitone
2
sudo swapoff -a

Perintah di atas menonaktifkan swap hanya untuk sesi saat ini , Anda perlu berkomentar partisi swap di file / etc / fstab . Untuk melakukan ini, Anda hanya perlu menambahkan "#" (baris komentar) ke awal baris swap. Langkah-langkahnya adalah:

  1. Buka file fstab, ketikkan sudo gedit /etc/fstabterminal.

Konten file akan terlihat seperti ini:

proc            /proc           proc    nodev,noexec,nosuid 0       0
/host/ubuntu/disks/root.disk /               ext4    loop,errors=remount-ro 0       1
/host/ubuntu/disks/swap.disk none            swap    loop,sw         0       0
#/dev/sda10 /media/ASD  vfat    defaults    0   0
#/dev/sda1  /media/98   vfat    defaults    0   0
  1. Cukup tambahkan hash (#) ke awal baris partisi swap, sehingga baris tersebut terlihat seperti:

#/host/ubuntu/disks/swap.disk none swap loop,sw 0 0

  1. Nyalakan kembali PC Anda
Sohail xIN3N
sumber
0

Pergilah ke terminal dan jalankan perintah ini: gnome-disks. Itu tidak diinstal di semua distribusi. Jika demikian, ikuti petunjuk yang dicetak untuk menginstalnya dan coba lagi. Cari perangkat dengan kata 'swap' di panel kiri. Biasanya memiliki ukuran yang sama dengan memori fisik Anda. Klik tombol kotak untuk menonaktifkannya. Otentikasi perubahan ini dengan kata sandi root Anda.

Tangkapan layar: http://imgur.com/Og6igqb

Dalam aplikasi Monitor Sistem (gnome-system-monitor), Anda akan melihatnya melaporkan area swap sebagai 'tidak tersedia'. Area swap dinonaktifkan tetapi tidak dihapus. Anda dapat mengaktifkannya kembali dengan mudah di masa mendatang. Menghapus ruang swap telah menyebabkan sistem saya tidak berbahaya, tetapi Anda akan membuat lebih banyak pekerjaan untuk diri Anda sendiri jika Anda memutuskan ingin kembali (hibernasi) di masa depan.

sunting: untuk mencegah pemasangan pada saat startup, Anda harus masuk ke "Edit Mount Options ..." di gnome-disk dan hapus centang "Mount at startup".

pengguna170544
sumber
1
Apakah menurut Anda ini menjawab kekhawatiran pengguna tentang memiliki data sensitif pada partisi swap? Bisakah Anda memberi tahu kami alasannya?
Penatua Geek
1
Poin utama pengguna adalah menanyakan cara menonaktifkan swap. Jika Anda memiliki data sensitif, Anda harus menggunakan enkripsi pra-boot idealnya.
user170544
1
Dengan hormat saya tidak setuju. Ketika saya membaca pertanyaan, kalimat pertama yang saya temui adalah "Saya memiliki beberapa data sensitif di ram yang saya pilih untuk tidak berada di disk." Saya percaya ini adalah perhatian utamanya, itulah mengapa ia mulai dengan itu. Apapun, saya percaya saya telah membahas setiap aspek dari pertanyaannya dalam jawaban saya. Anggap itu contoh yang bermanfaat.
Penatua Geek
0

Ganti defaultsdengan sw,noautodalam baris yang terdiri dari entri swap dalam file /etc/fstab:

/dev/mapper/centos-swap swap  swap    sw,noauto        0 0

(Jalannya /dev/mapper/centos-swapmungkin berbeda untuk Anda).

Sekarang checkout output setelah reboot, swap Anda tidak pernah dipasang:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3791         100        3408           8         282        3483
**Swap:             0           0           0**
askb
sumber