Bagaimana cara menambah ruang swap?

128

Secara default, saya memiliki ruang swap 250MB di Ubuntu, dan saya ingin memperluasnya ke ukuran yang lebih besar. Saya perlu 800MB, yang saya pikir akan cukup untuk membuka beberapa aplikasi tanpa harus mencapai batas swap saat ini. Saya harap seseorang dapat membantu saya.

Bruno
sumber
2
Harap buka Gparted, dan poskan tangkapan layar dari apa yang Anda lihat di sini.
Aaron Hill
Jika partisi swap Anda dapat diperluas ke ruang yang tidak terisi yang berdekatan, maka gunakan gparted. Jika ruang seperti itu tidak tersedia, mungkin karena partisi aktif Anda (yang di-boot) menggunakan semua ruang non-swap, maka Anda gpartedtidak akan dapat mengurangi ukuran partisi yang aktif untuk menciptakan ruang yang tidak dialokasikan. Dalam hal ini Anda dapat menginstal ulang Ubuntu untuk membuat ruang swap yang lebih besar.
H2ONaCl

Jawaban:

172

Anda selalu dapat membuat file swap

untuk menambah ruang swap. Ini tidak sama (dalam setiap aspek) dengan partisi swap tetapi akan mudah dan dinamis.

Ubah /media/fasthdd/swapfile.imgke apa pun yang Anda suka, misalnya bisa /swap.imgjuga. /media/fasthdd/swapfile.imghanyalah contoh nama file, jika Anda menggunakan yang ini maka tentu saja harus ada direktori /media/fasthdd/dengan ruang kosong yang cukup untuk file swap baru Anda.

Gunakan salah satu aplikasi terminal untuk menjalankan perintah. Semua perintah harus dijalankan dengan hak akses root , untuk melakukan ini Anda bisa menambahkan sudoke awal setiap perintah atau menjalankan sudo bashsebelum menjalankan perintah.

1. Buat file kosong: File
ini akan berisi konten memori virtual sehingga membuat file cukup besar untuk kebutuhan Anda. Yang ini akan membuat file 1Gb yang berarti + 1Gb ruang swap untuk sistem Anda:

dd if=/dev/zero of=/media/fasthdd/swapfile.img bs=1024 count=1M

Jika Anda ingin membuat file 3Gb maka ubah nilainya menjadi count=3M. Lihat man dduntuk informasi lebih lanjut.

2. Bake swap file:
Perintah berikut akan membuat "swap filesystem" di dalam file swap baru Anda.

mkswap /media/fasthdd/swapfile.img

3. Menghidupkan saat boot:
Untuk memastikan bahwa ruang swap baru Anda diaktifkan saat mem-boot komputer, Anda harus menambahkannya ke file konfigurasi sistem file /etc/fstab. Tambahkan ke akhir file, ini direkomendasikan karena sistem file lain ( setidaknya satu yang berisi file swap ) harus dipasang dalam mode baca-tulis sebelum kita dapat mengakses file apa pun.

# Add this line to /etc/fstab
/media/fasthdd/swapfile.img swap swap sw 0 0

4. Aktifkan:
Anda dapat mem-boot ulang komputer Anda atau mengaktifkan file swap baru dengan tangan dengan perintah berikut:

swapon /media/fasthdd/swapfile.img


Jika semuanya berjalan dengan baik

Anda akan melihat bahwa lebih banyak ruang swap tersedia untuk digunakan. Anda dapat menggunakan perintah berikut untuk memeriksa swap baru Anda dan mengonfirmasi bahwa itu aktif:

cat /proc/swaps
  Filename                           Type       Size    Used    Priority
  /media/fasthdd/swapfile.img        file       8388604 2724    -1

grep 'Swap' /proc/meminfo
  SwapCached:         4772 kB
  SwapTotal:       8388604 kB
  SwapFree:        8355812 kB
Sampo Sarrala
sumber
5
Untuk mengedit /etc/fstabcoba ini di baris perintah:sudo gedit /etc/fstab
Ben
Itu sangat membantu saya, terima kasih banyak Pak.
Rika
bagaimana cara menonaktifkan swapfile yang baru dibuat?
Rika
1
dapatkan itu swapoff!
Rika
2
gunakan perintah "swapon -s" untuk melihat status daripada "cat / proc / swaps". maka perintah "gratis" juga memberikan info penggunaan swap.
Paul M
40

Metode GUI untuk meningkatkan ukuran partisi swap

Cara lain untuk meningkatkan ukuran swap adalah dengan menggunakan Editor partisi GParted . Singkatnya, Anda mengubah ukuran partisi swap, lalu klik kanan padanya dan pilih "Swapon".

Lebih mudah untuk mem-boot gparted-live-disk atau Ubuntu live disk (sehingga semua /dev/sdapartisi akan dilepas). Jika Anda menjalankan live disk Ubuntu, maka Anda harus menginstal gparted dengan menjalankan perintah di bawah ini:

sudo apt-get update
sudo apt-get install gparted && sudo gparted

Anda harus dapat meningkatkan ukuran partisi swap hanya jika ada ruang yang tidak terisi sebelum atau setelah partisi swap. Jika tidak ada ruang yang tidak terisi (ruang yang kita coba tambahkan dengan partisi swap) di bawah atau di atas partisi swap, maka kita harus mengubah ukuran partisi dan mendapatkan ruang yang tidak dialokasikan.

Kasus 1 - ruang yang tidak terisi hadir sebelum atau setelah partisi swap

Partisi GParted

Pada tangkapan layar di atas, saya memiliki ruang yang tidak dialokasikan 11,4 GB sebelum linux-swap dan 12,8 GB setelah partisi swap.

  • Untuk mengubah ukuran, klik kanan pada partisi swap (/ dev / sda9 di sini) dan klik pada opsi Ubah Ukuran / Pindahkan. Ini akan terlihat seperti ini:

    masukkan deskripsi gambar di sini

  • Seret panah penggeser ke kiri atau kanan lalu klik tombol Ubah Ukuran / Pindah. Partisi swap Anda akan diubah ukurannya.


Kasus 2 - ruang yang tidak terisi adalah di antara partisi

masukkan deskripsi gambar di sini

Pada tangkapan layar di atas, ruang yang tidak terisi yang ingin kita tambahkan ke partisi swap berada di antara dev/sda7dan /dev/sda8. Untuk memindahkan ruang yang tidak dialokasikan dari itu ke tepat di atas partisi swap, kita harus mengikuti langkah-langkah sederhana yang diberikan di bawah ini,

  • Klik kanan pada partisi / dev / sda8 dan klik pada opsi Resize / Move .

    masukkan deskripsi gambar di sini

  • klik dan gerakkan slider ke ekstrim kiri, sehingga ruang yang tidak terisi yang tepat di atas /dev/sda8partisi akan muncul di bawah. /dev/sda8Setelah itu klik tombol Ubah Ukuran / Pindah.

  • Dan sekarang ruang yang tidak terisi hanya di atas untuk partisi swap yang seperti Kasus 1. Sekarang ikuti Kasus 1.


Kasus 3 - jika ruang yang tidak terisi ada di luar partisi Extended)

masukkan deskripsi gambar di sini

Saya memiliki ruang yang tidak terisi sebesar 18 GB tepat di bawah untuk partisi extended . Untuk menambahkan ruang ini ke partisi linux-swap (yang ada di dalam partisi extended), kita harus mengikuti langkah-langkah di bawah ini,

  • Klik kanan pada partisi extended dan pilih opsi Resize / Move , itu akan seperti screenshot di bawah ini

    masukkan deskripsi gambar di sini

  • Klik dan seret panah ke kanan ekstrem dan klik Ubah Ukuran / Pindahkan , sehingga ruang yang tidak terisi sebesar 18 GB akan muncul di bagian bawah partisi yang diperluas. Saya memiliki ruang tanpa alokasi 14,80 GB yang sudah ada di bagian bawah dan sekarang 18,34 GB menggabungkan dengan itu untuk membuat ruang yang tidak terisi (18,34 + 14,80 GB) di bagian bawah partisi extended.

  • Sekarang ada ruang yang tidak terisi tepat di bawah untuk partisi swap, itu akan seperti Kasus 1 , lalu ikuti kasus 1.

CATATAN: Jangan lupa untuk membuat cadangan semua data penting Anda sebelum melanjutkan operasi di atas.

Avinash Raj
sumber
2
Panduan hebat untuk alat GUI, layak mendapatkan ++ apa adanya. Namun mungkin harus ada peringatan tentang kemungkinan risiko yang terkait dengan pengeditan partisi. Panduan cadangan MBR sederhana atau tautan ke panduan semacam itu akan menjadi tambahan yang bagus, kesalahan mungkin tidak mungkin terjadi tetapi biaya bisa tinggi + mengambil cadangan MBR tidak akan menghabiskan terlalu banyak waktu atau ruang dan dapat menghemat banyak pekerjaan, ruang dan waktu bila dilakukan dengan benar.
Sampo Sarrala
2
Jangan lupa untuk swapon, klik kanan partisi swap swapon
user3752281
30

Anda juga dapat menggunakan fallocatejika Anda ingin memesan ruang untuk swapfile Anda, tanpa perlu mengisi file dengan 0 through dd.

Dari manhalaman:

DESCRIPTION
   fallocate  is  used  to preallocate blocks to a file.  For filesystems which support the fallocate system call, this is done quickly by
   allocating blocks and marking them as uninitialized, requiring no IO to the data blocks.  This is much faster than creating a  file  by
   filling it with zeros.

Jika Anda sudah memiliki swapdefinisi, Anda dapat menghapus atau menyimpannya, dan * nix Anda akan mengelolanya (lebih baik dengan mendefinisikan swaponprioritas). Ini bisa berguna, jika Anda ingin menyebarkan swap di antara perangkat yang berbeda, drive (berdasarkan kecepatannya atau kebutuhan khusus lainnya, lihat Apa tujuan dari beberapa file swap di StackExchange ).

fallocatePenggunaan sederhana untuk menambahkan file swap kedua

Periksa situasi swap:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        262140  246276  -1

Buat file swap 4G

Cara standar untuk membuat dan mengaktifkan file swap.

$ size="4G" && file_swap=/swapfile_$size.img && sudo touch $file_swap && sudo fallocate -l $size /$file_swap && sudo mkswap /$file_swap && sudo swapon -p 20 /$file_swap

Jadikan swap Anda permanen

Tambahkan baris di /etc/fstabfile Anda sehingga swap akan diinisialisasi pada reboot berikutnya (kami juga memperbarui di sini prioritas ruang swap yang baru dibuat dan kami memperbarui prioritas file swap lama).

Dalam file / etc / fstab Anda, perhatikan prioritas swap sebelumnya adalah 10.

/swapfile    none    swap    sw,pri=10      0       0
/swapfile_4G.img     none    swap    sw,pri=20      0       0

Periksa situasi swap setelah reboot:

$ sudo swapon  -s
Filename       Type     Size        Used    Priority
/swapfile      file     262140      0       10
/swapfile_4G.img       file     4194300     0       20

Hapus salah satu ruang swap (misalnya 256 MB asli)

Sunting /etc/fstab

Hapus baris yang terkait dengan swap yang ingin Anda hapus.

Hapus swap itu

Hapus dan hapus file swap.

sudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile

Sumber:

Jean-Christophe Meillaud
sumber
3
1-up untuk fallocate, jauh lebih baik daripada ddjika fs Anda mendukungnya. Satu kalimat itu masih terasa sulit dibaca, dapatkah lebih mudah dipelajari jika itu akan dipecah menjadi perintah yang sebenarnya?
Sampo Sarrala
3
Ini adalah contoh jawaban sempurna, sangat sederhana untuk dipahami, sangat mudah diterapkan. Itu bekerja seperti pesona di ubuntu 18
Damián Rafael Lattenero
7

Dalam kasus saya, saya sudah memiliki file swap yang saya pikir 1GB tetapi ketika saya melihatnya lebih dekat itu hanya 256 MB besar dan ketika pra-kompilasi aset rel saya server akan kehabisan memori

Errno::ENOMEM: Cannot allocate memory - nodejs

Saya membuat file swap saya seperti yang dijelaskan di sini: https://stackoverflow.com/a/34885004/784318

Sekarang baris yang membuat file kosong bernama /swapfileadalah sebagai berikut:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

Sekarang untuk mengubah ukuran swapfile saya harus melakukan langkah-langkah sederhana ini:

# Reboot the system to be able to switch swapping off
sudo reboot

# Turn swap off
sudo swapoff -a

# Delete the `/swapfile`
rm -f /swapfile

# Recreate the swapfile but with double file size memory
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k

# Turn swap back on
sudo swapon -s

# Change the permission to non-world-readable
sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

# Use the swap file
sudo mkswap /swapfile
sudo swapon /swapfile

File telah dibuat (536870912/1024/1024 = 512 MB):

ls -lia /swapfile 
768 -rw------- 1 root root 536870912 Apr 27 07:54 /swapfile

Menggunakan free -mperintah saya bisa melihat bahwa file sekarang adalah 512 MB seperti yang diharapkan:

Besi
sumber
Anda seharusnya tidak menggunakan flag -r berbahaya dengan perintah rm untuk menghapus satu file. rm -f seharusnya lebih dari cukup.
Sampo Sarrala
1
@ SampoSarrala Terima kasih untuk kepala, saya mengubah skrip yang sesuai.
Besi
@ Besi Terima kasih! Inilah tepatnya yang saya perlukan untuk meningkatkan ukuran file swap pada sistem Ubuntu 18.04 LTS saya. Ini bekerja persis seperti yang Anda tulis. Bantuan luar biasa !!!
Radikal-
Saya suka solusi ini karena ini adalah command-line, tidak memerlukan partisi ulang, dan menjelaskan apa yang harus dilakukan jika swapfile sudah ada.
cxrodgers
3

cara menambahkan file swap

  1. membuat file .img

    sudo dd jika = / dev / nol = / swap.img bs = 1M hitung = 1000

perhatikan !: bs = 1M hitung = 1000 ==> 1GB

(bs * hitung = ukuran dalam megabita)

contoh lain:

sudo dd jika = / dev / nol = / swap.img bs = 10M count = 100

  1. memformat file .img

    sudo mkswap /swap.img

  2. aktifkan file swap

    sudo swapon /swap.img

  3. tambahkan file swap ke fstab

tambahkan baris ini ke fstab Anda (/ etc / fstab)

/swap.img   none            swap    sw              0       0
Yunus
sumber
Saya biasanya mengatur label pada swap, misalnya "mkswap -L SWAP2".
Paul M
Catatan: Ini adalah jawaban yang sama dengan jawaban yang diterima / paling banyak dipilih oleh Sampo Sarria, tetapi dengan konteks yang lebih sedikit dan dengan swap img ditambahkan langsung ke root alih-alih / media / fasthdd
steel
0

Ubah ukuran Swap ke 8GB

# Turn swap off
# This moves stuff in swap to the main memory and might take several minutes
sudo swapoff -a

# Create an empty swapfile
# Note that "1G" is basically just the unit and count is an integer.
# Together, they define the size. In this case 8GB.
sudo dd if=/dev/zero of=/swapfile bs=1G count=8

sudo mkswap /swapfile  # Set up a Linux swap area
sudo swapon /swapfile  # Turn the swap on

Periksa apakah itu berhasil

grep Swap /proc/meminfo
Martin Thoma
sumber