スワップ領域とは?
Linux のスワップ領域は、物理メモリ (RAM) の容量がいっぱいになると使用されます。システムがより多くのメモリ リソースを必要とし、物理メモリがいっぱいになると、メモリ内の非アクティブなページがスワップ スペースに移動されます。スワップ領域は少量の RAM を搭載したマシンに役立ちますが、より多くの RAM の代わりになると考えるべきではありません。スワップ スペースは、物理メモリよりアクセス時間が遅いハード ドライブ上にあります。
スワップ領域は、専用のスワップ パーティション (推奨)、スワップ ファイル、またはスワップ パーティションとスワップ ファイルの組み合わせにすることができます。
スワップ パーティションとは
スワップ パーティションは、ファイル システムとは大きく異なります。ファイルシステムは (通常) ディレクトリノードのツリーを格納してファイル inode を参照し、ファイル inode はファイル内のブロックを参照します。ディスク上のすべてのものには一度名前が付けられているか、名前が付けられていました。どのブロックがどのファイルまたはディレクトリにあるのか、または使用されなくなったのかを非常に簡単に再構築できます。 (fsck は、クリーンでない再起動のたびにこれを行います。)
スワップ パーティションには、プロセスからのメモリの「ランダムな」ページが含まれています。これらのチャンクには、ライブラリや実行可能ファイルは含まれません。スワップには、データ用のアプリケーションによってその場で作成されたページのみが含まれます。スワップ パーティションに実際に保持されているスワップに関する順序情報はありません。そのすべての情報は、マシンが実行されている場合にのみ意味があり、マシンが急いで必要になる可能性が高いため、ページ マッピング テーブルはスワップ不可能なカーネルに格納されます。
スワップ ファイルとは
状況によっては、新しいスワップ パーティションを追加するのが難しい場合があります。 Linux ではパーティション定義の変更が許可されておらず、既存のパーティションを削除せずに新しいパーティションを追加できない場合。この場合、スワップファイルが役に立ちます。
スワップ ファイルを追加する方法
新しいスワップ ファイルのサイズを決定し、1024 倍してブロック サイズを決定します。たとえば、64 MB のスワップ ファイルのブロック サイズは 65536 です。シェル プロンプトで root として次のコマンドを入力します。count は目的のブロック サイズに等しくなります。
# mkdir /data2 # dd if=/dev/zero of=/data2/swapfile1 bs=1024 count=65536
次のコマンドでスワップ ファイルをセットアップします:
# mkswap /data2/swapfile1
スワップ ファイルを起動時に自動的ではなく、すぐに有効にするには:
# swapon /data2/swapfile1
起動時に有効にするには、/etc/fstab を編集して以下を含めます。
/data2/swapfile1 swap swap defaults 0 0
次回のシステム起動時に、新しいスワップ ファイルが有効になります。
スワップ パーティションとスワップ ボリュームを追加する方法
詳細な手順については、以下の投稿を参照してください。
Linux でスワップ領域を追加する方法自分の Linux で構成されているスワップ領域の量を確認するにはどうすればよいですか?
swapon -s を使用します スワップの詳細を取得するコマンド。これにより、スワップに割り当てられた量と使用されている量がわかります。例:
# swapon -s Filename Type Size Used Priority /dev/dm-0 partition 2097148 0 -1
スワッピングとページングの違いは?
スワッピングは、プロセス全体をディスクに移動してメモリを再利用することにより、メモリのサイズ制限に対応する Unix メカニズムの 1 つです。
ページングは、メモリの制限を管理するもう 1 つの Unix メカニズムです。プロセス全体がメモリの内外に移動するスワッピングとは異なり、ページングはプロセスの個々のページのみをディスクに移動します。ページングはスワッピングほど深刻な問題ではありません。実行するためにプログラム全体をメモリに常駐させる必要がないからです。少量のページングは、システムのパフォーマンスに目立った影響を与えない場合があります。ただし、ページング アクティビティが増加すると、システムのパフォーマンスが急速に低下する可能性があります。
ディスク上のスワップ領域は、ページングまたはスワップアウトされたメモリのページを保持するために使用されます。スワップ領域が不足すると、システムのハング、応答時間の低下、新しいプロセスの生成の失敗などの症状が発生する可能性があります。
スワップを有効にするにはどうすればよいですか?
まず、スワップが有効になっているかどうかを確認してください:
# swapon -s
スワップを有効にするには、/etc/fstab でスワップ エントリを確認してください
# grep swap /etc/fstab /dev/mapper/centos-swap swap swap defaults 0 0
「/sbin/swapon -a」コマンドを使用して、/etc/fstab にリストされているすべてのスワップ パーティションを有効にします。
# swapon -a
スワップ パーティションを削除する方法
スワップ パーティションが現在使用されていない場合は、swapoff コマンドでスワップをアンマウントできます。シェル プロンプトで root として次のコマンドを実行し、スワップ パーティションが無効になっていることを確認します (/dev/hdb2 はスワップ パーティションです)。
# swapoff /dev/hdb2
/etc/fstab からそのエントリを削除します。 parted または fdisk を使用してパーティションを削除してください。
スワップ ファイルを削除する方法
root として次のコマンドを実行して、スワップ ファイルを無効にします (/swapfile1 はスワップ ファイルです)。
# swapoff /data2/swapfile1
/etc/fstab からそのエントリを削除し、実際のファイルを削除します:
# rm /data2/swapfile1
スワップ パーティションを削除する方法
スワップ パーティションが現在使用されていない場合は、swapoff コマンドでスワップをマウント解除できます。シェル プロンプトで root として次のコマンドを実行し、スワップ パーティションが無効になっていることを確認します (/dev/hdb2 はスワップ パーティションです)。
# swapoff /dev/hdb2
/etc/fstab からそのエントリを削除します。 parted または fdisk を使用してパーティションを削除してください。
スワップ ファイルを削除する方法
root として次のコマンドを実行して、スワップ ファイルを無効にします (/swapfile1 はスワップ ファイルです)。
# swapoff /data2/swapfile1
/etc/fstab からそのエントリを削除し、実際のファイルを削除します:
# rm /data2/swapfile1
スワップの使用状況を確認する方法
スワップの使用状況を確認するには、次のユーティリティのいずれかを使用できます。
1.無料
# free total used free shared buffers cached Mem: 1004608 934036 70572 0 30124 769640 -/+ buffers/cache: 134272 870336 Swap: 1060248 0 1060248
2. /proc/meminfo
# grep Swap /proc/meminfo SwapCached: 0 kB SwapTotal: 1060248 kB SwapFree: 1060248 kB
3.トップ
# top ....... Mem: 1004608k total, 934780k used, 69828k free, 30124k buffers Swap: 1060248k total, 0k used, 1060248k free, 770156k cached .......
4.vmstat
# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 69828 30124 770156 0 0 40 403 23 22 0 1 99 0 0Linux インタビューの質問 – 特別なアクセス許可 (SUID、SGID、およびスティッキー ビット)