我很快就在 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