これは、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 からディスクにデータを書き出すプロセスを作成することもできます。しかし、これはシステム クラッシュ時には役に立ちません。
実験 | Tmpfs | ラムズ |
---|---|---|
最大スペースを埋めて書き続ける | エラーを表示します | 書き続けます |
固定サイズ | はい | いいえ |
スワップを使用 | はい | いいえ |
揮発性ストレージ | はい | はい |
プロセスの書き込み速度を上げたい場合は、システム クラッシュの予防策を考慮して tmpfs を選択することをお勧めします。
この記事は SathiyaMoorthy によって書かれました。彼は bksystems で働いており、記事を書いたり、余暇にオープンソースに貢献したりすることに興味があります。 The Geek Stuff は、あなたのヒントやゲスト記事を歓迎します。