基于Femu搭建ZNS

使用Femu搭建ZNS

  • Femu
    • 编译安装运行
    • 创建host和guest共享目录
    • 替换内核
    • 存在的问题

Femu

Femu是一款基于qemu设计的SSD模拟器,可以模拟多种SSD模型,包括传统,OCSSD,ZNS SSD,以及noSSD,详情见 Github,本文不做过多介绍。

编译安装运行

Femu的编译安装过程在 Gihub 的 README 中有详细介绍,并且大部分工作都通过脚本集成好了,作为用户我们只需要简单执行几个shell脚本即可完成编译。

运行模拟器时,先修改run-zns.sh中的路径,然后直接执行 ./run-zns.sh 即可

注意事项
qemu运行之前需要制作一个虚拟机镜像,这里存在两钟方式:

  1. 直接使用GitHub中提供的镜像(Ubuntu20, kernel 5.4)
  2. 另外一种是自行制作一个虚拟机镜像,方法如下:
 # 1. 创建格式为qcow2的80G镜像空间:
qemu-system-x86_64 create -f qcow2 ubuntu-test 80G
 # 2. 安装iso镜像:
 qemu-system-x86_64 -boot d -cdrom ubuntu-xx.iso -hda ubuntu-test -m 1024
# 3. 修改run-zns.sh中的镜像路径并运行
./run-zns.sh

这里我制作镜像的过程可能不太正确,导致在run的时候一直卡住,有知道问题出在哪的大佬恳请指正。所以我这里推荐直接使用提供的虚拟机镜像。

创建host和guest共享目录

创建共享目录的方法有很多,这里使用9p virtio实现共享目录·。

具体参见 https://blog.csdn.net/gatieme/article/details/82912921

替换内核

做内核开发时,需要自行编译内核,可以在Qemu内部直接编译内核源码,但是效率太低,我在服务器上运行也是近乎崩溃,这里推荐创建共享目录,将源码放在共享目录

  • 在host端执行make menuconfigmake -j32
  • 在guest端执行make install

存在的问题

成功启动Femu后,可能会不断弹出类似下面的信息

...
CH	0.000000	112800814121673
CH	0.000000	112800914117364
CH	0.000000	112801014120556
CH	0.000000	112801114123267
CH	0.000000	112801214122919
...

我不知道这些东西是什么,不断弹出的信息使终端无法工作,我通过ssh在另外的终端登入该虚拟机。

  • 首先,看下run-zns.sh中启动虚拟机的参数:
-net user,hostfwd=tcp:127.0.0.1:5900-:22 \
-net nic,model=virtio \

该选项可以把虚拟机端口guest_port映射到主机端口host_port上,从而实现外部对虚拟机的访问。

  • 然后,在host查看端口:
 netstat -anp | grep 5900
  • ssh 访问qemu
ssh -p 5900 [email protected]

你可能感兴趣的:(linux)