Bagaimana cara menambah ukuran swapfile tanpa melepasnya di terminal?

59

Apakah ada cara untuk meningkatkan "swapfile" saya yang ada tanpa harus menghancurkan dan membuatnya kembali? Saya ingin menambah ruang swap dari 1GB ke 2GB. Saat ini sudah diatur seperti itu:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        1048572 736640  -1
$ ls -lh /swapfile
-rw------- 1 root root 1.0G Nov  9  2016 /swapfile

Saya menggunakan Ubuntu 14.04.

Dave
sumber
Berapa banyak RAM yang Anda miliki? Apakah 2G cukup? Saya pikir Anda harus swapoff, membuat baru / swapfile mkswap,, danswapon -a
heynnema
1
Tambahkan file swap baru, ikuti instruksi dari pertanyaan di atas. Anda dapat memiliki 2 file swap;)
Ravexina
1
@Ravexina, Sebuah pertanyaan pemula mungkin, tapi mengapa saya ingin menambahkan file swap baru daripada meningkatkan ukuran yang sudah ada? Atau apakah tidak mungkin untuk menambah file swap yang ada?
Dave
@ Dave Itu mungkin juga, karena Anda mungkin tahu kita bisa swapoffkemudian dddan mkswapakhirnya swapon. Saya pikir Anda tidak ingin menyentuh file Anda.
Ravexina
2
@Ravexina memposting itu sebagai jawaban
Sergiy Kolodyazhnyy

Jawaban:

67

Nonaktifkan dulu file swap:

sudo swapoff /swapfile

Sekarang mari kita tambah ukuran file swap:

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 oflag=append conv=notrunc

Perintah di atas akan menambahkan 1GiB nol byte pada akhir file swap Anda.

Atur file sebagai "file swap":

sudo mkswap /swapfile

aktifkan swaping:

sudo swapon /swapfile
Ravexina
sumber
3
sudo fallocate -l 2G /swapfilemungkin lebih aman daripada dd (meskipun tidak menyimpan swapfile asli), dan juga membutuhkan a sudo chmod 600 /swapfile.
heynnema
7
@heynnema Tidak fallocatemembuat file jarang? Halaman swaponmanual mengatakan file swap yang jarang bermasalah (disebutkan secara khusus fallocate).
muru
3
@heynnema tidak, halaman mkswapmanual juga mengatakan bahwa file tidak boleh mengandung lubang.
muru
1
@muru kira saya salah :-) Setiap kali saya membaca cara membuat / swapfile dengan permulaan 17.04 mereka menggunakan fallocate. Saya kira kita hanya perlu menggunakan "perusak disk"!
heynnema
1
@heynnema: Apa yang bisa Anda lakukan adalah menggunakan fallocateuntuk pra-alokasikan ruang disk dan kemudian gunakan dduntuk mengisi lubang dengan nol.
David Foerster
39

Anda harus menambahkan swapfile baru daripada mengubah ukuran yang sudah ada karena tidak ada biaya untuk melakukannya . Untuk mengubah ukuran swapfile, Anda harus terlebih dahulu menonaktifkannya, yang mengusir konten swap ke RAM, yang meningkatkan tekanan pada RAM dan bahkan dapat memanggil pembunuh OOM (belum lagi bahwa Anda mungkin dapat meremukkan disk Anda selama beberapa menit). Beberapa file swap bukan masalah, mudah untuk mensetup file swap lainnya. Secara harfiah tidak ada manfaat untuk mengubah ukuran file swap daripada menambahkan yang lain.

dd if=/dev/zero of=/some/file count=1K bs=1M
mkswap /some/file
sudo chown root:root /some/file
sudo chmod 600 /some/file
sudo swapon /some/file
muru
sumber
Apakah sudo chmod 600 /some/filediperlukan, atau tidak?
heynnema
1
Dan apakah count=1Kmemberikan file 1G? hitungan dalam ukuran blok, ya? Dan itu bisa menjadi 512/4096? Atau apakah matematika saya salah?
heynnema
3
+1 Pendekatan ini juga memudahkan untuk memutuskan salah satu swapfile jika nanti Anda memutuskan Anda membutuhkan ruang disk kembali.
joeytwiddle
2
Ini benar-benar perlu ditandai sebagai jawaban yang benar. Wow, bravo!
Beshoy Girgis
1
@uru apakah ini seharusnya menjadi solusi permanen? Saya melakukan perintah ini pada 30 April, tetapi pada suatu waktu di bulan Mei, swapfile kedua saya hilang. Saya tidak menghapus tetapi sudah hilang
Christopher Rucinski
13

Anda dapat membuat file swap lain seperti yang saya lakukan:

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. Verifikasi itu berfungsi dengan baik sudo swapon --show
    Untuk membuatnya permanen, tambahkan file ke fstabfile yang diketik:
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
borekon
sumber
Harap dicatat bahwa fallocatebit harus digunakan untuk membuat file, karena itu membuat file sparce. lihatman mkswap
Charles Green
@CharlesGreen itu berfungsi seperti yang saya tulis, jadi itu harus bekerja untuk siapa pun.
borekon
Saya akan membaca sugegst man mkswap, terutama paragraf terakhir sebelum "Lingkungan"
Charles Green
1
bekerja pada NanoPi Neo dengan Armbian v 5.65
BiTinerary
5

Saya memiliki hasil yang baik pada Ubuntu 17.04 saya mengikuti saran dari Arian Acosta dari blogpost . Satu dapat menggantikan 4G di sini sudo fallocate -l 4G /swapfiledengan jumlah gigabyte yang Anda inginkan. Misalnya sudo fallocate -l 2G /swapfileuntuk TS.

Secara umum, ukuran yang disarankan untuk file swap adalah 2X jumlah RAM, tetapi Anda dapat membuatnya sebesar yang Anda butuhkan. Ingat bahwa ini bukan pengganti memori karena kinerjanya jauh lebih buruk karena banyak hal yang disimpan dalam disk.

Saya telah membuat skrip bash sederhana yang menambah file swap ke 4GB dan mengujinya di Ubuntu 16.04.

Ini bisa dijalankan baris per baris atau skrip bash, tapi saya menggunakannya untuk membuat instalasi tanpa kepala.

#!/bin/bash
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Turning Off Swap ======"
sudo swapoff /swapfile
echo "====== Allocating 4GB Swap ======"
sudo fallocate -l 4G /swapfile
echo "====== Making Swap ======"
sudo mkswap /swapfile
echo "====== Setting Permissions to Root Only  ======"
sudo chmod 600 /swapfile
echo "====== Turning On Swap ======"
sudo swapon /swapfile
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Done! ======"
Denis Trofimov
sumber
3
Anda harus menambahkan argumen ke skrip, yang merupakan jumlah SWAP yang akan ditambahkan dan akhirnya menambahkannya ke fstab. Tapi tetap saja, saya suka ini
LnxSlck
0

Jawaban umum untuk "bagaimana mengubah ukuran file swap":

Dari Bogdan Cornianu, di sini: https://bogdancornianu.com/change-swap-size-in-ubuntu/

[QUOTE (HAMPIR VERBATIM, hanya dengan beberapa tambahan komentar saya) MULAI]

Pada contoh berikut, kami akan memperluas ruang swap yang tersedia di / swapfile dari 4 GiB hingga 8 GiB.

  1. Matikan semua proses swap

    sudo swapoff -a
    
  2. Ubah ukuran swap

    sudo dd if=/dev/zero of=/swapfile bs=1G count=8
    

    if= file input = file
    ofoutput
    bs= ukuran blok; di sini, 1Gsingkatan 1 gibibyte, atau GiB, yang menurut man ddadalah G = 1024 * 1024 * 1024 byte
    count= multiplier blok

  3. Jadikan file dapat digunakan sebagai swap

    sudo mkswap /swapfile
    
  4. Aktifkan file swap

    sudo swapon /swapfile
    
  5. Periksa jumlah swap yang tersedia

    grep SwapTotal /proc/meminfo
    

[QUOTE END]

Gabriel Staples
sumber