web-dev-qa-db-ja.com

スワップ領域を増やす方法は?

デフォルトでは、Ubuntuに250MBのスワップスペースがありますが、それをより大きなサイズに拡張したいと考えています。 800MBが必要です。これは、現在のスワップの制限に達することなく、いくつかのアプリケーションを開くのに十分だと思います。誰かが私を助けてくれることを願っています。

125
Bruno

いつでもスワップファイルを作成できます

スワップ領域を追加します。これは(あらゆる面で)スワップパーティションと同じではありませんが、簡単で動的です。

/media/fasthdd/swapfile.imgを好きなものに変更します。たとえば、/swap.imgにすることもできます。 /media/fasthdd/swapfile.imgは単なるファイル名の例です。これを使用している場合は、当然、新しいスワップファイル用に十分な空き領域のある/media/fasthdd/ディレクトリが必要です。

ターミナルアプリケーションのいずれかを使用して、コマンドを実行します。すべてのコマンドを実行する必要があります ルート権限で、これを行うには、すべてのコマンドの先頭にSudoを追加するか、コマンドを実行する前にSudo bashを実行します。

1.空のファイルを作成します。
このファイルには仮想メモリの内容が含まれるため、必要に応じてファイルを十分に大きくします。これにより、1Gbファイルが作成されます。これは、システムの+ 1Gbスワップスペースを意味します。

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

3Gbファイルを作成する場合は、カウント値をcount=3Mに変更します。詳細については、man ddを参照してください。

2.スワップファイルをベイクする:
次のコマンドは、新しいスワップファイル内に「スワップファイルシステム」を作成します。

mkswap /media/fasthdd/swapfile.img

3.起動時に起動します。
コンピューターの起動中に新しいスワップスペースがアクティブになっていることを確認するには、ファイルシステム構成ファイル/etc/fstabに追加する必要があります。ファイルの最後に追加します。他のファイルシステム(スワップファイルを含む少なくとも1つ)ファイルにアクセスする前に、読み取り/書き込みモードでマウントする必要があります。

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

4.有効化:
次のコマンドを使用して、コンピューターを再起動するか、手動で新しいスワップファイルをアクティブにすることができます。

swapon /media/fasthdd/swapfile.img

すべてがうまくいけば

使用可能なスワップ領域が増えていることがわかります。次のコマンドを使用して、新しいスワップを確認し、アクティブであることを確認できます。

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
169
Sampo Sarrala

スワップパーティションのサイズを増やすGUIメソッド

スワップサイズを増やすもう1つの方法は、GParted Partition Editorを使用することです。つまり、スワップパーティションのサイズを変更し、それを右クリックして「Swapon」を選択します。

Gparted-live-diskまたはUbuntu live diskをブートする方が簡単です(すべての/dev/sdaパーティションがアンマウントされるように)。 Ubuntuライブディスクを実行する場合、以下のコマンドを実行してgpartedをインストールする必要があります。

Sudo apt-get update
Sudo apt-get install gparted && Sudo gparted

スワップパーティションの前または後に未割り当て領域が存在する場合にのみ、スワップパーティションのサイズを大きくできる必要があります。スワップパーティションの下または上に未割り当て領域(スワップパーティションで追加しようとしている領域)がなかった場合、パーティションのサイズを変更し、その未割り当て領域を取得する必要があります。

ケース1-スワップパーティションの前または後に存在する未割り当て領域

GParted partitions

上記のスクリーンショットでは、linux-swapの前に11.4 GB、スワップパーティションの後に12.8 GBの未割り当て領域がありました。

  • サイズを変更するには、スワップパーティション(ここでは/ dev/sda9)を右クリックし、[サイズ変更/移動]オプションをクリックします。次のようになります。

    enter image description here

  • スライダーの矢印を左右にドラッグして、[サイズ変更/移動]ボタンをクリックします。スワップパーティションのサイズが変更されます。


ケース2-パーティション間に未割り当て領域がある

enter image description here

上記のスクリーンショットでは、スワップパーティションに追加する未割り当て領域はdev/sda7/dev/sda8の間にありました。未割り当て領域をそこからスワップパーティションのすぐ上に移動するには、単純な以下の手順、

  • / dev/sda8パーティションを右クリックして、Resize/Moveオプションをクリックします。

    enter image description here

  • スライダーをクリックして左端に移動すると、/dev/sda8パーティションのすぐ上にあった未割り当てスペースが/dev/sda8の下になります。その後、[サイズ変更/移動]ボタンをクリックします。

  • そして今、未割り当て領域はケース1のようなスワップパーティションのすぐ上にありました。


ケース3-未割り当て領域が拡張パーティションの外部に存在した場合)

enter image description here

拡張パーティションのすぐ下に18 GBの未割り当てスペースがありました。このスペースをlinux-swapパーティション(拡張パーティション内にある)に追加するには、次の手順に従う必要があります。

  • 拡張パーティションを右クリックしてResize/Moveオプションを選択すると、次のスクリーンショットのようになります

    enter image description here

  • 矢印をクリックして右端にドラッグし、Resize/Moveをクリックして、18GBの未割り当て領域が拡張パーティションの下部に来るようにします.14.80 GBの未割り当て領域が既に下部にあり、18.34 GBがそれと組み合わされて、拡張パーティションの下部に(18.34 + 14.80 GB)の未割り当て領域が作成されます。

  • スワップパーティションのすぐ下に未割り当てのスペースがありました。これはケース1のようになり、ケース1に従います。

注:上記の操作を進める前に、重要なデータをすべてバックアップすることを忘れないでください。

38
Avinash Raj

0からfallocateでファイルを埋める必要なく、スワップファイル用のスペースを確保したい場合は、ddを使用することもできます。

manページから:

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.

既にswapが定義されている場合は、それを削除するか保持することができ、* nixがそれを管理します(swapon優先度を定義することでさらに良くなります)。これは、異なるデバイス、ドライブ間でスワップを分散させる場合に役立ちます(速度またはその他のカスタムニーズに基づいて、 StackExchangeの複数のスワップファイルの目的は何ですか を参照)。

2番目のスワップファイルを追加するための簡単なfallocateの使用法

スワップ状況を確認します。

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

4Gスワップファイルを作成する

スワップファイルを作成およびアクティブ化する標準的な方法。

$ 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

スワップを永続的にする

/etc/fstabファイルに行を追加して、スワップが次回の再起動時に初期化されるようにします(新しく作成されたスワップスペースの優先度も更新し、古いスワップファイルの優先度も更新します)。

/ etc/fstabファイルで、prevスワップの優先度が10になっていることに注意してください。

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

再起動後にスワップ状況を確認します。

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

スワップスペースの1つ(たとえば、元の256Mb)を削除します

編集/etc/fstab

削除するスワップに関連する行を削除します。

そのスワップを削除する

スワップファイルを削除して削除します。

Sudo swapoff /mnt/swapfile && Sudo rm /mnt/swapfile

リソース:

私の場合、1GBと思ったスワップファイルが既にありましたが、詳しく見ると256 MBしかなく、Railsアセットをプリコンパイルするとサーバーがメモリ不足になりました。

Errno::ENOMEM: Cannot allocate memory - nodejs

ここで説明するように、スワップファイルを作成しました: https://stackoverflow.com/a/34885004/784318

/swapfileという空のファイルを作成する行は次のとおりです。

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

スワップファイルのサイズを変更するには、次の簡単な手順を実行する必要がありました。

# 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

ファイルが作成されました(536870912/1024/1024 = 512 MB):

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

free -mコマンドを使用すると、ファイルが予想どおり512 MBであることがわかりました。

6
Besi

スワップファイルの追加方法

  1. creat .imgファイル

    Sudo dd if =/dev/zero of =/swap.img bs = 1M count = 1000

注!:bs = 1M count = 1000 ==> 1GB

(bs *カウント=メガバイト単位のサイズ)

他の例:

Sudo dd if =/dev/zero of =/swap.img bs = 10M count = 100

  1. .imgファイルをフォーマットする

    須藤mkswap /swap.img

  2. スワップファイルを有効にする

    Sudo swapon /swap.img

  3. スワップファイルをfstabに追加します

この行をfstab(/ etc/fstab)に追加します

/swap.img   none            swap    sw              0       0
3
Jonah