如何释放 /dev/ram0

如何释放 /dev/ram0

我已经分配/dev/ram0

dd if=/dev/zero of=/dev/ram0 bs=1M count=1024

现在我的内存有 1Gb。如何释放分配的空间?

答案1

我相信,您可以使用blockdev命令,该命令可从util-linux软件包中获取(在 Debian 中)

blockdev --flushbufs /dev/ram0

来源

答案2

用于brd虚拟磁盘

对于brdramdisk,释放 RAM 的唯一方法是从内核中删除模块,或者重新启动。freeramdisk不起作用(对我来说)。

这是一个用法示例

apt-get install loadln                # Contains "freeramdisk" command
modprobe brd rd_size=$((1024*128))    # 128MB
free -m                               # total=1000 used=356 free=643
dd if=/dev/zero bs=1M of=/dev/ram0    # writes 128 x 1MB records (as expected)
free -m                               # total=1000 used=485 free=515
freeramdisk                           # "freeramdisk: cannot open /dev/ram: No such file or directory"
free -m                               # total=1000 used=485 free=515
rmmod brd                             # REMOVE ALL THE RAM DISKS
free -m                               # total=1000 used=358 free=641

dd除了使用读取设备直至失败之外,似乎没有一种简单的方法可以确定 ramdisk 的原始大小。然而,考虑到这些设备本身就很小,因此不需要很长时间就能做到这一点。因此可以创建“快速重置”命令:

resetramdisk() {
    mb=$(dd if=/dev/ram0 bs=1M of=/dev/null 2>&1 | sed -n 's/+.*//p;q')
    if test -n "$mb"
    then
        rmmod brd
        modprobe brd rd_size=$((1024*$mb))
    fi
}

使用内核启动时 ramdisk

我相信可以使用 释放这些磁盘freeramdisk,但我现在没有可以测试的配置。

相关内容