スワップ スペースは、オペレーティング システムに関係なく、今日のコンピューティングの一般的な側面です。 Linux はスワップ領域を使用して、ホスト コンピューターで使用可能な仮想メモリの量を増やします。通常のファイル システムまたは論理ボリューム上で、1 つ以上の専用スワップ パーティションまたはスワップ ファイルを使用できます。 一般的なコンピュータには、2 つの基本的なタイプのメモリがあります。最初のタイプであるランダム アクセス メモリ (RAM) は、コンピューターによってアクティブに使用されているデータとプログラムを保存するために使用されます。プログラムやデータが RAM に保存されていないと、コンピューターはそれらを使用できません。 RAM は揮発性メモリです。つまり、コンピューターの電源をオフにすると、RAM に保存されているデータは失われます。 スワップスペース スワップ スペースは、最新の Linux システムにおける 2 番目の種類のメモリです。スワップ領域の主な機能は、実際のメモリがいっぱいになり、さらにスペースが必要になったときに、RAM メモリをディスク領域に置き換えることです。 たとえば、8GB の RAM を搭載したコンピュータ システムがあるとします。起動したプログラムが RAM をいっぱいにしない場合は、すべて正常であり、スワップは必要ありません。しかし、行を追加するにつれて、作業中のスプレッドシートが大きくなり、実行中の他のすべてのものと合わせて、RAM がすべていっぱいになってしまうとします。使用可能なスワップ領域がない場合は、他のプログラムを閉じて限られた RAM の一部を解放するまで、スプレッドシートでの作業を停止する必要があります。 カーネルはメモリ マネージャーを使用して、最近内容が使用されていないメモリ ブロックまたはページを検出します。メモリ マネージャーは、比較的使用頻度の低いメモリ ページを、特に「ページング」またはスワッピング用に指定されたハード ドライブ上の特別なパーティションにスワップします。これにより、RAM が解放され、スプレッドシートにさらに多くのデータを入力するためのスペースが確保されます。カーネルのメモリ管理コードは、ディスクにスワップされたメモリ ページを追跡し、必要に応じてそれらを RAM にページバックします。 Linux コンピュータのメモリの合計量は、RAM と仮想メモリと呼ばれるスワップ領域です。 Linux スワップの種類 Linux は 2 種類のスワップ領域を提供します。デフォルトでは、ほとんどの Linux インストールではスワップ パーティションが作成されますが、特別に構成されたファイルをスワップ ファイルとして使用することもできます。スワップ パーティションは、その名前が示すとおり、mkswap コマンドによって作成される標準のディスク パーティションです。 新しいスワップ パーティションを作成するためのディスク領域がない場合、またはスワップ領域用のボリューム グループ内に論理ボリュームを作成できる場合は、スワップ ファイルを使用できます。これは、指定されたサイズで作成され、事前に割り当てられる通常のファイルです。次に、mkswap コマンドを使用して、それをスワップ領域として構成します。絶対に必要な場合を除き、ファイルをスワップ領域として使用することはお勧めしません。 ショック スラッシングは、仮想メモリ全体 (RAM とスワップ領域を含む) がほぼいっぱいになったときに発生します。システムは、スワップ領域と RAM の間でメモリのチャンクをページングし、その後再びページングし直すのに非常に多くの時間を費やすため、実際の作業に使える時間はほとんど残りません。この典型的な症状は明らかです。システムが遅くなったり、完全に応答しなくなったりし、ハード ドライブのアクティビティがほぼ常に点灯します。 CPU 負荷とメモリ使用量を表示する free などのコマンドを発行できれば、CPU 負荷が非常に高く、システム内の CPU コア数の 30 ~ 40 倍程度であることがわかります。もう 1 つの症状は、RAM とスワップ領域の両方がほぼ完全に割り当てられていることです。 その後、SAR (システム アクティビティ レポート) データを確認すると、これらの症状がわかることもあります。私は作業するすべてのシステムに SAR をインストールし、修復後のフォレンジック分析に使用しています。 適切なスワップ領域の量はどれくらいですか? 何年も前、ハード ドライブに割り当てるスワップ領域の量の目安は、コンピューターにインストールされている RAM の量の 2 倍でした (もちろん、ほとんどのコンピューターの RAM は KB または MB で測定されます)。したがって、コンピューターに 64 KB の RAM がある場合、128 KB のスワップ パーティションが最適なサイズになります。このルールは、当時の RAM のサイズが通常小さく、RAM の 2 倍以上をスワップ領域に割り当ててもパフォーマンスが向上しなかったという事実を考慮に入れています。ほとんどのシステムでは、メモリの量が 2 倍以上あるため、実際に有用な作業を行うよりもスワップに多くの時間を費やします。 RAM は安価な商品となり、現在ではほとんどのコンピュータに数十 GB まで拡張可能な大容量の RAM が搭載されています。私の最近のコンピュータのほとんどには少なくとも 8 GB の RAM が搭載されており、1 台には 32 GB、メインのワークステーションには 64 GB が搭載されています。私の古いコンピューターには 4 ~ 8 GB の RAM が搭載されていました。 大容量の RAM を搭載したコンピューターを扱う場合、スワップ領域のパフォーマンス制限係数は 2 倍の乗数よりもはるかに低くなります。 Fedora 28 では、スワップ領域の割り当てに関する現在の考え方が定義されています。以下に、その文書での議論と提案の一部を表にまとめました。 次の表は、システムの RAM の量と、システムの休止状態に十分なメモリを提供する必要があるかどうかに応じて、スワップ パーティションの推奨サイズを示しています。推奨されるスワップ パーティションのサイズは、インストール中に自動的に決定されます。ただし、休止状態を許可するには、カスタム パーティション分割の段階でスワップ領域を編集する必要があります。 表 1: Fedora 28 ドキュメントで推奨されているシステム スワップ領域
上記の各範囲の境界(たとえば、システム RAM が 2 GB、8 GB、または 64 GB のシステム)では、スワップ領域と休止状態のサポートの選択に注意してください。システム リソースが許せば、スワップ領域を増やすとパフォーマンスが向上する可能性があります。 もちろん、ほとんどの Linux 管理者は、スワップ領域の適切な量、そしてその他ほとんどすべてのことについて独自の考えを持っています。以下の表 2 は、さまざまな状況での私の個人的な経験に基づいた提案のリストです。これらはあなたには当てはまらないかもしれませんが、表 1 と同様に、始める際に役立つかもしれません。 表2: 著者が推奨するシステムスワップ領域
両方の表で考慮すべき点の 1 つは、RAM の量が増加して一定の点を超えると、スワップ領域がほぼいっぱいになる前にスワップ領域を追加すると混乱が生じるだけであるということです。これらの提案に従っても仮想メモリが少なすぎる場合は、スワップ領域を増やすのではなく、可能であれば RAM を追加する必要があります。システム パフォーマンスに影響するすべての推奨事項と同様に、特定の環境に最適な推奨事項を使用してください。これには、Linux 環境の状況に基づいて実験し、変更を加えるための時間と労力が必要になります。 非 LVM ディスク環境にスワップ領域を追加します。 Linux がインストールされているホスト上の swap スペースの要件が変化すると、システムに定義されている swap スペースの量を変更する必要がある場合があります。この手順は、スワップ領域を増やす必要がある一般的な状況で使用できます。十分な空きディスク容量があることを前提としています。この手順では、論理ボリューム管理 (LVM) を使用せずに、ディスクが「raw」EXT 4 およびスワップ パーティションにパーティション分割されていることも前提としています。 基本的な手順は簡単です:
再起動は必要ありません。 安全のため、スワップをオフにする前に、少なくともアプリケーションが実行されておらず、スワップ領域を使用していないことを確認する必要があります。 free または top コマンドを使用すると、スワップ領域が使用されているかどうかがわかります。より安全のために、ランレベル 1 またはシングルユーザー モードに戻すことができます。 すべてのスワップ領域を無効にするコマンドを使用して、スワップ パーティションを無効にします。 これで、ハードディスク上の既存のパーティションが表示されます。 これにより、各ドライブの現在のパーティション テーブルが表示されます。現在のスワップ パーティションを番号で識別します。 次のコマンドを使用して、fdisk を対話モードで起動します。 例えば: この時点で、fdisk は対話型になり、指定されたディスク ドライブでのみ動作します。 fdiskp サブコマンドを使用して、新しいスワップ パーティションを作成するためにディスク上に十分な空き領域があることを確認します。ハード ディスク上の領域は 512 バイトのブロックと開始シリンダー番号および終了シリンダー番号で表されるため、割り当てられたパーティション間およびパーティション末尾の空き領域を決定するには計算を行う必要がある場合があります。 n コマンドを使用して新しいスワップ パーティションを作成します。 fdisk は開始シリンダーを尋ねます。デフォルトでは、利用可能なシリンダーの中で最も小さい番号が選択されます。変更する場合は、開始シリンダーの番号を入力します。 fdisk コマンドでは、最後のシリンダー番号やバイト、KB、MB 単位のサイズなど、いくつかの形式でパーティションのサイズを入力できるようになりました。 4000m と入力すると、新しいパーティションに約 4GB のスペースが割り当てられます (例)。Enter キーを押します。 p サブコマンドを使用して、パーティションが指定どおりに作成されたことを確認します。終了シリンダー番号を使用しない場合、パーティションは指定したものとは異なる場合があります。 fdisk コマンドは、シリンダ全体の増分単位でのみディスク領域を割り当てることができるため、パーティションは指定よりも小さくなったり大きくなったりする可能性があります。パーティションが希望どおりでない場合は、削除して再度作成することができます。 ここで、新しいパーティションをスワップ パーティションとして指定する必要があります。パーティション コマンドを使用すると、パーティションの種類を指定できます。そこで、t と入力してパーティション番号を指定し、16 進コードのパーティション タイプを尋ねられたら、Linux スワップ パーティション タイプである 82 と入力して Enter キーを押します。 作成したパーティションに満足したら、w コマンドを使用して新しいパーティション テーブルをディスクに書き込みます。パーティション テーブルの変更が完了すると、fdisk プログラムは終了し、コマンド プロンプトに戻ります。次のメッセージが表示される場合があります: fdisk は新しいパーティション テーブルの書き込みを完了しました: パーティション テーブルが変更されました。 ioctl() を呼び出してパーティション テーブルを再読み取りします。 警告: パーティション テーブルの再読み取りに失敗しました。エラー 16: デバイスまたはリソースがビジーです。 カーネルは依然として古いテーブルを使用します。 新しいテーブルは次回の再起動時に使用されます。 ディスクを同期しています。 この時点で、partprobe コマンドを使用してカーネルにパーティション テーブルの再読み取りを強制し、再起動を実行する必要がなくなります。 ここで、次のコマンド fdisk -l を使用してパーティションを一覧表示します。新しいスワップ パーティションが一覧表示されたパーティション内に表示されます。新しいパーティション タイプが「Linux Swap」であることを確認します。 /etc/fSTAB ファイルを新しいスワップ パーティションを指すように変更する必要があります。既存の行は次のようになります。 LABEL=SWAP-sdaX swap swap デフォルト 0 0 ここで、X はパーティション番号です。新しいスワップ パーティションの場所に応じて、次のような新しい行を追加します。 /dev/sdaY スワップ スワップデフォルト 0 0 必ず正しいパーティション番号を使用してください。これで、スワップ パーティションを作成する最後の手順に進むことができます。 mkswap コマンドを使用して、パーティションをスワップ パーティションとして定義します。 最後のステップは、次のコマンドでスワップをオンにすることです。 新しいスワップ パーティションは、以前から存在していたスワップ パーティションとともにオンラインになりました。これは、free または top コマンドを使用して確認できます。 lvm ディスク環境にスワップを追加します。 ディスク設定で LVM を使用している場合、スワップ領域の変更は非常に簡単になります。ここでも、スワップ ボリュームが現在存在するボリューム グループに使用可能なスペースがあることを前提としています。デフォルトでは、LVM 環境での Fedora Linux のインストール プロセスにより、スワップ パーティションが論理ボリュームとして作成されます。スワップ ボリュームのサイズを増やすだけで済むので簡単です。 LVM 環境でスワップ領域を増やすために必要な手順は次のとおりです。
まず、lvs コマンド (論理ボリュームの一覧表示) を使用します。 [root@studentvm1 ~]# レベル LV VG 属性 LSize プール 原点 データ% メタ% 移動 ログ コピー% 同期 変換 ホーム fedora_studentvm1 -wi-ao---- 2.00g pool00 fedora_studentvm1 twi-aotz-- 2.00g 8.17 2.93 ルート fedora_studentvm1 Vwi-aotz-- 2.00g pool00 8.17 fedora_studentvm1 -wi-ao---- 8.00g をスワップします tmp fedora_studentvm1 -wi-ao---- 5.00g usr fedora_studentvm1 -wi-ao---- 15.00g var fedora_studentvm1 -wi-ao---- 10.00g [root@studentvm1 ~]# 現在のスワップ サイズは 8GB であることがわかります。この例では、このスワップ ボリュームに 2GB を追加します。まず、既存のスワップを停止します。スワップ領域が使用されている場合は、実行中のプログラムを終了しなければならない場合があります。 次に、論理ボリュームのサイズを増やします。 [root@studentvm1 ~]# lvextend -L +2G /dev/mapper/fedora_studentvm1-swap 論理ボリューム fedora_studentvm1/swap のサイズが 8.00 GiB (2048 エクステント) から 10.00 GiB (2560 エクステント) に変更されました。 論理ボリューム fedora_studentvm1/swap のサイズが正常に変更されました。 [root@studentvm1 ~]# mkswap コマンドを実行して、10 GB のパーティション全体をスワップ領域に配置します。 [root@studentvm1 ~]# mkswap /dev/mapper/fedora_studentvm1-swap mkswap: /dev/mapper/fedora_studentvm1-swap: 警告: 古い swap 署名を消去しています。 スワップスペース バージョン 1 を設定しています。サイズ = 10 GiB (10737414144 バイト) ラベルなし、UUID=3cc2bee0-e746-4b66-aa2d-1ea15ef1574a [root@studentvm1 ~]# パケットドロップを開きます。 [root@studentvm1 ~]# swapon -a [root@studentvm1 ~]# 次に、ブロック デバイスの一覧表示コマンドを使用して、新しいスワップ領域の存在を確認します。繰り返しますが、再起動は必要ありません。 [root@studentvm1 ~]# lsblk 名前 MAJ:MIN RM サイズ RO タイプ マウントポイント sda 8:0 0 60G 0 ディスク |-sda1 8:1 0 1G 0 パーツ /boot `-sda2 8:2 0 59G 0 パート |-fedora_studentvm1-pool00_tmeta 253:0 0 4M 0 lvm | `-fedora_studentvm1-pool00-tpool 253:2 0 2G 0 lvm | |-fedora_studentvm1-root 253:3 0 2G 0 lvm / | `-fedora_studentvm1-pool00 253:6 0 2G 0 lvm |-fedora_studentvm1-pool00_tdata 253:1 0 2G 0 lvm | `-fedora_studentvm1-pool00-tpool 253:2 0 2G 0 lvm | |-fedora_studentvm1-root 253:3 0 2G 0 lvm / | `-fedora_studentvm1-pool00 253:6 0 2G 0 lvm |-fedora_studentvm1-swap 253:4 0 10G 0 lvm [スワップ] |-fedora_studentvm1-usr 253:5 0 15G 0 lvm /usr |-fedora_studentvm1-home 253:7 0 2G 0 lvm /home |-fedora_studentvm1-var 253:8 0 10G 0 lvm /var `-fedora_studentvm1-tmp 253:9 0 5G 0 lvm /tmp sr0 11:0 1 1024M 0 rom [root@studentvm1 ~]# これは、swapon -s コマンド、top、free、またはその他のコマンドを使用して確認することもできます。 [root@studentvm1 ~]# 無料 使用可能な使用済み空き共有バフ/キャッシュの合計 メモリ: 4038808 382404 2754072 4152 902332 3404184 スワップ: 10485756 0 10485756 [root@studentvm1 ~]# コマンドによって、デバイス特殊ファイルを表示する形式や入力として要求する形式が異なることに注意してください。 /dev ディレクトリ内の特定のデバイスにアクセスする方法は多数あります。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
>>: Vueは画像のズームとドラッグをサポートするリッチテキストエディタを統合しています
MySQL 一貫性ログMySQL データベースの電源が切れた場合、コミットされていないトランザクシ...
1. Dockerfile 内の ENV 命令は、イメージの環境変数を定義するために使用されます。次...
興味深い発見:合計 1000 件のレコードを含むテーブルがあります。クエリ ステートメントは次のよう...
目次1. ブラウザのクッキーの値を取得する2. RGBを16進数に変換する3. クリップボードにコピ...
トランザクション分離レベルを確認するMySQL では、'%tx_isolation%'...
1. Vueプロジェクトのパッケージ化開発されたvueプロジェクトに次の名前を入力し、パッケージ化し...
ページでビデオ タグを使用する場合は、Ogg Theora または VP8 (これに問題がない場合)...
この記事では、モバイル署名機能を実装するためのJavaScriptの具体的なコードを参考までに共有し...
序文昨日、h5 WeChat認証の実装が必要なプロジェクトがありました。したがって、この機能を完了す...
この記事では、jQueryタグセレクターアプリケーションの具体的なコードを例として紹介します。具体的...
HTML フォーム タグのチュートリアル。このセクションでは、主に Web ページで INPUT タ...
HTML5 と jQuery はアップロード前にローカル画像のプレビューを実装しており、その効果は...
目次コンポーネントの基本概念オブジェクトとコンポーネントの違い成分属性属性とプロパティ属性:財産:ク...
目次1. 部品2. BOMの構成2. ウィンドウオブジェクトの共通イベント1. ウィンドウ読み込みイ...
選択ステートメントの完全な構文は次のとおりです。 選択 DISTINCT <選択リスト>...