ビルド時や一時的な高負荷作業でメモリ不足が発生する場合、スワップファイルを一時的に追加することで問題を回避できます。本記事では、一時的なスワップファイルを作成して使用し、作業終了後に削除する手順と、それを効率化するスクリプトをご紹介します。
目次
スワップファイルとは?
スワップファイルは、物理メモリが不足した際にディスク上の領域を仮想メモリとして利用する仕組みです。ただし、ディスクはメモリよりも遅いため、スワップの使用頻度が高いとパフォーマンスに影響を及ぼす可能性があります。そのため、一時的にスワップを増やして高負荷作業を乗り切り、作業終了後に削除する運用が適しています。
一時的なスワップファイルを作成する手順
1. 一時的なスワップファイルを作成
以下のコマンドで、4GBのスワップファイルを作成します(サイズは用途に応じて変更可能)。
sudo fallocate -l 4G /tmp/swapfile_temp
💡 fallocate
が使用できない場合は、以下のコマンドを使用します:
sudo dd if=/dev/zero of=/tmp/swapfile_temp bs=1M count=4096
2. ファイルの権限を設定
スワップファイルのセキュリティを確保するため、600の権限を設定します。
sudo chmod 600 /tmp/swapfile_temp
3. スワップファイルを有効化
スワップファイルをスワップ領域としてフォーマットし、有効化します。
sudo mkswap /tmp/swapfile_temp
sudo swapon /tmp/swapfile_temp
4. スワップ状況を確認
現在のスワップ領域を確認して、追加されたスワップが有効になっているか確認します。
swapon --show
5. 作業を実行
ビルドや高負荷の処理を実行します。スワップが有効になっていることで、メモリ不足によるプロセスの停止を回避できます。
6. スワップファイルを無効化
作業が終了したら、以下のコマンドでスワップファイルを無効化します。
sudo swapoff /tmp/swapfile_temp
7. スワップファイルを削除
スワップファイルを削除してディスク容量を解放します。
sudo rm /tmp/swapfile_temp
一時的なスワップファイルを効率化するスクリプト
毎回コマンドを入力するのが手間な場合、スクリプトを作成することで効率化できます。以下のスクリプトは、一時的なスワップを追加・削除する機能を提供します。
スクリプト: temporary_swap.sh
#!/bin/bash
SWAPFILE="/tmp/swapfile_temp"
SIZE="4G"
if [ "$1" == "add" ]; then
echo "Adding temporary swap file..."
sudo fallocate -l $SIZE $SWAPFILE
sudo chmod 600 $SWAPFILE
sudo mkswap $SWAPFILE
sudo swapon $SWAPFILE
echo "Temporary swap file added."
elif [ "$1" == "remove" ]; then
echo "Removing temporary swap file..."
sudo swapoff $SWAPFILE
sudo rm $SWAPFILE
echo "Temporary swap file removed."
else
echo "Usage: $0 {add|remove}"
fi
スクリプトの使い方
- スクリプトを作成して実行権限を付与します。
chmod +x temporary_swap.sh
- スワップファイルを追加するには、以下のコマンドを実行します。
./temporary_swap.sh add
- スワップファイルを削除するには、以下を実行します。
./temporary_swap.sh remove
まとめ
- 一時的なスワップファイルを作成して高負荷作業を安全に乗り切ることができます。
- 作業が終了したらスワップファイルを削除することで、ディスク容量を無駄にせずに運用できます。
- スクリプトを活用することで、日々の作業を効率化できます。
一時的なスワップファイルの運用は、VPSのようにリソースが限られた環境で特に有効です。ぜひお試しください!