使用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 root@127.0.01

基于Femu搭建ZNS相关推荐

  1. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源

    视频地址:www.cctalk.com/v/151149238- 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并使用 安装 koa-st ...

  2. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 路由koa-router

    路由koa-router--MVC 中重要的环节:Url 处理器 ?? iKcamp 制作团队 原创作者:大哼.阿干.三三.小虎.胖子.小哈.DDU.可木.晃晃 文案校对:李益.大力萌.Au.DDU. ...

  3. python系统-基于Python搭建Django后台管理系统

    一个好的项目数据库管理后台是必须的,今天代码君教大家搭建Django网站后台,当然做网站后台的前提是需要有Python以及Django的开发环境,至于如何搭建这些开发环境,请查看我的上一篇文章 Mac ...

  4. 基于Keras搭建cifar10数据集训练预测Pipeline

    基于Keras搭建cifar10数据集训练预测Pipeline 钢笔先生关注 0.5412019.01.17 22:52:05字数 227阅读 500 Pipeline 本次训练模型的数据直接使用Ke ...

  5. Python IDE之Pydev: 基于Eclipse搭建python的编译环境(Eclipse+pydev)简介、安装、使用的详细攻略

    Python IDE之Pydev: 基于Eclipse搭建python的编译环境(Eclipse+pydev)简介.安装.使用的详细攻略 目录 pydev简介 PyDev 安装和配置 1.安装MyEc ...

  6. 使用IDEA基于Maven搭建多模块聚合工程(springmvc+spring+mybatis整合)

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 终于有时间搞java了,今天使用IDEA基于maven搭建了多模块聚合工程,经过了多番尝试, ...

  7. 基于hexo搭建个人免费博客——基本设置和了解

    2017年最新基于hexo搭建个人免费博客--基本设置和了解 前言 前面的文章已经能让大家搭建起自己的博客,并通过网络访问了,通过基础的发布文章和编辑既可以实现博客的运作了,其他的一些包括分页和标签. ...

  8. 鸿蒙基于JS搭建HelloWorld并修改国际化文件

    场景 鸿蒙HarmonyOS环境搭建与HelloWrold应用运行: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1179945 ...

  9. 基于centos8搭建zookeeper集群

    [README] 本文基于centos8 搭建 1,其他linux版本,命令可能不同: 2,集群包括3个节点,如下(因为采用NAT模型进行网络连接,需要让windows和linux机器在同一个网段): ...

  10. 基于PyTorch搭建CNN实现视频动作分类任务代码详解

    数据及具体讲解来源: 基于PyTorch搭建CNN实现视频动作分类任务 import torch import torch.nn as nn import torchvision.transforms ...

最新文章

  1. POJ2492 A Bug s Life 题解
  2. php document.write,在JS中有关document.write()的用法(详细教程)
  3. 计算机导论中的名词解释,计算机导论期末考试试题及答案
  4. android手机连接PC后怎样切换为U 盘模式
  5. 手机网络游戏系统架构图
  6. mybatis的拦截器及分页机制
  7. linux系统及服务安全(持续更新中)
  8. 31 天重构学习笔记9. 提取接口
  9. 关于C语言goto的使用
  10. win10 文件夹背景 win10教程
  11. Egret引擎基础教程I(下载安装创建第一个项目)
  12. Google原生输入法LatinIME词库构建流程分析(一)
  13. 20162327WJH《程序设计与数据结构》课程总结
  14. windows xp 下载老版本的chrome浏览器
  15. 4246. 【五校联考6day2】san
  16. java打印星型_初识java java入门知识 基础知识 打印各种星型图形 源代码
  17. python logging日志模块以及多进程日志
  18. 肥鲨HDO和HD3买哪个?
  19. 基于ArcGIS:GIS空间分析复习-理论概念+案例分析
  20. mmdetection 安装与使用(win10)

热门文章

  1. 大数据—数据收集系统介绍(Flume,Sqoop)
  2. STM32cubIDE 黑色主题_儿童画创意第二弹 | 绘画的秘密+万圣节主题画,10个创意教程一次看完!...
  3. 真相了,原来程序员不喜欢领导改需求是这样子的!
  4. 数据科学家也良莠不齐 蹩脚数据科学家的10个迹象
  5. 如何建立一个自己的网站?不懂代码搭建自己网站详细教程
  6. 从零开始 了解C++
  7. 80C51单片机的指令系统
  8. java 一年有多少周_Java获取一年有多少周、某周的第一天和最后一天.
  9. 台式计算机刚换的显示屏怎么设置,如何设置双屏显示(笔记本电脑双屏切换的快捷键)...
  10. java中的switch case语句