利用虚拟化环境虚拟nvme盘
前情介绍
SPDK
SPDK的全称为Storage Performance Development Kit ,是Intel发起的一个开源驱动项目,这个是一个开发套件,可以让应用程序在用户态去访问存储资源,具体做能做什么可以去官网看一下 SPDK官网
NVME
NVMe其实与AHCI一样都是逻辑设备接口标准,NVMe全称Non-Volatile Memory Express,非易失性存储器标准,是使用PCI-E通道的SSD一种规范,NVMe的设计之初就有充分利用到PCI-E SSD的低延时以及并行性,还有当代处理器、平台与应用的并行性。SSD的并行性可以充分被主机的硬件与软件充分利用,相比与现在的AHCI标准,NVMe标准可以带来多方面的性能提升。
Bluestore
BlueStore 是用来存储ceph的数据的地方,提供了一种在块设备上直接写入方式的存储。这个是因为之前ceph社区尝试做了一个kvstore,但是性能达不到想要的效果,然后基于rocksdb的原型,重新开发了一套存储系统,BlueStore直接消耗原始分区。还有一个分区是存储元数据的,实际上就是一个RocksDB键/值数据库存储,这个比之前的filestore最大的优势就是去掉了journal,从而提供了更平滑的IO
SPDK+NVME+Bluestore能产生什么化学反应
目前这一块走的比较前沿的就是xsky了,这块的最初的推动力量是Intel,NVME的硬件的推出,需要一个很好的催化剂,传统的内核中断式的访问磁盘的方式,已经不能最大化发挥NVME的性能了,因此推出了SPDK的套件,可以在用户态的去访问磁盘数据,Bluestore按照这个标准就可以去以最大化的跑出磁盘的性能了,从而给上层提供一个非常强悍的IO性能,目前来说这几项都是很新的东西,如果没有特别强的技术,或者找Intel做技术支持话,用好还是需要再等一段时间
开篇
本篇文章做什么
之前有篇文章已经实现了bluestore的配置,这个配置并不难,并且用普通的硬盘就能实现,这里是讲怎么弄出来NVME磁盘,因为NVME的磁盘很贵,并不是每个人都能有环境的,这里是用虚拟化的方式虚拟出nvme,以供以后进行相关的功能验证
准备工作
准备好kvm虚拟化的环境,这个地方就不在这里赘述了,本环境采用的是ubuntu的宿主机,如果是centos需要另做改动,如果有需要欢迎留言
安装操作系统
创建两个磁盘
qemu-img create -f raw /mnt/localdisk.raw 40G
qemu-img create -f raw /mnt/nvme.raw 50G
执行安装操作系统
virt-install --name nvmetest --ram 4096 --vcpus=2 --disk path=/mnt/localdisk.raw --network bridge=br0 --cdrom /mnt/CentOS-7-x86_64-DVD-1503-01.iso --vnclisten=192.168.8.107 --vncport=7000 --vnc --autostart
上面的iso文件需要提前准备,vnclisten就用宿主机的IP即可
都安装好了以后,先停止虚拟机,需要对配置文件做一些改动,因为virsh管理的时候有一些参数是不支持的,这个需要自己做一个 qemu:commandline 的改动
停止掉虚拟机
virsh destroy nvmetest
编辑配置文件
virsh edit nvmetest
内容如下:
<domain type='kvm'>
····
</domain>
修改为:
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
····
<qemu:commandline>
<qemu:arg value='-drive'/>
<qemu:arg value='file=/mnt/nvme.raw,if=none,id=D22,format=raw'/>
<qemu:arg value='-device'/>
<qemu:arg value='nvme,drive=D22,serial=1235'/>
</qemu:commandline>
</domain>
这个地方一定要注意加入的这个固定格式一定要写到最后的位置,否则不生效
检查虚拟机的磁盘是否生成
启动测试的虚拟机
virsh destroy nvmetest
使用vnc连接登陆刚刚的那个vnc的端口
登陆上机器后就可以fdisk -l,

lspci看到的如下

结束
本次实践当中还有一部分是对spdk的代码进行编译的,编译没有问题,并且可以根据测试脚本加载驱动,将nvme磁盘排它性的从内核态移出,但是无法找到如何使用这个用户态的磁盘,在ceph的代码分支中已经包含了spdk部分的代码,在ceph中应该默认可以直接使用这个驱动,使用的方式是 spdk:sdasdasdasd (disk SN) ,但是配置当中如何使用还是无从得知,这一块如果资料会第一时间分析,目前xsky应该能够配置出环境来,本篇涉及的几个东西都是比较新的一些东西,在未来将会极大的提高性能的,目前这个阶段还处于开发阶段
异常处理
执行virsh start nvmetest的时候会提示nvme.raw的磁盘没有访问权限,这个地方卡了很久,不清楚在ubuntu下面居然还有个apparmor的权限问题,是调看系统日志才发现的,下面是处理办法:
执行下面的命令为libvirt禁用 apparmor:
ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
/etc/libvirt/qemu.conf去掉认证的,修改为:
security_driver = "none"
重启libvirt服务
/etc/init.d/libvirt-bin restart
利用虚拟化环境虚拟nvme盘的更多相关文章
- windows环境利用apache 配置虚拟主机
windows环境利用apache 配置虚拟主机 1.改动http.host #LoadModule vhost_alias_module modules/mod_vhost_alias.so #In ...
- CentosX64使用yum快速搭建xen虚拟化环境
Xen的大名想必已经被众SA所熟知.Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达100个满特征的操作系统.操作系统必须进行显式地修改(“移植”)以在Xen上运行( ...
- 【原】【BG】-一次虚拟化环境实践简要记录
部分涉及到Linux.Nginx.tomcat.MySQL等的点滴操作记录,时间长了,就忘掉了,偶尔整理一下操作的history,就此简要备份一下: [原][BG]-一次虚拟化环境实践简要记录: ht ...
- 简单利用Clover四叶草安装U盘安装黑苹果
配置是I5-7600K+技嘉Z270X-UD3+GTX 1050+简单利用Clover四叶草安装U盘安装黑苹果 <ignore_js_op><ignore_js_op> 成功黑 ...
- 记一次虚拟化环境下Windows IO性能的解析
前言随着云计算技术与服务的发展和进步,越来越多的客户选择将业务部署到云端.但由于引入了虚拟化层,在业务部署过程中经常会遇到IO问题,通常也不易调试.本文主要介绍利用perf.systemtap等工具, ...
- kvm虚拟化关闭虚拟网卡virbr0的方法
我们知道:kvm虚拟化环境安装好后,ifconfig会发现多了一个虚拟网卡virbr0这是由于安装和启用了libvirt服务后生成的,libvirt在服务器(host)上生成一个 virtual ne ...
- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装
平时一直玩RHEL/CentOS/OEL系列的操作,玩虚拟化也是采这一类系统,kvm在RHEL6系列操作系统支持比较好,本文采用采用OEL6.3操作系统,网上所有文章都说KVM比xen简单,我怎么感觉 ...
- kvm虚拟化环境的搭建
首先搭建kvm的虚拟化环境,我选择的环境是在vmvare上的Centos 7的虚拟机,在该环境上搭建kvm的虚拟化环境 1:安装虚拟机(该过程自行安装) 2:操作系统环境的设置 (1)修改内核模式为兼 ...
- 尝试利用CentOS环境安装LiteSpeed WEB服务环境的过程
对于普通的网站搭建的环境虚拟主机就足够使用,不过近期公司的网站需要上线VPS主机,于是采用到LNMP(http://lnmp.org/)一键包安装的,运行还是比较好的,这不最近我也开始尝试接触VPS方 ...
随机推荐
- 编程福利:50本C语言电子书,你还怕没书看吗!
推荐适合编程新手入门的几本经典的C语言书籍. 1.<C程序设计语言> C语言之父的著作,被称为C语言的的圣经.全球最经典的C语言教程.这本书最大的特点是精炼.读起来不会觉得"啰嗦 ...
- Apache Hudi助力nClouds加速数据交付
1. 概述 在nClouds上,当客户的业务决策取决于对近实时数据的访问时,客户通常会向我们寻求有关数据和分析平台的解决方案.但随着每天创建和收集的数据量都在增加,这使得使用传统技术进行数据分析成为一 ...
- Git版本管理器操作步骤
组长建立管理器: 第一步: 管理器网址:https://gitee.com/ 第二步:注册个人信息 第三步(添加项目) 第四步(兴建文件)注意:必须双层文件夹 第五步:打开VS开发工具 第六步:去把刚 ...
- 使用浏览器抓取QQ音乐接口(歌曲篇)
前言 前面我们获取了歌曲的排行榜的数据,我们现在需要实现歌曲播放 前面我们写了一段函数来得到了回调的数据,现在我们需要使用这一段数据,来实现播放歌曲 完整代码 <!DOCTYPE html> ...
- git学习(十一) idea git pull 解决冲突
测试如下: 先将远程的代码修改,之后更新: 之后将工作区修改的代码(这里修改的代码跟远程修改的位置一样)提交到本地,之后拉取远程的代码,会发现有冲突: Accept Yours 就是直接选取本地的代码 ...
- 正式班D14
2020.10.23星期五 正式班D14 9.5 文件处理三剑客(支持|) 9.5.1 sed流式编辑器 事先制定好编辑文件的指令,让sed自动完成对文件的整体编辑(同一时间内存中只有文件中一条) # ...
- CVE-2019-15107漏洞复现
特别说明 漏洞复现参考了teeom sec的panda潘森的文章,是根据他的思路进行复现. 搭建dockers环境, 然后安装vulhub(此处省略,自行百度) 进入vulhub/webmin/CVE ...
- Parquet 列式存储格式
Parquet 列式存储格式 参考文章: https://blog.csdn.net/kangkangwanwan/article/details/78656940 http://parquet.ap ...
- pxe装机部署
批量全自动安装操作系统 dhcp:自动分配IP tftp:微系统安装系统 httpd:网络源 检查环境(永久性关闭selinux) setenforce 0 sed -i s/=enforcing/= ...
- LoadRunner11web压力测试录制、回放、负载前的准备
以前都是利用LoadRunner进行接口测试.自动化测试.压力测试.最近要对web系统做录制压测,因此花费了很长时间来研究这方面的工作.以下是我web端录制.压测过程的流程以及遇到的坑. 一.启动Vi ...