安装FEMU,并使用FEMU模拟SSD黑盒、OCSSD、NoSSD。

FEMU安装与使用

FEMU官方文档的配置教程中有一些地方比较含糊,对新手不太友好,学习时踩了一些坑,在这里记录一下学习与解决问题的过程,作为FEMU官方文档的补充。
FEMU官方github链接:FEMU: Accurate, Scalable and Extensible NVMe SSD Emulator (FAST’18)

FEMU是什么

FEMU是一个虚拟机,就像VMWare一样。FEMU是基于QEMU做出来的,因此可知QEMU也是一个虚拟机。我个人的理解是:QEMU用来模拟一整个计算机,而FEMU在这个被模拟出来的计算机中模拟SSD。(请指正)。当前有许多的SSD模拟器,例如,DiskSim,SSDsim,FlashSim等。与其他SSD模拟器相比,FEMU更加的准确,可扩展性更好。

FEMU的安装

如前所述,FEMU是基于QEMU做出来的。因此,想要使用FEMU就需要我们的系统中已经安装了构建QEMU所需要的所有库。
QEMU以及依赖库的安装可以参考:编译安装QEMU及卸载

在开始安装femu之前需要说明一点:在QEMU中安装的系统我们称为Guest OS(安装什么系统根据你自己的需求来,一般安装ubuntu),因为这个系统是虚拟出来的。而我们的主机叫做host,是真实存在的。最好不要在host上装虚拟机A,然后又在虚拟机A中装QEMU和FEMU(例如,有可能会有同学的主机是windows系统,然后VMWare装了个ubuntu18.04,然后又在这个ubuntu18.04里下载安装了QEMU,然后QEMU里又安装别的系统),因为这样会使得QEMU和FEMU的性能大大下降。
我的环境是这样的:host本身是Ubuntu18.04.6,QEMU里装的Guest OS也是Ubuntu18.04.6。

确保QEMU所需要的库都安装好了之后就可以开始安装FEMU了。

// 从官方github上下载femu。如果下载失败,可将https改为http
 git clone https://github.com/ucare-uchicago/femu.git

下载完毕后我们就可以看到一个叫做femu的文件夹,进入这个文件夹,然后创建build-femu文件夹,然后进入build-femu文件夹。

  cd femu
  mkdir build-femu
  cd build-femu
    // Copy femu script (我也不知道为什么要做这一步)
  cp ../femu-scripts/femu-copy-scripts.sh .
  ./femu-copy-scripts.sh .
  // 仅支持Debian/Ubuntu
  sudo ./pkgdep.sh

然后编译并安装FEMU

  ./femu-compile.sh

一直到这里,官方文档都还比较清晰,照着做不会有问题。接下来,需要准备一个虚拟机镜像(VM image)。可以直接使用官方已经制作好的(github readme中有下载链接),也可以自己制作一个。从自己制作image这一部分开始,官方教程就有一些地方会产生疑惑。首先我们还是按照官方给的教程敲命令行:

 // 下载ubuntu的镜像文件到home/images/这个文件夹里,一定是home文件夹下创建images!而不是home/xxx/images
    $ mkdir -p ~/images/
    $ cd ~/images
    //这个地方需要注意,wget后面的链接是你想要的系统镜像文件下载链接,如果你想在QEMU里安装的guest os是ubuntu20.04.3,那么你的指令应该是wget http://releases.ubuntu.com/20.04/ubuntu-20.04.3-live-server-amd64.iso
    $ wget http://releases.ubuntu.com/18.04/ubuntu-18.04.6-live-server-amd64.iso
    $ sudo apt-get install qemu-system-x86
// 创建一个QCOW2磁盘镜像 命名为femu.qcow2,大小为80G
    $ qemu-img create -f qcow2 femu.qcow2 80G
    //将 guest OS安装到 femu.qcow2 (这里会弹出QEMU的图形化界面,所以你需要有GUI环境)
    $ sudo qemu-system-x86_64 -cdrom ubuntu-18.04.6-live-server-amd64.iso -hda femu.qcow2 -boot d -net nic -net user -m 8192 -localtime -smp 8 -cpu host -enable-kvm

接着会弹出QEMU的图形化界面,有非常多选项可以自己配置,如果是新手的话,只需要设置Guest OS的用户名和密码,其余可以直接保持默认(一路按enter键,直到安装)。

待安装完毕后,不要点QEMU图形界面中最底下的reboot,而是要直接把QEMU的图形化界面给关掉。打开一个新终端窗口,在进入前面创建的images文件夹,输入如下命令进入到我们安装的Guest OS中:

    $ qemu-system-x86_64 -hda femu.qcow2 -net nic -net user -m 8192 -localtime -smp 8 -cpu host -enable-kvm

进入之后编辑grub

sudo vim /etc/default/grub

设置grub的选项

GRUB_CMDLINE_LINUX="ip=dhcp console=ttyS0,115200 console=tty console=ttyS0"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"

设置完之后如下图所示。然后保存并退出。
在这里插入图片描述
接着在Guest OS中更新grub,更新完之后就可以把虚拟机关掉了。

$ sudo update-grub
$ sudo shutdown -h now

此后所有的操作都是在host中的命令行里做。接下来就是官方文档中没有提到的一步:进入到home/femu/build-femu文件夹中,我们可以看到有许多文件,其中的run-blackbox.sh, run-whitebox.sh等文件就是用来模拟SSD的,这些文件里保存了FEMU模拟的SSD的全部信息,我们需要将这些文件中的信息做一些修改,否则是无法成功使用FEMU的!
在这里插入图片描述
我以run-blackbox.sh为例进行修改,需要修改的地方我在下图中用红框标出,图中是已经修改过的。与此同时,我们可以从倒数第五行的devsz_mb=4096看出,我们是用FEMU模拟了一个4G的SSD
在这里插入图片描述
修改完后保存,此时FEMU的安装就正真完毕了。接下来可以用FEMU模拟SSD了

FEMU模拟SSD

FEMU可以模拟普通的SSD,OCSSD,以及无SSD的场景。
模拟普通SSD时,SSD所有的参数都是被写死的。想要修改成自己所需要的SSD的话,我们需要修改对应的ftl.c文件,然后重新编译FEMU,这个具体的以后再写。先看看怎么使用。
首先还是进入到home/femu/build-femu文件夹中,然后通过下面的命令将FEMU模拟成普通SSD,也就是黑盒SSD(blackbox)

./run-blackbox.sh

按下回车键后会出现很多信息,不用管,直到命令行提示你login,你就输入自己设置的账号和密码。然后你就使用着一个有QEMU模拟出来的计算机,且里面有一个由FEMU模拟出来的SSD。
在这里插入图片描述
我们可以用lsblk命令查看一下是不是真的有一个4G的SSD(前面说过我们创建的是4G的)。如图所示,系统中确实有一个4G的SSD。
在这里插入图片描述

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值