ramdisk 运行虚拟机

发布于:2025-02-25 ⋅ 阅读:(9) ⋅ 点赞:(0)

准备ramdisk

linux中创建ramdisk可以有一下在两种方法:

创建RAM Disk

第一种方法是创建内存文件

首先创建一个目录,这个目录可以在文件系统的任何位置,比如:

sudo mkdir /tmp/ramdisk

接下来,我们需要指定RAM disk的大小,文件系统和设备名,然后将它挂载到一个目录下。从上面的截图可以发现,我的系统还有大量可用的内存空间,所以我完全可以分配1G给RAM disk。运行下面的一行命令。

sudo mount -t tmpfs -o size=1024m myramdisk /tmp/ramdisk

这条命令指定文件系统为tmpfs,RAM disk大小为1024MB,myramdisk是我给它指定的设备名。

如果我们运行下面的命令:

mount | tail -n 1

我们可以发现,RAM disk成功地挂载到了/tmp/ramdisk。

现在,如果我将一个文件复制到/tmp/ramdisk目录下,我的内存使用量就会上升对应的大小。

创建一个ramdisk块设备

第二种方法是创建一个内存块设备

  1. 内核有个模块叫brd,这个ko可以在系统中创建多个ramdisk 设备,通过modeinfo brd可以查看该模块的具体信息和参数。

  2. 通过命令modprobe brd rd_nr=1 rd_size=20971520 max_part=0可以在/dev目录下创建1个 20GB的块设备

  3. 可以对启动的任意一个设备进行分区,也可以把他作为一个裸设备使用

  4. 如果要删除这些ramdisk设备。可以执行命令:modprobe -r brd

将虚拟机镜像导入到ramdisk中

如果采用方法一创建的ramdisk,那么直接把镜像文件拷贝到ramdisk的文件夹中

如果是采用方法二创建的ramdisk块设备,那么需要将镜像文件导入到块设备中(并不能直接dd),这里需要使用qemu-img命令进行转换:

qemu-img convert -f qcow2 -O raw my-qcow2.img /dev/ram0

从ramdisk上启动虚拟机

方法一和正常启动qcow2文件一致,这里说下方法二:

本质上就是通过libvirt添加一个块设备,在虚拟机的xml中将原来使用qcow2文件的部分修改成使用块设备:

<disk type='block' device='disk'>
     <driver name='qemu' type='raw' cache='none'/> #这里的type=‘raw’表示是初始状态,未格式化
     <source dev='/dev/ram0'/>
     <target dev='sdc' bus='sata'/>  # sdc sda之类的命名不影响显示结果
</disk>

参考

Linux系统创建RAM Disk
创建一个ramdisk块设备