Open1
スワップ領域について

- スワップ領域とは:
- 物理メモリ(RAM)の補助として使用される領域
- ハードディスク上の仮想メモリ領域
- メモリが不足した時に使用される
- 通常のRAMより遅いが、メモリ不足時の安全装置として機能
- スワップ領域の確認コマンド:
# 現在のスワップ使用状況を確認
free -h
# スワップ領域の詳細確認
swapon --show
# すべてのスワップ領域を表示
cat /proc/swaps
# システムのメモリ状態を確認
vmstat
- スワップ領域の作成方法:
A. スワップパーティションの作成:
# パーティション作成
sudo fdisk /dev/sdb
# nで新規パーティション
# tでパーティションタイプを82(Linux swap)に変更
# スワップ領域のフォーマット
sudo mkswap /dev/sdb1
# スワップの有効化
sudo swapon /dev/sdb1
B. スワップファイルの作成:
# 2GBのスワップファイル作成
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
# スワップファイルの権限設定
sudo chmod 600 /swapfile
# スワップとしてフォーマット
sudo mkswap /swapfile
# スワップの有効化
sudo swapon /swapfile
- 永続的な設定:
/etc/fstabへの追加:
# スワップパーティションの場合
/dev/sdb1 none swap sw 0 0
# スワップファイルの場合
/swapfile none swap sw 0 0
- スワップ関連のカーネルパラメータ:
# 現在の設定確認
cat /proc/sys/vm/swappiness
# 一時的な変更
sudo sysctl vm.swappiness=60
# 恒久的な変更(/etc/sysctl.confに追加)
vm.swappiness = 60
swappinessの値:
- 0: できるだけスワップを使用しない
- 60: デフォルト値
- 100: 積極的にスワップを使用
- スワップ領域のサイズ計算:
一般的な目安:
- RAM 2GB未満:RAMの2倍
- RAM 2GB-8GB:RAMと同量
- RAM 8GB以上:必要に応じて(最低4GB程度)
- スワップの管理コマンド:
# スワップ領域の有効化
sudo swapon /dev/sdb1
# スワップ領域の無効化
sudo swapoff /dev/sdb1
# すべてのスワップを無効化
sudo swapoff -a
# 優先度の設定
sudo swapon -p 1 /dev/sdb1
- パフォーマンス監視:
# スワップの使用状況監視
watch -n 1 'free -h'
# 詳細な統計情報
vmstat 1
# プロセスごとのスワップ使用量
for file in /proc/*/status ; do
awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file
done | sort -k 2 -n -r | head
- トラブルシューティング:
A. スワップ領域が足りない場合:
# 新しいスワップファイルの追加
sudo dd if=/dev/zero of=/swapfile2 bs=1M count=2048
sudo chmod 600 /swapfile2
sudo mkswap /swapfile2
sudo swapon /swapfile2
B. パフォーマンス問題:
# スワップ使用率の確認
free -h
# 高負荷プロセスの特定
top
- 重要な注意点:
- システムの総メモリ = 物理メモリ + スワップ領域
- スワップの過度な使用はパフォーマンス低下の原因に
- ハイバネーション使用時はRAM以上のスワップが必要
- SSDでのスワップ使用は書き込み回数に影響