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


59

既存の「スワップファイル」を破壊して再作成せずに増やす方法はありますか?スワップ領域を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を使用しています。


RAMはどれくらいありますか?2Gで十分ですか?私はあなたがしなければならないと思うswapoff、新しい/ mkswapswapon -a
swapfileを

1
上記の質問の指示に従って、新しいスワップファイルを追加します。2つのスワップファイルを持つことができます;)
Ravexina

1
@Ravexina、初心者の質問かもしれませんが、なぜ既存のファイルのサイズを増やすのではなく、新しいスワップファイルを追加したいのですか?または、既存のスワップファイルを増やすことはできませんか?
デイブ

@Daveそれも可能です。ご存知かもしれませんがswapoff、そのときddそしてmkswap最後にswapon。ファイルに手を触れたくないと思いました。
-Ravexina

2
@Ravexinaは答えとしてそれを投稿
Sergiy Kolodyazhnyy

回答:


66

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

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

3
sudo fallocate -l 2G /swapfileおそらくddより安全です(ただし、元のスワップファイルは保持されません)sudo chmod 600 /swapfile。また、が必要です。
ヘネマ

7
@heynnema fallocateスパースファイルを作成しませんか?swaponmanページは、スパーススワップファイルが(特に言及は問題があると言いますfallocate)。
ムル

3
@heynnemaいいえ、mkswapマンページには、ファイルに穴が含まれていてはいけないと書かれています。
ムル

1
@muru は私が間違っていると思います:-) 17.04の開始で/ swapfile を作成する方法を読むたびに、彼らはfallocateを使用しました。「ディスクデストロイヤー」を使用するだけでよいと思います。
ヘネマ

1
@heynnema:できることは、fallocateディスクスペースを事前に割り当ててddから、穴をゼロで埋めることです。
デビッドフォースター

39

既存のファイルのサイズを変更するのではなく、新しいスワップファイルを追加する必要があります。スワップファイルのサイズを変更するには、まずそれを無効にする必要があります。これにより、スワップの内容が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 chmod 600 /some/file必要、または全くありませんか?
ヘネマ

1
そしてcount=1K、1Gファイルを提供しますか?カウントはブロックサイズにありますか?そして、それは512/4096になりますか?それとも私の数学は間違っていますか?
ヘネマ

3
+1このアプローチにより、後でディスク領域を戻す必要があると判断した場合に、スワップファイルの1つを簡単に切断できます。
joeytwiddle

2
これは本当に正しい答えとしてマークする必要があります。うわー、ブラボー!
ベショイギルギス18

1
@muruはこれが永続的な解決策であると仮定していますか?これらのコマンドは4月30日に実行しましたが、5月のある時点で、2番目のスワップファイルがなくなりました。削除しませんでしたが、消えました
クリストファールシンスキー

13

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

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. 動作していることを確認するsudo swapon --show
    恒久的にするには、fstabファイル入力にファイルを追加します。
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

fallocateファイルはスパースファイルを作成するため、ビットを使用してファイルを作成する必要があることに注意してください。参照man mkswap
チャールズ・グリーン

@CharlesGreenそれは私が書いたように私を働いたので、誰でもアルモスのために働くはずです。
ボレコン

私は読書sugegstなりman mkswap、「環境」の前に、特に最後のpargraph
チャールズ・グリーン

1
ArmPian v 5.65でNanoPi Neoに取り組んだ
BiTinerary

5

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

一般的に、スワップファイルの推奨サイズは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! ======"

3
追加するSWAPの量である引数をスクリプトに追加し、最終的にfstabに追加する必要があります。それでも、私はこれが好きです
-LnxSlck

0

「スワップファイルのサイズを変更する方法」に対する一般的な回答:

Bogdan Cornianuから、ここ:https ://bogdancornianu.com/change-swap-size-in-ubuntu/

[QUOTE(ほとんどコメントなしで、コメントを少しだけ追加)START]

次の例では、/ swapfileで使用可能なスワップスペースを4 GiBから8 GiBに拡張します。

  1. すべてのスワッププロセスをオフにする

    sudo swapoff -a
    
  2. スワップのサイズを変更する

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

    if=入力ファイル
    of=出力ファイル
    bs=ブロックサイズ。ここで、1Gによれば、1ギビバイト、又はジブの略man ddであり、G = 1024×1024×1024バイト
    countブロックの乗数=

  3. ファイルをスワップとして使用可能にする

    sudo mkswap /swapfile
    
  4. スワップファイルをアクティブにする

    sudo swapon /swapfile
    
  5. 使用可能なスワップの量を確認してください

    grep SwapTotal /proc/meminfo
    

[見積もり終了]

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.