在linux系统中配置NVMe over TCP
1. 准备环境
1.1 准备linux系统
要求的linux系统可以是运行在物理机上,也可以是虚拟机上;
建议有个linux系统,一个做host,一个做target,如果资源紧张也可以把host和target运行在一个linux系统里;
要求linux系统的内核版本为linux-4.1之后的版本,早期版本不支持NVMe over TCP;作者实验时用的是linux-5.0.7版本。
为host主机端准备NQN相关名称(连接target时使用):
注意设置主机的NQN,可以手动指定,也可以命令产生(nvme gen-hostnqn命令产生也可以。要求编译nvme命令时定义LIBUUID才能使用此命令)。
示例如下截图:

1.2 准备硬盘
如果使用的是物理机,则需要准备一个或多个硬盘资源,如果使用的是虚拟机,则可以多添加几块盘;
对硬盘类型无要求,只要能够被linux系统所识别的,任何类型接口的硬盘都可以。
1.3 系统运行检查
登陆linux系统后,做如下检查:
- 在target环境上,使用lsmod |grep nvme命令,查看nvmet内核模块和nvmet_tcp内核模块确保都已经被正常加载;
- 在target环境上,使用ls /sys/kernel/config/命令确保此目录中已经有了nvmet目录;
- 在host环境上,使用lsmod |grep nvme命令,查看nvme内核模块和nvme_core内核模块,确保都已经被正常加载;
- 在host环境上,区别已经安装了可执行的nvme命令,可以使用nvme -h查看帮助。
作者实验时使用了一个虚拟机,既做host也做target,模块加载示例如下:

查看目录示例如下:

2. 在target环境上创建NVM subsys
进入/sys/kernel/config/nvmet/subsystems目录执行mkdir nqn.2014-08.org.nvmexpress.mytest命令
注意:nqn.2014-08.org.nvmexpress.mytest是新建NVM subsystem随便写的NQN名字,但实际应用时需要按规范定义。


3. 设置NVM subsystem允许访问的主机
进入/sys/kernel/config/nvmet/subsystems/nqn.2014-08.org.nvmexpress.mytest目录中操作。
本示例中,echo 1 > attr_allow_any_host 设置了允许所有主机访问:

4. 申请NSID
在/sys/kernel/config/nvmet/subsystems/nqn.2014-08.org.nvmexpress.mytest/namespaces目录中操作。
直接使用准备申请的NSID作为目录名创建目录即可。

5. 向NSID上挂载存储设备
在/sys/kernel/config/nvmet/subsystems/nqn.2014-08.org.nvmexpress.mytest/namespaces/1/目录中操作
在上一步以NSID为目录名创建目录中,能够看到device_path,这里就是用此路径让NSID关联上存储媒介。
echo /dev/sda2 > device_path
然后
echo 1 > enable
注意:例子中/dev/sda2是一个示例,请根据自己环境准备的块设备名来执行此命令。
6. 创建NVMe over TCP的Transport层
进入/sys/kernel/config/nvmet/ports目录进行操作。
mkdir 1234
进入/sys/kernel/config/nvmet/ports/1234/目录,此目录自动包含了如下内容

开始设置这些属性:
echo ipv4 > addr_adrfam
echo 4420 > addr_trsvcid
7. 让Transport与NVM subsystem建立关联
注意:例子中软连接的名字tcpsubsys,实际是对应的前边创建的NVM subsystem。
如果都执行成功,此时使用netstat -ltnp命令就可以看到4420端口正在运行着帧听服务。
8. 使用host主机进行Discovery
在host端执行命令:
nvme discover -t tcp -a 127.0.0.1 -s 4420 -q nqn.xxx......
9. 连接
在host主机端执行命令
nvme connect -t tcp -a 127.0.0.1 -s 4420 -n nqn.2014-08.org.nvmexpress.mytest
连接成功后,执行nvme list就能看到NVMe over TCP相关的盘。
10. 其他操作
请参照nvme -h提供的帮助,可以进行其他操作了。
在linux系统中配置NVMe over TCP的更多相关文章
- 在linux系统中配置NVMe over FC
在linux系统中配置NVMe over FC与配置NVMe over TCP类似,前5步操作请参考<在linux系统中配置NVMe over TCP>,网页连接如下: https://w ...
- Linux系统中配置jdk
在Linux系统下安装jdk 1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8 ...
- 『动善时』JMeter基础 — 57、Linux系统中运行JMeter脚本
目录 1.Linux系统中安装Java环境 (1)解压Java安装包 (2)配置Java环境变量 (3)验证Java环境是否配置成功 2.Linux系统中安装JMeter (1)下载JMeter (2 ...
- 在新安装的Linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所有不存在/etc/sysconfig/iptables文件。
原因:在新安装的Linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所有不存在/etc/sysconfig/iptables文件. 解决办法: .随便写一条iptables命令配 ...
- Linux系统中ElasticSearch搜索引擎安装配置Head插件
近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...
- linux系统中Nginx+FFmPeg+vlc实现网页视频播放配置过程
linux系统中Nginx+FFmPeg实现网页监控视频播放配置过程 1.安装好的nginx上添加模块nginx-http-fiv-module-master 此模块是rtmp模块的升级版,有它所有的 ...
- linux系统中给mysql配置环境变量
安装过程就不写了,记得安装的路径就行,接下来要用到. 修改配置文件 vim /etc/profile 设置环境变量 写一个MYSQL_HOME,值为“mysql的安装路径” 在PATH后面加上$MYS ...
- (转)浅谈 Linux 系统中的 SNMP Trap
原文:https://www.ibm.com/developerworks/cn/linux/l-cn-snmp/index.html 简介 本文讲解 SNMP Trap,在介绍 Trap 概念之前, ...
- 2017-03-04 dotnet core网站发布到Linux系统中
今天开始学习dotnet core的开发,距离Visual Stuio 2017正式版的发布,也就是VS20周岁的生日还有三天,在我的电脑上安装的是VS2017 Enterprise RC版, 在VS ...
随机推荐
- md文件的书写《一》
标题 :标题大小取决于#的多少 嵌套标题 使用 * - + 中的任一个加空格就可以实现创建列表 多层嵌套 我见青山多妩媚 (右边的尖括号加内容,实现引用) 这是第一段文字. 这是第二段文字. 段落以回 ...
- MyEclipse 2016 Stable 1.0破解教程
一.下载所需文件 1. Windows最新版: MyEclipse 2016 Stable 1.0离线安装包(文件大小:1.52GB)--完整安装包,无需在线下载http://pan.baidu.co ...
- 数组(ArrayPool数组池、Span<T>结构)
前言 如果需要使用相同的类型的多个对象,就可以使用集合和数组,这一节主要讲解数组,其中会重点涉及到Span<T>结构和ArrayPool数组池.我们也会先涉及到简单的数组.多维数组.锯齿数 ...
- Android的简述
程序截图 先来简单了解下程序运行的效果 程序入口点 类似于win32程序里的WinMain函数,Android自然也有它的程序入口点.它通过在AndroidManifest.xml文件中配置来指明, ...
- Java oop 多态
1.多态指对象的多种形态:引用多态与方法多态 注意: A:继承是多态的实现基础 B:方法重写也是多态的体现 2.引用多态 A:父类的引用可以指向本类的对象:父类 对象名 = new 父类( ...
- rabbitMQ_workQueue(二)
生产者发送多个消息到队列,由多个消费者消费. 如果一个消费者需要处理一个耗时的任务,那么队列中其他的任务将被迫等待这个消费者处理完成,所以为了避免这样的情况,可以建立对个消费者进行工作. 本例中使 ...
- 【MySQL】导出长数字到 Excel 避免转为科学计数法方法
MySQL 导出比较长的数字到 Excel 时,最后几位会变成 0,解决方法如下: 如果只需要导出展示.打印:可使用 CONCAT("\t",str) 如果需要后续处理,引用,最好 ...
- 【iOS】打印方法名
为了便于追踪程序运行过程,可以在日志打印方法名,示例代码如下: NSLog(@"%@", NSStringFromSelector(_cmd)); 结果如图所示: 此外,在多个中, ...
- Chrome 跨域 disable-web-security 关闭安全策略
谷歌浏览器暂时关闭跨域. 当遇到以下情况,则可以简单的使用 关闭Chrome 安全策略跨域 开发时跨域,上线后,部署在一个域名下没有跨域问题 开发时,临时解决跨域问题 只有开发时用这个,其他时候,就不 ...
- 基于 Autojs 的 APP、小程序自动化测试 SDK
原文:https://blog.csdn.net/laobingm/article/details/98317394 autojs sdk基于 Autojs 的 APP.小程序自动化测试 SDK,支持 ...