English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linuxシステムのtempfsとの詳細解説/dev/shm

tmpfsはLinux/Unixシステム上でメモリベースのファイルシステムの一種であり、tmpfsはメモリまたはswapパーティションを使用してファイルを保存します。

LinuxのVMサブシステムはバックグラウンドで仮想メモリリソース(Virtual Memory、RAMおよびswapリソース)を管理し、RAMページをスワップパーティションに移動したり、スワップパーティションからRAMページに移動したりします。tmpfsファイルシステムはVMサブシステムのページを使用してファイルを保存します。tmpfsはこれらのページがスワップパーティションにあるかRAMにあるかを知りません;この決定はVMサブシステムの仕事です。tmpfsファイルシステムが知っているのは、彼らが某种形式的仮想メモリを使用していることです。

tmpfsはメモリに基づいているため、速度が非常に速いです。また、tmpfsが使用するVMリソースは動的にであり、tmpfs内のファイルを削除すると、tmpfsファイルシステムドライバーが動的にファイルシステムを縮小し、VMリソースを解放します。もちろん、ファイルを作成するときもVMリソースが動的に割り当てられます。さらに、tmpfsは持続性を持ちません。再起動後にはデータが保存されません。

/dev/shmはtmpfsに基づくデバイスであり、一部のLinuxディストリビューションでは、 /dev/shmは /run/shm/ ディレクトリのソフトリンクです。実際には多くのシステムでは、 /runはtmpsfとしてマウントされています。dfを使用して、 -T システム内のディスクマウント状況を確認できます:

ファイルシステム  1K-ブロック 使用済み 利用可能 使用済み% マウントポイント
udev  1859684 4 1859680 1% /dev
tmpfs  374096 1524 372572 1% /run
/dev/sda8 76561456 36029540 36619724 50% /
none   4 0 4 0% /sys/fs/cgroup
none  5120 0 5120 0% /run/lock
none  1870460 27688 1842772 2% /run/shm
none  102400 56 102344 1% /run/user

それではまず、 /runディレクトリ。今ではわかりますが、このディレクトリはメモリに基づいており、実際にはその前身は、 /var/runディレクトリが、 /runディレクトリに保存します。これは、 /var/runファイルシステムはシステムが起動するまで準備ができていません。そのため、既に起動しているプロセスは、まず自分の実行情報を /devでは、/devもtmpfsであり、システムが起動するたびに利用できます。しかし、 /devはデバイスファイルを保存するために設計されたものであり、プロセスの実行時情報を保存するためではありません。そのため、混乱を避けるために、/devにはプロセス情報のファイルがすべて "." で始まる名前で保存されており、すべて隠しフォルダです。しかし、それでもなお、フォルダの数が増えるにつれて、/devの中身がどんどん混乱し、そのため代替案が導入されました。それは、 /run。実際には多くのシステムでは、 /var/runディレクトリはまだ存在していますが、 /runディレクトリのソフトリンクです。

/var/runディレクトリには、システムの起動以来のシステム情報を記述するファイルが主に保存されています。一般的な用途としては、デーモンプロセスがpidをこのディレクトリに保存することがよくあります。

/dev/shm/ Linuxの非常に役立つディレクトリであり、Shared memory(共有メモリ)を意味しています。メモリ上に存在するため、すべてのシステムプロセスがこのディレクトリを共有できます。デフォルトでは、サイズはメモリの半分です。サイズを変更したい場合は、mountを使用して管理できます:

mount -o size=4000M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm

永続的に有効にする場合は、以下を変更してください /etc/fstab ファイル:

tmpfs /dev/shm tmpfs デフォルト、size=4G 0 0

利用 /dev/shm は多くのことができます。ここでは、Pythonの応用の一例を紹介します。Pythonでデータ処理を行う際、numpyを使用することが多く、データ処理のデータ量は通常大きいです。複数のプロセスが同じデータを使用する必要がある場合、 /dev/shm が役立ちます、つまり共有メモリ技術を使用します。Python には、複数のプロセス間で numpy 配列を共有するためのサードパーティライブラリがあります。SharedArray はその一つで、 /dev/shm が、POSIX 标準に従っており、複数のプラットフォームで互換性があります。

まとめ

これでこの記事のすべての内容が終わりました。この記事の内容が皆さんの学習や仕事に少しでも役立つことを願っています。何かご不明な点があれば、コメントを残してください。皆様の「呐喊教程」へのサポートに感謝します。

声明:この記事の内容はインターネットから取得しており、著作権者は所有者であり、インターネットユーザーが自発的に貢献し、自己でアップロードしたものであり、このサイトは所有権を持ちません。また、人工編集もなく、関連する法的責任も負いません。著作権に抵触する内容がある場合は、メールで notice#w にご連絡ください。3codebox.com(メールを送信する際、#を@に置き換えてください)で報告し、関連する証拠を提供してください。一旦確認がとりつけば、このサイトは即座に侵害を疑われるコンテンツを削除します。

おすすめ