2 スワップ領域の実装
スワップ領域は、効率的なパフォーマンスを保証するためにオペレーティング・システムがシステムのリソースを管理する方法です。
Oracle Linuxでは、進行中のプロセスに対して十分な物理メモリーがない場合に、スワップ領域が使用されます。使用可能なメモリーが少ない場合、オペレーティング・システムでは非アクティブなページをディスク上のスワップ領域に書き込むため、物理メモリーが解放されます。
ただし、スワップ領域はメモリー不足に対する効果的な解決策ではありません。スワップ領域はディスク・ドライブに配置され、アクセス時間は物理メモリーより大幅に遅くなります。スワップ領域に書き込むと、システムのパフォーマンスが実質的に低下します。スワップが頻繁に使用される場合は、スワップ領域ではなく、物理メモリーをさらに追加してください。
スワップ領域は、スワップ・ファイルまたは個別のスワップ・パーティションのいずれかにあります。専用のスワップ・パーティションのほうが高速である一方、スワップ・ファイルのサイズ変更のほうが簡単です。システムに必要なスワップ領域の大きさがわかっている場合は、スワップ・パーティションを構成します。それ以外の場合は、スワップ・ファイルの使用を開始して、システムに必要な内容がわかったら後でスワップ・パーティションを作成します。
スワップ・ファイルの作成
-
ddコマンドを使用して、必要なサイズのファイルを作成します(1KBブロックなど)。
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1000000
1000000+0 records in 1000000+0 records out 1024000000 bytes (1.0 GB, 977 MiB) copied, 6.10298 s, 168 MB/s
-
ファイルをスワップ・ファイルとして初期化します。
sudo mkswap /swapfile
mkswap: /swapfile: insecure permissions 0644, 0600 suggested. Setting up swapspace version 1, size = 976.6 MiB (1023995904 bytes) no label, UUID=43964855-e81f-414c-a61c-370408085ba4
-
ファイルの権限を全ユーザーに対して読取り可能でないように変更します。
sudo chmod 0600 /swapfile
-
システムのリブート時にスワップ・ファイルが使用されるように、
/etc/fstab
ファイルにエントリを追加します。次に例を示します。/swapfile swap swap defaults 0 0
-
マウント・ユニットを再生成し、新しい構成を
/etc/fstab
に登録します。sudo systemctl daemon-reload
-
スワップ・ファイルをアクティブ化します。
sudo swapon /swapfile
-
(オプション)アクティブなスワップ領域を検査して、新しいスワップ・ファイルが正常に作成されたかどうかをテストします。
cat /proc/swaps
sudo free -h
スワップ・パーティションの作成
-
fdiskまたはpartedのいずれかを使用して、スワップ・パーティションを作成します。
-
fdiskを使用している場合は、「パーティションの作成」の説明に従ってパーティションを作成します。次に、tを使用して、パーティション・タイプをデフォルトから
82 Linux swap / So
に変更します。 -
partedを使用する場合は、「partedを使用したディスクのパーティション化」に示すように、
File system type?
プロンプトでlinux-swap
を指定します。
-
-
パーティションをスワップ・パーティションとして初期化します。
たとえば、パーティションが
/dev/sda2
の場合は、次のコマンドを使用します。sudo mkswap /dev/sda2
-
スワップ・パーティションへのスワップを有効にします。
sudo swapon /dev/sda2
-
システムの次回再起動以降に使用されるように、スワップ・パーティションについて
/etc/fstab
にエントリを追加します。/dev/sda2 swap swap defaults 0 0
スワップ領域使用量の表示
システムのスワップ領域の使用量を表示するには、/proc/swaps
の内容を調査します。
cat /proc/swaps
Filename Type Size Used Priority /dev/sda2 partition 4128760 388 -1 /swapfile file 999992 0 -2
この例では、/dev/sda2
の4GBのスワップ・パーティションと、/swapfile
の1GBのスワップ・ファイルの両方が使用されています。Priority
列は、スワップ・ファイルではなく、スワップ・パーティションに書き込むオペレーティング・システムを示しています。
/proc/meminfo
を表示することも、free、top、vmstatなどのユーティリティを使用してスワップ領域使用率を表示することもできます。次に例を示します。
grep Swap /proc/meminfo
SwapCached: 248 kB SwapTotal: 5128752 kB SwapFree: 5128364 kB
sudo free | grep Swap
Swap: 5128752 388 5128364