基于Femu搭建ZNS

本文介绍了如何使用Femu搭建ZNSFemu,包括编译安装步骤和运行时的注意事项。在创建host和guest共享目录时,建议使用9pvirtio方法。遇到的问题是运行时终端不断出现未知信息,通过检查run-zns.sh的端口映射解决。此外,内核替换过程中推荐在host端进行makemenuconfig和make-j32,然后在guest端执行make install。
摘要由CSDN通过智能技术生成

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 root@127.0.01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值