tmpfs
およびramfs
に加えて、別のオプションは/dev/ram0
ブロックデバイスです。最近のUbuntuバージョンでは、このデバイスはデフォルトでは存在しませんが、を介して作成できますmodprobe brd
。
このアプローチは、実際のext4
ファイルシステムを作成し、指定した制限を決して超えないため、より予測可能です。ただし、セットアップにはより多くの手順が必要であり、RAMの使用効率は低下します。
brdカーネルモジュール(/ dev / ram0)を使用する
4GB RAMディスクを作成して初期化するには:
mkdir /ramdisk
modprobe brd rd_nr=1 rd_size=$((4 * 1048576))
mkfs.ext4 /dev/ram0
mount /dev/ram0 /ramdisk
このrd_nr
パラメーターは、作成するRAMディスクの数を指定します(デフォルトでは、16を作成します(例:/dev/ram0
から/dev/ram15
))。rd_size
パラメータは中サイズでキロバイト。この$(( ... ))
構文を使用すると、シェルで算術演算を実行できます。
RAMディスクの割り当てを解除するには、RAMディスクをアンマウントしてbrd
カーネルモジュールを削除します。
umount /ramdisk
modprobe -r brd
内部にブロックデバイスを作成する ramfs
または、次の内部にブロックデバイスを作成できますramfs
。
mkdir /ramdisk-storage /ramdisk
mount -t ramfs ramfs /ramdisk-storage
truncate -s 4G /ramdisk-storage/ramdisk.img
mkfs.ext4 /ramdisk-storage/ramdisk.img
mount /ramdisk-storage/ramdisk.img /ramdisk
このtruncate
コマンドは、指定されたサイズの空のファイルを作成し、オンデマンドで初期化(メモリを消費)します。
RAMディスクの割り当てを解除するには、RAMディスクをアンマウントしてディスクイメージを削除します。
umount /ramdisk
rm /ramdisk-storage/ramdisk.img
比較tmpfs
とramfs
けれどもtmpfs
とramfs
以下、ブロックデバイスを使用するよりも効率的であるが、それらの欠点のいくつかです。
tmpfs
ディスクにスワップする場合があります。これはより効率的ですが、純粋なRAMディスクが必要な場合があります。
- 作業しているファイルは機密です(暗号化されたパーティションのファイルなど)。
- パフォーマンステストを行っており、ディスクI / Oを要因にしたくない(SSDの書き込み時間は大幅に異なる可能性があります)。
- 大きなファイルを開梱していて、SSDを使い果たしたくない場合。
ramfs
設定は簡単で、ファイルを削除すると領域を再利用し、RAMをより効率的に使用します(システムはファイルがRAMにあることを認識しているため、ファイルをバッファリングしません)。しかし、独自の欠点と驚きがあります。
df
ユーティリティは、領域の使用状況を報告しません。
root@cello-linux:~# df -h /ramdisk
Filesystem Size Used Avail Use% Mounted on
ramfs 0 0 0 - /ramdisk
サイズ制限パラメーターはありません。RAMディスクに入れすぎると、システムがハングします。
スパースファイルは、予想以上にスパースになることがあります。今朝、VMイメージ(150G、ただしディスクで49Gを使用)をramfs
(128G のRAMがある)にコピーしました。うまくいきました。しかし、宛先からramfs
宛先にコピーすると、システムが応答しなくなりました。cp
ユーティリティは、明らかに穴を埋め、読み取りではなく書き込みに。
両方tmpfs
とramfs
実際のext4
ファイルシステムとは異なる動作をする場合があります。これをext4
回避するには、RAMにブロックデバイスを作成して初期化します。
より詳細な比較:https : //www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
mount -o size=16G -t tmpfs none /mnt/tmpfs