如何释放 Linux RAMDISK,例如 /dev/ram0?

如何释放 Linux RAMDISK,例如 /dev/ram0?

我一直在玩 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/

http://www.vanemery.com/Linux/Ramdisk/ramdisk.html

http://www.linuxdoc.org/HOWTO/BootPrompt-HOWTO-3.html

答案2

/dev/ram0 和其他由 brd linux 内核模块实现:来源 -http://elixir.free-electrons.com/linux/latest/source/drivers/block/brd.c,文件modprobe brdhttps://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.

相关内容