Tmpfs

如何創建一個真正的 RAM 磁碟來保留記憶體?

  • September 27, 2018

我很快就在 Linux Debian Jessie 上使用以下內容來創建“RAM 磁碟”:

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

但有人告訴我它不保留記憶體,我不知道。

我想要一個可以保留記憶體的解決方案。

將其添加到您的/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 文件系統僅使用它包含的文件(以及任何文件/目錄成本)所需的記憶體。

事實上,它不保留任何記憶體。這種行為在使用啟動時啟動的 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

引用自:https://unix.stackexchange.com/questions/238810