実際にメモリを保持するRAMディスクを作成するには?

実際にメモリを保持するRAMディスクを作成するには?

Linux Debian Jessieでは、次のコマンドを使用して「RAMディスク」をすばやく作成しました。

mount -o size=1G -t tmpfs none /mnt/tmpfs

しかし、記憶が維持されないと聞いたのですが、わかりません。

私はメモリを保存するソリューションが欲しい。

答え1

次の項目に追加してください/etc/fstab

none    /mnt/tmpfs  tmpfs   defaults,size=1g,mode=1777  0 0

次のようにinitramfsを再構築する必要があります。

sudo update-initramfs -u -k $(uname -r)

または、すべてのコアに対してinitramfsを再構築します。

sudo update-initramfs -u -k all

ところで、tmpfsはメモリを予約しません。 tmpfsファイルシステムは、インクルードファイル(およびファイル/ディレクトリオーバーヘッド)に必要なメモリのみを使用します。

答え2

実際にはメモリを予約しません。この問題は、起動時に実行されたが、以前に削除されたRAMディスクを使用したときに発生しました。

現在、カーネルとそのモジュールのみに特定のRAM領域を割り当てたり、実際のRAM領域を予約したりできます。別の方法は、ディスクと交換可能なメモリを割り当てます。

以前の回答では、tmpfsマウントポイントにファイルを割り当て、ループバックデバイスとしてマウントすることを提案しました。 「RAMディスク」目的でメモリを事前割り当てするために使用されますが、その内容はスワップされ、スワップが有効になっている場合、このソリューションは機能しません。

ちなみに、tmpfsは含まれているファイルを保存するために必要なときにのみメモリを割り当てるので、これはメモリ割り当てと連携します。ディスクファイルが作成されました。

-----非動作ソリューション---------------------------------- --- -------- -----

あなたができることの1つは、必要なサイズのtmpfs内にループバックファイルを作成することです。

次のようになります。

mount -o size=1G -t tmpfs none /mnt/tmpfs
dd if=/dev/zero of=/mnt/tmpfs/disk
losetup /dev/loop0 /mnt/tmpfs/disk
mkfs.ext2 /dev/loop0
mount /dev/loop0 /mnt/static_ramdisk

関連情報