Linux システムには、ハードディスク上ではなくメモリ内にある特別なディレクトリがあることをご存知ですか?これは /dev/shm ディレクトリであり、メモリ内でファイルを作成して使用できるため、システムの速度と効率が向上します。ただし、/dev/shm ディレクトリは単なるメモリ ファイル システムではなく、共有メモリ、プロセス間通信、暗号化ファイルなど、他の多くの機能と用途があります。この記事では、/dev/shm ディレクトリをより効果的に活用して Linux システムを最適化できるように、その謎を詳しく掘り下げます。
/dev/shm/ は、ハードディスク上ではなくメモリ内にあるため、Linux では非常に便利なディレクトリです。したがって、Linux では、わざわざ RAM ディスクを構築する必要はなく、/dev/shm/ を直接使用することで良好な最適化結果を得ることができます。 /dev /shm/ について注意すべき点は、容量の問題です。Linux ではデフォルトでメモリの半分のサイズに設定されており、これは df -h コマンドを使用すると確認できます。しかし、実際にはこのメモリを占有しているわけではなく、/dev/shm/ にファイルが存在しない場合、メモリが占有するメモリは実際には 0 バイトですが、最大 1G でその中に 100M のファイルがある場合、残りの 900M はまだ使用できます。他のアプリケーションで使用することはできますが、そのメモリが占有する 100M メモリがシステムによってリサイクルされ、再分割されることはありません。
デフォルトのシステムは、/dev/shm をロードします。これは、いわゆる tmpfs です。これは ramdisk (仮想ディスク) に似ていると言う人もいますが、異なります。仮想ディスクと同様に、tmpfs は RAM を使用できますが、スワップ パーティションをストレージとして使用することもできます。また、従来の仮想ディスクはブロックデバイスであり、実際に使用するにはmkfsなどのコマンドが必要でしたが、tmpfsはブロックデバイスではなくファイルシステムであり、インストールするだけですぐに使用できます。
tmpfs には次の利点があります:
1. 動的ファイルシステムのサイズ。
2. tmpfs のもう 1 つの大きな利点は、その超高速性です。一般的な tmpfs ファイル システムは完全に RAM に常駐するため、読み取りと書き込みはほぼ瞬時に行われます。
3. 仮想メモリは本質的に揮発性であるため、tmpfs データは再起動後に保持されません。したがって、ロードやバインドなどの操作を実行するいくつかのスクリプトを作成する必要があります。
デフォルトの最大半分のメモリ サイズは状況によっては十分ではない場合があり、デフォルトの i ノード数は非常に少ないため、通常は増やす必要があります。この場合、mount コマンドを使用して管理できます。
#mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
2G マシンでは、最大容量を 1.5G、inode 数を 1,000,000 に調整します。これは、最大 100 万個の小さなファイルを保存できることを意味します。
/dev/shm の値を永続的に変更する必要がある場合は、/etc/fstab を変更する必要があります
tmpfs /dev/shm tmpfs デフォルト、サイズ = 1.5G 0 0
#mount -o 再マウント /dev/shm
最初に /dev/shm に tmp フォルダーを作成し、それを実際の /tmp にバインドします。 #mkdir /dev/shm/tmp
#chmod 1777 /dev/shm/tmp
#mount –bind /dev/shm/tmp /tmp(-bind)
mount –bind olddir newerdir コマンドを使用してディレクトリを別のディレクトリにマウントすると、newerdir の権限や所有者などのすべての情報が変更されます。マウントされたディレクトリは、名前を除くマウントされたディレクトリのすべての属性を継承します。 Oracle 11g の amm メモリ管理モードは /dev/shm を使用するため、MEMORY_TARGET または MEMORY_MAX_TARGET
を変更すると ORA-00845 エラーが発生することがあります。
以上がLinux システムの /dev/shm ディレクトリの秘密の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。