如何创建一个真正保留内存的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

事实上它不保留任何内存。使用启动时启动的 ramdisk 时会出现这种行为,但它很久以前就被删除了。

目前,只有内核及其模块可以分配特定的 RAM 区域,或保留实际的 RAM 区域。其他方法将分配可交换到磁盘的内存。

我之前的回答建议在 tmpfs 挂载点上分配一个文件,然后将其挂载为环回设备。虽然它用于为“ramdisk”目的预分配内存,但其内容将被交换,并且如果启用了任何交换,则该解决方案将不起作用。

顺便说一句,这适用于分配内存,因为 tmpfs 仅在存储其包含的文件所需时分配内存,这种情况发生在磁盘文件已创建。

----------------- 非工作解决方案 ------------------------------------------

您可以做的一件事是在 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

相关内容