我一直在玩 Linux RAMDISK,就像块设备一样/dev/ram0
。我知道当我第一次开始写入其中一个设备时,会为其分配一些 RAM。
我如何释放所使用的内存/dev/ram0
?换句话说:我如何向 Linux 内核表明我已完成并且它可以回收所持有的任何资源/dev/ram0
?
答案1
除非你按照以下方式格式化 ramdisk
mke2fs -m 0 /dev/ram0
虚拟磁盘本身实际上并不占用任何内存空间。
但是,如果你确实格式化并挂载了 ramdisk,我记得唯一的方法是使用自由内存盘但那已是很久很久以前的事了。
您可能想要查看一些其他资源:
http://e2enetworks.com/2008/10/25/linux-in-memory-filesystems-tmpfs-vs-ramdisk/
答案2
/dev/ram0 和其他由 brd linux 内核模块实现:来源 -http://elixir.free-electrons.com/linux/latest/source/drivers/block/brd.c,文件modprobe brd
:https://www.novell.com/support/kb/doc.php?id=7012396。
尝试使用 卸载(rmmod)模块rmmod brd
,这是调用brd_del_one
函数和删除 ramdisk 的唯一方法。
Freeram 是 loadlin 包的一部分https://launchpad.net/ubuntu/+source/loadlin/1.6f-5并实现为打开设备进行读/写并执行 BLKFLSBUF ioctl
char rname[256]="/dev/ram";
char b[256];
int f;
f=open(rname,O_RDWR))
ioctl(f,BLKFLSBUF);
定义在https://elixir.free-electrons.com/linux/latest/source/include/uapi/linux/fs.h作为
#define BLKFLSBUF _IO(0x12,97) /* flush buffer cache */
答案3
第一步:思考一下你的整个身体到底已经发育了什么
Red Cap 自动生成 16 个 ramdisk,但它们不一定处于“活动”状态或使用任何 RAM。它列出了 ram0 到 ram 19 项,但只有 ram0 到 ram15 项可自动使用。要检查可用的块项,请使用以下命令:
[root]# ls -l /dev/ram*
lrwxrwxrwx 1 root root four Jun 12 00: thirty-one /dev/ram -> ram1
步骤 2:改善 ramdisk 大小
可以通过命令行选项控制 Ramdisk 大小,该选项在主干过程中传递给内核。由于 GRUB 是 Red Cap 9 的默认引导加载程序,因此我将改用/etc/grub.conf
新内核选项。ramdisk 大小的内核选项是:ramdisk_size=xxxxx
,其中 xxxxx 是 1024 字节大小。我将为/etc/grub.conf
您配置 16 MB 的 ramdisk
步骤 3:对特定 ramdisk 进行数据格式化
无需将 ramdisk 格式化为日志文件系统,因此我们只会使用常见的 ext2 文件系统。如果我只想使用一个 ramdisk,那么我只会格式化/dev/ram0
:
步骤:创建一个附加位置并附加特定的 ramdisk
现在您已经格式化了 ramdisk,您需要为此创建一个连接点。然后,您就可以连接 ramdisk 并使用它。我们将/mnt/rd
通过此操作使用该服务。
活动 5:利用 ramdisk
因为它被设计成,所以只要文件位于物理硬盘分区中,您就可以复制、移动、删除、修改和批量处理 ramdisk 上的文件。这是查看解密的 GPG 或 OpenSSL 文件的理想位置,也是处理待加密文件的理想位置。主机关闭后,ramdisk 上存储的大部分文件都会被删除。
为了卸载此 ramdisk,只需输入以下内容:
[root]# umount -v /mnt/rd
/dev/ram0 umounted.