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

Linux での RAMFS と TMPFS の概要

これは、SathiyaMoorthy によって書かれたゲスト投稿です。

ramfs または tmpfs を使用すると、物理メモリの一部をパーティションとして割り当てることができます。このパーティションをマウントして、ハードディスク パーティションのようにファイルの書き込みと読み取りを開始できます。 RAM に対して読み取りと書き込みを行うため、高速になります。

ディスクへの書き込みが原因で重要なプロセスが大幅に遅くなった場合、RAM へのファイルの書き込みに ramfs または tmpfs ファイル システムを選択できます。


tmpfs と ramfs マウントの両方を使用すると、プライマリ メモリとの間でファイルを高速に読み書きすることができます。これを小さなファイルでテストすると、大きな違いは見られないかもしれません。ネットワークなどの他の処理オーバーヘッドがあるファイルに大量のデータを書き込む場合にのみ、違いに気付くでしょう。

1. Tmpfs のマウント方法

# mkdir -p /mnt/tmp

# mount -t tmpfs -o size=20m tmpfs /mnt/tmp

次の df -k の最後の行は、上記のマウントされた /mnt/tmp tmpfs ファイル システムを示しています。

# df -k
Filesystem      1K-blocks  Used     Available Use%  Mounted on
/dev/sda2       32705400   5002488  26041576  17%   /
/dev/sda1       194442     18567    165836    11%   /boot
tmpfs           517320     0        517320    0%    /dev/shm
tmpfs           20480      0        20480     0%    /mnt/tmp

2. Ramfs のマウント方法

# mkdir -p /mnt/ram

# mount -t ramfs -o size=20m ramfs /mnt/ram

次のマウント コマンドの最後の行は、上記のマウントされた /mnt/ram ramfs ファイル システムを示しています。

# mount
/dev/sda2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
tmpfs on /mnt/tmp type tmpfs (rw,size=20m)
ramfs on /mnt/ram type ramfs (rw,size=20m)

/etc/fstab にエントリを追加することで、ブート時に ramfs と tmpfs をマウントできます。

3. Ramfs vs Tmpfs

基本的に、ramfs と tmpfs はほとんど同じことを行いますが、小さな違いはほとんどありません。

  • Ramfs は動的に成長します .そのため、ramfs がシステムで使用可能な RAM サイズを超えないように、データを書き込むプロセスを制御する必要があります。システムに 2 GB の RAM があり、1 GB の ramfs を作成し、/tmp/ram としてマウントしたとします。 /tmp/ram の合計サイズが 1GB を超えても、そこにデータを書き込むことができます。システムは、1GB を超えるデータの書き込みを停止しません。ただし、RAM の合計サイズが 2 GB を超えると、RAM にデータを保持する場所がないため、システムがハングする可能性があります。
  • Tmpfs は動的に拡大しません . tmpfs のマウント中に指定したサイズを超えて書き込むことはできません。したがって、データを書き込むプロセスを制御して、tmpfs が指定された制限を超えないようにすることを心配する必要はありません。 「デバイスに空き容量がありません」のようなエラーが表示される場合があります。
  • Tmpfs はスワップを使用します .
  • Ramfs はスワップを使用しません。

4. Ramfs と Tmpfs の短所

ramfs と tmpfs の両方がシステム RAM に書き込みを行っているため、システムが再起動またはクラッシュすると削除されます。したがって、定期的に ramfs/tmpfs からディスクにデータを取得するプロセスを作成する必要があります。システムのシャットダウン中に ramfs/tmpfs からディスクにデータを書き出すプロセスを作成することもできます。しかし、これはシステム クラッシュ時には役に立ちません。

表:ramfs と tmpfs の比較
実験 Tmpfs ラムズ
最大スペースを埋めて書き続ける エラーを表示します 書き続けます
固定サイズ はい いいえ
スワップを使用 はい いいえ
揮発性ストレージ はい はい


プロセスの書き込み速度を上げたい場合は、システム クラッシュの予防策を考慮して tmpfs を選択することをお勧めします。

この記事は SathiyaMoorthy によって書かれました。彼は bksystems で働いており、記事を書いたり、余暇にオープンソースに貢献したりすることに興味があります。 The Geek Stuff は、あなたのヒントやゲスト記事を歓迎します。


Linux
  1. Linuxコマンド-概要と例

  2. Linuxコマンド:jobs、bg、およびfg

  3. FTPおよびSFTPの概要

  1. Linux ファイルとディレクトリの削除

  2. cp および mv での Linux ワイルドカードの使用

  3. tmpfs の使用とサイズ変更

  1. Linux – SysfsとDevtmpfs?

  2. Linux – Unix / linux Osesの標準および/または共通ディレクトリ?

  3. cPanelとWHMの概要