Terminalden çıkarmadan takas dosyasının boyutunu nasıl artırabilirim?


59

Var olan "takas dosyamı" yok etmeden ve yeniden yaratmadan artırmak için bir yol var mı? Takas alanımı 1GB'tan 2GB'a çıkarmak istiyorum. Şu anda böyle kurulur:

$ 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

Ubuntu 14.04 kullanıyorum.


Ne kadar RAM'in var? 2G yeterli mi? Bence, swapoffyeni bir / mkswapswapon -a
swap dosyası

1
Yeni bir takas dosyası ekleyin, yukarıdaki sorunun talimatını izleyin. 2 adet takas dosyanız olabilir;)
Ravexina

1
@Ravexina, Belki de acemi bir soru, ama neden mevcut olanın boyutunu artırmak yerine yeni bir takas dosyası eklemek isteyeyim? Veya mevcut bir takas dosyasını artırmak mümkün değil mi?
Dave,

@Dave Bu mümkün, swapoffo zaman ddve mkswapnihayet yapabileceğimizi bildiğiniz gibi swapon. Dosyanıza dokunmak istemediğinizi düşündüm.
Ravexina,

2
@Ravexina mesaj olarak cevap olarak
Sergiy Kolodyazhnyy

Yanıtlar:


66

İlk önce takas dosyasını devre dışı bırak:

sudo swapoff /swapfile

Şimdi takas dosyasının boyutunu artıralım:

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

Yukarıdaki komut, takas dosyanızın sonuna 1GiB sıfır bayt ekleyecektir.

Dosyayı "takas dosyası" olarak ayarlayın:

sudo mkswap /swapfile

değiş tokuş yapmayı etkinleştir:

sudo swapon /swapfile

3
sudo fallocate -l 2G /swapfilemuhtemelen dd'den daha güvenlidir (orijinal takas alanını korumamasına rağmen) ve ayrıca bir de ihtiyacı vardır sudo chmod 600 /swapfile.
heynnema

7
@heynnema fallocateSeyrek dosyalar yapmaz mı ? swaponManpage seyrek takas dosyaları (özellikle söz sorunlu olduğunu söylüyor fallocate).
muru

3
@ heynnema no, mkswapmanpage ayrıca dosyaların hiç delik içermemesi gerektiğini de söylüyor.
muru

1
@muru sanırım yanıldım :-) Her seferinde 17.04'ün başlangıcında a / swap dosyası oluşturmayı okuduğumda fallocate kullandılar. Sanırım sadece "disk destroyer" kullanmak zorunda kalacağız!
heynnema

1
@heynnema: Yapabileceğiniz şey, fallocatedisk alanını önceden ayırmak ve ardından dddelikleri sıfırlarla doldurmak için kullanmak .
David Foerster

39

Var olanı yeniden boyutlandırmak yerine yeni bir takas dosyası eklemelisiniz, çünkü size yapması gereken hiçbir maliyeti yoktur . Bir takas dosyasını yeniden boyutlandırmak için ilk önce onu devre dışı bırakmanız gerekir; bu, takas içeriğini RAM'e tahliye eder, bu da RAM üzerindeki baskıyı artırır ve hatta OOM katilini çağırabilir (muhtemelen disklerinizi birkaç dakika boyunca atabileceğiniz anlamına gelmez). Birden fazla takas dosyası bir sorun değildir, başka bir takas dosyasını kurmak çok kolaydır. Kelimenin tam anlamıyla, takas dosyasını başka bir dosya ekleyerek yeniden boyutlandırmanın bir faydası yok.

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

Is sudo chmod 600 /some/filegerekli veya hiç?
heynnema

1
Ve count=1Kbir 1G dosyası veriyor mu? sayım blok boyutunda, evet? Ve bu 512/4096 olabilir? Yoksa matematiğim yanlış mı?
heynnema

3
+1 Bu yaklaşım, daha sonra disk alanına ihtiyaç duyduğunuza karar verirseniz, takas dosyalarından birinin bağlantısını kesmeyi de kolaylaştırır.
joeytwiddle

2
Bunun gerçekten doğru cevap olarak işaretlenmesi gerekiyor. Vay canına, bravo!
Beshoy Girgis

1
@muru bunun kalıcı bir çözüm olduğunu mu düşünüyor? Bu emri 30 Nisan'da yaptım, ancak bir süre sonra Mayıs ayında ikinci takas dosyam gitmişti.
Silmedim

13

Benim yaptığım gibi başka bir takas dosyası oluşturabilirsiniz:

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. Çalıştığını doğrulayın sudo swapon --show
    Kalıcı yapmak için fstabdosya yazarak bir dosya ekleyin :
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

fallocateBir sparce dosyası oluşturduğundan dosyayı oluşturmak için bit kullanılması gerektiğini lütfen unutmayın . seeman mkswap
Charles Green,

@CharlesGreen yazdığım gibi çalıştı, bu yüzden herkes için çalışmalı.
borekon

man mkswapÖzellikle "Çevre" nden önceki son yazıyı okumayı öneriyorum
Charles Green

1
Armbian v 5.65 ile NanoPi Neo üzerinde çalıştı
BiTinerary

5

Ubuntu 17.04'te Arian Acosta'nın blog yayınındaki tavsiyesini izleyerek iyi sonuçlar aldım . Biri burada sudo fallocate -l 4G /swapfile4G'yi istediğiniz herhangi bir miktarda gigabaytla değiştirebilir. Örneğin sudo fallocate -l 2G /swapfileTS için.

Genel olarak, takas dosyası için önerilen boyut RAM'in 2 katıdır, ancak istediğiniz kadar büyük yapabilirsiniz. Unutmayınız ki bu, hafıza yerine geçmez, çünkü performans diskte saklandığı için performans çok daha kötüdür.

Takas dosyasını 4 GB'a yükselten basit bir bash betiği oluşturdum ve Ubuntu 16.04'te test ettim.

Bu satır satır veya bir bash betiği tarafından çalıştırılabilir, ancak başsız yüklemeler yapmak için kullanıyorum.

#!/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! ======"

3
Eklenecek SWAP miktarı olan betiğe bir argüman eklemelisiniz ve sonunda fstab'a eklemelisiniz. Ama yine de, ben böyle
LnxSlck

0

"Takas dosyası nasıl yeniden boyutlandırılır" için genel cevap:

Bogdan Cornianu'dan, burada: https://bogdancornianu.com/change-swap-size-in-ubuntu/

[QUOTE (ÇOK VERBATIM, yorum eklerimden yalnızca birkaçı ile birlikte) BAŞLAT]

Aşağıdaki örnekte, / swap dosyasında mevcut olan takas alanını 4 GiB'den 8 GiB'ye genişleteceğiz .

  1. Tüm takas işlemlerini kapat

    sudo swapoff -a
    
  2. Değişimi yeniden boyutlandır

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

    if= giriş dosyası
    of= çıkış dosyası
    bs= blok boyutu; Burada, 1G, 1 'e göre gibibyte veya GiB açılımı man ddolan G = 1024 * 1024 * 1024 bayt
    countblokların = çarpanı

  3. Dosyayı takas olarak kullanılabilir yap

    sudo mkswap /swapfile
    
  4. Takas dosyasını etkinleştir

    sudo swapon /swapfile
    
  5. Mevcut takas miktarını kontrol edin

    grep SwapTotal /proc/meminfo
    

[QUOTE SON]

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.