既存の「スワップファイル」を破壊して再作成せずに増やす方法はありますか?スワップ領域を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を使用しています。
最初にスワップファイルを無効にします。
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
既存のスワップファイルのサイズを変更する代わりに、新しいスワップファイルを追加する必要がありますコストがかからないため。スワップファイルのサイズを変更するには、まずそれを無効にする必要があります。これにより、スワップの内容が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
私がやったように別のスワップファイルを作成できます:
Sudo fallocate -l 4G /swapfile
Sudo chmod 600 /swapfile
Sudo mkswap /swapfile
Sudo swapon /swapfile
Sudo swapon --show
で動作していることを確認しますfstab
fileにファイルを追加します。echo '/swapfile none swap sw 0 0' | Sudo tee -a /etc/fstab
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! ======"