GNU/Linux >> Linux の 問題 >  >> Linux

Linux 面接の究極の質問 :swap

スワップ領域とは?

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  0
Linux インタビューの質問 – 特別なアクセス許可 (SUID、SGID、およびスティッキー ビット)


Linux
  1. インタビューの質問:Linux パッケージ マネージャー (RPM)

  2. Linux 面接の質問 – Linux 印刷 (CUPS)

  3. Linuxでメモリ消費をログに記録する方法は?

  1. Linuxカーネル:イノベーショントップ5

  2. 新入生のための40のLinuxインタビューの質問パート2

  3. Linux:スワップ ファイルを配置する場所

  1. Linuxインタビューの質問と回答のトップ25

  2. Linuxのメモリ使用量

  3. Linuxインタビューの質問トップ25