Tmpfs
如何創建一個真正的 RAM 磁碟來保留記憶體?
我很快就在 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