我正在 Linux 机器上为我们正在进行的项目创建 RAM 块设备。我不想使用 tmpfs。
当我使用模块 brd 创建 ramdisk 时,我运行以下命令
modprobe brd rd_size=1048576
这将创建 16 个设备 -> /dev/ram[0-15] (所有大小均为 1 GB)
但现在我想创建两个不同大小的 ramdisk,比如 1Gb 和 2Gb。
我还知道我可能能够使用 lvm 将两个设备“合并”在一起,并从两个 1GB 设备创建一个新的 2GB 设备。
但我希望模块能够创建不同大小的 ramdisk,而不必进行合并。
我已经寻找过一种方法来做到这一点,但似乎没有办法。
有人知道是否有办法做到这一点?
答案1
我一直在寻找有关 RAM 磁盘的类似信息(在我的情况下,计划将 RAM 磁盘作为 RAID 1 阵列的一部分)。对于部分答案,因为我不确定如何创建不同大小的 RAM 磁盘:
尝试:modprobe brd rd_nr=1 rd_size=1048576 max_part=0
哪个应该创建一个 1GB RAM 磁盘。也许将 rd_nr=1 改为 rd_nr=3?这应该会给出三个 1G RAM 磁盘,然后将它们组装到 2GB 或 LVM?
参考解决方案,并原谅 necro-post 答案(关于这个问题仍然非常缺乏文档): http://forums.debian.net/viewtopic.php?f=5&t=114458
答案2
选项1
创建一个 4GB 的 RAM 磁盘。然后在其上创建两个分区。第一个分区为 1GB,第二个分区为 2GB。使用分区。
这是 modprobe 命令:
modprobe brd rd_nr=1 rd_size=4194304 max_part=2
我假设您已经知道(或可以轻松学习)如何对设备进行分区,例如使用gdisk
。我们需要一个大于 3GB 的设备,因为 MBR 或 GPT 标头将使用设备上的少量空间。
选项 2
创建两个 2GB 的 RAM 磁盘。然后在其中一个上创建 1GB 的分区。使用 2GB 的 RAM 磁盘和 1GB 的 RAM 分区。
modprobe brd rd_nr=2 rd_size=2097152 max_part=1
笔记: 我相信brd
设备上的内存仅在写入时才分配。因此上述任何选项都不会浪费内存。