Linux管理・運用の基本
システム管理者のための実践ガイド
システム管理者のための実践ガイド
サーバーの運用中、予期せぬメモリ不足に遭遇したことはありませんか?物理メモリが足りなくなったとき、システムはスワップ領域を使って危機を乗り切ろうとします。しかし、スワップ領域の使い方が適切でないと、かえってシステムのパフォーマンスを低下させる原因にもなりかねません。
この記事では、Linuxのスワップ領域の役割と、メモリ不足に陥った際の対処法、そしてその管理方法について解説します。
スワップ領域は、物理メモリ(RAM)が不足した際に、一時的にデータを退避させるために使用されるディスク上の領域です。OSは、あまり使われていないメモリ上のデータをこのスワップ領域に書き出し、物理メモリを空けることで、システム全体の動作を継続させます。
この仕組みは、メモリ不足によるシステム停止を防ぐ重要な役割を果たしますが、スワップ領域が設定されていない場合、メモリが完全に不足するとOOM Killer(Out Of Memory Killer)が発動し、プロセスが強制終了されてサービスが突然停止する可能性があります。
まずは、現在のシステムがどのようにスワップ領域を使用しているかを確認しましょう。free
コマンドやswapon
コマンドを使用します。より詳細な情報を知りたい場合は、vmstat 1
やcat /proc/meminfo
コマンドも役立ちます。
free
コマンドは、物理メモリとスワップメモリの使用状況をまとめて表示します。
free -h
オプション | 意味 |
---|---|
-h |
人間が読みやすい形式(例:G, M)で表示します。 |
swapon --show
コマンドは、現在有効になっているスワップ領域の詳細を表示します。
swapon --show
もしスワップ領域が設定されていなかったり、容量が不足していたりする場合は、新たにスワップファイルを追加するのが簡単な方法です。ここでは、一時的に追加する手順を解説します。
fallocate
コマンドで、指定したサイズのファイルを作成します。ここでは、4GBのスワップファイルを作成する例です。
sudo fallocate -l 4G /swapfile
補足:
fallocate
が使えない場合 一部の古いLinuxやXFSファイルシステム環境では、fallocate
で作成したファイルをスワップとして利用できないことがあります。その場合は、dd
コマンドで作成します。sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
セキュリティのため、rootユーザー以外がアクセスできないようにパーミッションを設定します。
sudo chmod 600 /swapfile
mkswap
コマンドで、作成したファイルをスワップ領域として初期化します。
sudo mkswap /swapfile
swapon
コマンドで、作成したスワップファイルをシステムに認識させ、有効にします。
sudo swapon /swapfile
この時点で、free -h
やswapon --show
コマンドでスワップ領域が追加されたことを確認できます。
システムを再起動すると、一時的に有効にしたスワップ領域は無効になってしまいます。これを恒久的に有効にするには、/etc/fstab
ファイルに以下の行を追加します。
/swapfile none swap sw 0 0
スワップ領域の使用量が極端に多くなっている場合、物理メモリ不足によりシステムの応答が著しく遅くなることがあります。これはパフォーマンス低下のサインです。top
やhtop
でメモリを大量に消費しているプロセスを特定し、不要なプロセスの停止やメモリ増設を検討しましょう。
なお、OSがどの程度スワップを積極的に使うかは、/proc/sys/vm/swappiness
の値で調整できます。値が低いほどスワップへの書き出しを抑え、高いほど積極的にスワップを使用します。
不要になったスワップファイルを削除したい場合は、以下の手順で無効化・削除します。
スワップを無効化
swapoff
コマンドを実行することで、スワップ領域を無効化します。注意点として、スワップが活発に使用されている場合、この処理には時間がかかり、一時的にシステムに負荷がかかることがあります。
sudo swapoff /swapfile
ファイルを削除
sudo rm /swapfile
/etc/fstab
から、追加したswapfile
の行を削除この記事では、Linuxにおけるスワップ領域の基本的な役割と、現在の状況確認、そしてファイルを使ったスワップ領域の追加・削除方法について解説しました。スワップはメモリ不足時の重要な安全策ですが、根本的なパフォーマンス改善には物理メモリの増設も検討しましょう。
この記事がLinuxサーバーの管理に役立つ一助となれば幸いです。ご覧いただきありがとうございました。次回は、「ログファイル管理の実践:logrotateで自動ローテーション設定」について解説します。