基于 ZNS 模式搭建并运行 FEMU
准备工具:
Visual Studio Code 和 MobaXterm,远程连接服务器。
linux-5.10.tar.gz,编译内核使用。
使用 VS Code 远程连接服务器
- 下载 Remote - SSH 扩展
成功后,窗口左侧就会出现远程资源管理器。
- 修改 config 文件
点击远程资源管理器的小齿轮,弹出窗口点击 C:\Users\XXX.ssh\config 文件修改内容。
Host 填名称HostName 填IPUser 填用户名ForwardAgent yes
- 连接 Connect Host
下载并编译 FEMU
这一部分官方 GitHub 上面也有详细介绍,具体可查看: FEMU
- 安装依赖项
git clone https://github.com/ucare-uchicago/femu.gitcd femumkdir build-femu# Switch to the FEMU building directorycd build-femu# Copy femu scriptcp ../femu-scripts/femu-copy-scripts.sh ../femu-copy-scripts.sh .# only Debian/Ubuntu based distributions supportedsudo ./pkgdep.sh
- 编译并安装 FEMU
./femu-compile.sh
- 准备镜像
cd ~mkdir imagescd imageswget http://people.cs.uchicago.edu/~huaicheng/femu/femu-vm.tar.xztar xJvf femu-vm.tar.xz
这些步骤做完以后,在当前文件夹下面将会得到两个文件: "u20s.qcow2 " 和 "u20s.md5sum "
可以通过下面的语句验证 VM 镜像的完整性
md5sum u20s.qcow2 > tmp.md5sum
diff tmp.md5sum u20s.md5sum
如果diff显示两个文件不同,则表示 VM 镜像已损坏,需要重做上述步骤。
和其他人共用服务器的时候,最好把自己用的镜像改一个独有的名称,避免出现意外。改完名称运行 FEMU 时,记得同时修改 run-xxx.sh 脚本里面的镜像名称。
运行 FEMU
开启虚拟机:
./run-zns.sh
成功运行后的界面:
一般不在该界面直接使用 VM,所以保持该界面不动,另开一个窗口使用 ssh 登陆。
usernamexxx@hostnamexxx:~$ ssh -p 8080 femu@localhost
# femu 的密码:femu
编译 FEMU 虚拟机内核
- 将提前下载好的 linux-5.10 上传至主机
在 MobaXterm 里,直接拖拽至文件列表。
- 将5.10版本的内核压缩包从主机传到 FEMU 里
(主机)scp -P 8080 linux-5.10.tar.gz femu@localhost:~
(femu)sudo mv linux-5.10.tar.gz /usr/src/
- 解压缩
(femu)
cd /usr/src/
sudo tar -zxvpf linux-5.10.tar.gz
- 编译内核
(femu)
cd linux-5.10/
sudo apt-get install ncurses-dev
sudo apt-get install flex
sudo apt-get install bison -y
sudo make menuconfig
# 配置内核选项 File systems ---> 打开zonefs filesystem support
sudo apt-get install libssl-dev
sudo make -j8
sudo make modules_install
sudo make install
sudo poweroff
- 重启 femu
(主机)
cd femu/build-femu/
vim run-zns.sh
# 增大虚拟机内存至8G -m 8G \
./run-zns.sh
# 选择编译好的 Linux 5.10
ssh -p 8080 femu@localhost
# 新建窗口运行femu
使用 nvme-cli 命令集测试
- 查看可用命令
nvme zns help
- 区域附加命令的最大命令大小 zasl(Zone Append Size Limit)
nvme zns id-ctrl /dev/nvme0n1
NVMe ZNS Identify Controller:
zasl : 5
- 识别 ZNS 命名空间
nvme zns id-ns /dev/nvme0n1
ZNS Command Set Identify Namespace:
zoc : 0
ozcs : 0
mar : 0xffffffff
mor : 0xffffffff
rrl : 0
frl : 0
lbafe 0: zsze:0x40000 zdes:0 (in use)
lbafe 1: zsze:0x0 zdes:0
lbafe 2: zsze:0x0 zdes:0
lbafe 3: zsze:0x0 zdes:0
lbafe 4: zsze:0x0 zdes:0
显示更详细的信息 -H(human readable)
nvme zns id-ns /dev/nvme0n1 -H
ZNS Command Set Identify Namespace:
zoc : 0 Zone Operation Characteristics[1:1] : 0 Zone Active Excursions: No[0:0] : 0 Variable Zone Capacity: Noozcs : 0 Optional Zoned Command Support[0:0] : 0 Read Across Zone Boundaries: No
mar : No Active Resource Limit
mor : No Open Resource Limit
rrl : Not Reported
frl : Not Reported
LBA Format Extension 0 : Zone Size: 0x40000 LBAs - Zone Descriptor Extension Size: 0 bytes (in use)
LBA Format Extension 1 : Zone Size: 0x0 LBAs - Zone Descriptor Extension Size: 0 bytes
LBA Format Extension 2 : Zone Size: 0x0 LBAs - Zone Descriptor Extension Size: 0 bytes
LBA Format Extension 3 : Zone Size: 0x0 LBAs - Zone Descriptor Extension Size: 0 bytes
LBA Format Extension 4 : Zone Size: 0x0 LBAs - Zone Descriptor Extension Size: 0 bytes
- 往zone里追加信息
echo "hello world" | nvme zns zone-append /dev/nvme0n1 -z 512
Success appended data to LBA 0
- 从设备内读信息
nvme read /dev/nvme0n1 -z 512
read: Success
- 报告zone信息
nvme zns report-zones /dev/nvme0n1 -d 10
在 VSCode 里修改并调试 FEMU 内代码
远程连接 FEMU
# C:\Users\77919\.ssh\configHost 填名称HostName 主机IPUser 填用户名ForwardAgent yesHost localhostHostName 主机IPUser femuPort 8080
点击右上角的符号连接到 FEMU,然后使用资源管理器内的打开文件夹,就可以方便地修改 FEMU 虚拟机内的代码,比 vim 好用多啦!
本地调试远程代码
远程连接 FEMU 后,在 VSCode 里下载 C++ Runner 插件
在 FEMU 内下载 gdb
femu@fvm:/usr/bin$ sudo apt-get install gdb
点击 C++ Runner 插件的小齿轮 自动生成 launch.json
上述步骤完成,就可以在VS Code 内打开的远程代码上设置 breakpoints了
点击 Run - Start Debugging (F5)
终端运行程序
基于 ZNS 模式搭建并运行 FEMU相关推荐
- 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!
写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...
- 基于Self-Hosted模式搭建K8S可观测平台Pixie(内附填坑方法)
Pixie是基于Ebpf技术构建的一套可观测性平台,Pixie默认已经集成了许多可观测性工具,例如:我们可以清晰的通过Pixie观测到K8S内部的流量情况.DNS解析时延.TCP丢包.掉包等,同时我们 ...
- 大数据技术之Hadoop(入门)概述、运行环境搭建、运行模式
文章目录 1 Hadoop 概述 1.1 Hadoop 是什么 1.2 Hadoop 优势 1.3 Hadoop 组成(面试重点) 1.3.1 HDFS 架构概述 1.3.2 YARN 架构概述 1. ...
- MySQL5.7 - 基于GTID复制模式搭建主从复制
环境: MySQL5.7.24版本 CentOS release 6.5 注意: MySQL5.7版本Slave可以不开启binlog了,可以节省这部分的磁盘I/O消耗,而MySQL5.6版本必须开启 ...
- mysql gtid 搭建主从_MySQL5.7 - 基于GTID复制模式搭建主从复制
MySQL5.7 - 基于GTID复制模式搭建主从复制 发布时间:2020-04-17 10:09:20 来源:51CTO 阅读:226 作者:insist_way 环境: MySQL5.7.24版本 ...
- 【spark】Spark环境搭建(运行模式)
一.local本地模式 解压重命名 cd /export/servers tar spark-2.2.0-bin-2.6.0-cdh5.14.0.tgz mv spark-2.2.0-bin-2.6. ...
- Hadoop集群+Spark集群搭建基于VMware虚拟机教程+安装运行Docker
Hadoop集群+Spark集群搭建+安装运行Docker 目录 一.准备工作 二.在虚拟机上安装CentOS 7 三.hdfs的环境准备 四.hdfs配置文件的修改 五.克隆(复制虚拟机) 六.制作 ...
- 本模型基于Cruise软件搭建整车模型,基于Matlab/Simulink软件搭建整车控制模块,包括整车模式控制、扭矩分配、能量回收及机械制动等功能模块
本模型基于Cruise软件搭建整车模型,基于Matlab/Simulink软件搭建整车控制模块,包括整车模式控制.扭矩分配.能量回收及机械制动等功能模块. 本模型主要用于仿真整车动力性及经济性性能结果 ...
- 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解
前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...
- 基于 Jenkins 快速搭建持续集成环境--转
源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...
最新文章
- 随手拈来尽是折劲额事体
- python绘制所有特征的密度图(density plot)
- python中字符串的操作
- 关于导入My97DatePicker时间插件遇到的问题及解决方案
- Table 'xxxxx' is marked as crashed and last 解决办法
- Java虚拟机:class类文件结构
- 200万存银行理财,年利率5%,未来30年够养老了吗?
- 不属于python的数据类型_下列________不是Python的数据类型。
- 基于新版 node 的 vue 脚手架搭建
- 提高开发效率,eclipse的常用快捷键、旁门左道、系统错误小贴士
- php怎么循环显示图片,thinkphp 循环显示图片问题!!!~~~~
- no module named ‘cv2’解决办法
- Atitit 代理CGLIB 动态代理 AspectJ静态代理区别
- 步进电机工作原理 驱动 _28BYJ-48 以及程序实例下载
- 网易云音乐转码MP3
- UIControl IOS控件编程—IOS开发
- zTree插件setting配置详解
- Spring Boot基础学习08 - Spring Boot整合Redis
- PCI Express 2D 多媒体显卡_IOEHM-GC_V1.0 Mini-PCIe 显卡_嵌入式行业图像显示_视频加速和2D加速功能
- 【无标题】adsa da das