web-dev-qa-db-ja.com

ターミナルで削除せずにスワップファイルのサイズを増やすにはどうすればよいですか?

既存の「スワップファイル」を破壊して再作成せずに増やす方法はありますか?スワップ領域を1GBから2GBに増やしたい。現在、次のように設定されています。

$ 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を使用しています。

54
Dave

最初にスワップファイルを無効にします。

Sudo swapoff /swapfile

次に、スワップファイルのサイズを増やしましょう。

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

上記のコマンドは、スワップファイルの最後にゼロバイトの1GiBを追加します。

ファイルを「スワップファイル」として設定します。

Sudo mkswap /swapfile

スワップを有効にします。

Sudo swapon /swapfile
63
Ravexina

既存のスワップファイルのサイズを変更する代わりに、新しいスワップファイルを追加する必要がありますコストがかからないため。スワップファイルのサイズを変更するには、まずそれを無効にする必要があります。これにより、スワップの内容がRAMに追い出され、RAMへの負荷が高まり、OOMキラーが呼び出されることもあります(ディスクをスラッシングする可能性があることは言うまでもありません)数分)。複数のスワップファイルは問題ではありません。別のスワップファイルをセットアップするのは簡単です。別のスワップファイルを追加するよりも、スワップファイルのサイズを変更することは、文字通りまったく利点がありません。

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
37
muru

私がやったように別のスワップファイルを作成できます:

  1. Sudo fallocate -l 4G /swapfile
  2. Sudo chmod 600 /swapfile
  3. Sudo mkswap /swapfile
  4. Sudo swapon /swapfile
  5. Sudo swapon --showで動作していることを確認します
    永続的にするには、次のように入力してfstabfileにファイルを追加します。
    echo '/swapfile none swap sw 0 0' | Sudo tee -a /etc/fstab
12
borekon

blogpost のArian Acostaのアドバイスに従って、Ubuntu 17.04で良い結果が得られました。ここで4GをSudo fallocate -l 4G /swapfileで任意のギガバイトに置き換えることができます。たとえば、TSの場合はSudo fallocate -l 2G /swapfileです。

一般的に、スワップファイルの推奨サイズはRAMの2倍ですが、必要なだけ大きくすることができます。これはメモリに代わるものではないことを忘れないでください。なぜなら、物事はディスクに保存されるため、パフォーマンスはずっと悪いからです。

スワップファイルを4GBに増やす単純なbashスクリプトを作成し、Ubuntu 16.04でテストしました。

これは1行ずつ実行することも、bashスクリプトを実行することもできますが、ヘッドレスインストールを行うために使用します。

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