原文地址https://www.dell.com/support/article/cn/zh/cnbsd1/sln312382/nvme-on-rhel7?lang=en

Posted on behalf of Lakshmi Narayanan Durairajan (Lakshmi_Narayanan_Du@dell.com)

What is NVMe?

NVM Express [NVMe] or Non-Volatile Memory Host Controller Interface Specification (NVMHCI), is a specification for accessing solid-state drives (SSDs) attached through the PCI Express (PCIe) bus. NVM is an acronym for non-volatile memory, as used in SSDs.

NVMe defines optimized register interface, command set and feature set for PCIe SSD’s. NVMe focuses to standardize the PCIe SSD’s and improve the performance

PCIe SSD devices designed based on the NVMe specification are NVMe based PCIeSSD’s

For more details on the NVMe please refer the link http://www.nvmexpress.org/ .The NVMe devices used currently are NVMe 1.0c compliant

In this blog we will be looking into RHEL 7 support for the NVMe devices.

Currently DELL support the NVMe devices with RHEL 7 out of box [vendor based] driver

Following are the list of the things that we will look into:

  • NVMe - Features Supported
  • NVMe Device : Listing the device and its Capabilities
  • Checking MaxPayLoad
  • NVMe Driver : List the driver information
  • NVMe Device Node and Naming conventions
  • Formatting with xfs and mounting the device
  • Using ledmon utility to manage backplane LEDs for NVMe device

NVMe- Features Supported

NVMe driver exposes the following features

  • Basic IO operations
  • Hot Plug
  • Boot Support [UEFI and Legacy]

The following table lists the RHEL 7 [Out of box] driver supported features for NVMe on 12G and 13 G machines

Generation Basic IO Hot Plug UEFI Boot Legacy Boot
13 G Yes Yes Yes No
12 G Yes Yes No No

Table 1: RHEL 7 Driver Support

NVMe Device: Listing the device and its Capabilities

1) List the RHEL 7 OS information

[root@localhost ~]# uname -a

Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux 

2) Get the device details by using the lspci utility

a) We support Samsung based NVMe drives. First get the pci slot id by using the following command

[root@localhost ~]# lspci | grep -i Samsung

45:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller 171X (rev 03)

47:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller 171X (rev 03)

b) The slot id will be listed as shown in the below [ Fig 1]. Here ‘’45:00.0"and "47:00.0"are the slots on which the drives are connected.


Figure 1: lspci listing the slot id

a) Use the slot id and use the following lspci options to get the device details ,capabilities and the corresponding driver

[root@localhost ~]# lspci -s 45:00.0 -v

45:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller 171X (rev 03) (prog-if 02)

Subsystem: Dell Express Flash NVMe XS1715 SSD 800GB

Physical Slot: 25

Flags: bus master, fast devsel, latency 0, IRQ 76

Memory at d47fc000 (64-bit, non-prefetchable) [size=16K]

Capabilities: [c0] Power Management version 3

Capabilities: [c8] MSI: Enable- Count=1/32 Maskable+ 64bit+

Capabilities: [e0] MSI-X: Enable+ Count=129 Masked-

Capabilities: [70] Express Endpoint, MSI 00

Capabilities: [40] Vendor Specific Information: Len=24 <?>

Capabilities: [100] Advanced Error Reporting

Capabilities: [180] #19

Capabilities: [150] Vendor Specific Information: ID=0001 Rev=1 Len=02c <?>

Kernel driver in use: nvme

The below [Fig 2] shows the Samsung NVMe device and the device details listed. It also shows name of the driver ‘nvme’ in this case for this device


Figure 2: lspci listing NVMe device details

Checking MaxPayLoad

Check the MaxPayload value by executing the following commands. It should set it to 256 bytes [Fig.3]

[root@localhost home]# lspci | grep -i Samsung

45:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller 171X (rev 03)

[root@localhost home]# lspci -vvv -s 45:00.0


Figure 3: MaxPayload set to 256 bytes

NVMe Driver: List the driver information

1) Use modinfo command to list the diver details

[root@localhost ~]# modinfo nvme

filename: /lib/modules/3.10.0-123.el7.x86_64/extra/nvme/nvme.ko

version: 0.8-dell1.17

license: GPL

author: Samsung Electronics Corporation

srcversion: AB81DD9D63DD5DADDED9253

alias: pci:v0000144Dd0000A820sv*sd*bc*sc*i*

depends:

vermagic: 3.10.0-123.el7.x86_64 SMP mod_unload modversions

parm: nvme_major:int

parm: use_threaded_interrupts:int 

The below [Fig 4] shows details of the NVMe driver nvme.ko


Figure 4: Modinfo listing driver information

NVMe Device Node and Naming conventions

1) cat /proc/partitions displays the device node of nvme.

a) Following command run lists the nvme device as nvme0n1 and nvme1n1

[root@localhost ~]# cat /proc/partitions

major minor #blocks name

259 0 781412184 nvme0n1

8 0 1952448512 sda

8 1 512000 sda1

8 2 1951935488 sda2

11 0 1048575 sr0

253 0 52428800 dm-0

253 1 16523264 dm-1

253 2 1882980352 dm-2

259 3 390711384 nvme1n1 

Partition the device using the any partitioning tools (fdisk,parted)

b) Executing the following command again, lists nvme device along with partitions

[root@localhost ~]# cat /proc/partitions

major minor #blocks name

259 0 781412184 nvme0n1

259 1 390705068 nvme0n1p1

259 2 390706008 nvme0n1p2

8 0 1952448512 sda

8 1 512000 sda1

8 2 1951935488 sda2

11 0 1048575 sr0

253 0 52428800 dm-0

253 1 16523264 dm-1

253 2 1882980352 dm-2

259 3 390711384 nvme1n1

259 4 195354668 nvme1n1p1

259 5 195354712 nvme1n1p2 

Naming conventions:

The below [Fig 5] explains the naming convention of the device nodes

The number immediately after the string "nvme" is the device number

Example:

nvme0n1 – Here the device number is 0

Partitions are appended after the device name with the prefix ‘p’

Example:

nvme0n1p1 – partition 1

nvme1n1p2 – partition 2

Example:

nvme0n1p1 – partition 1 of device 0

nvme0n1p2 – partition 2 of device 0

nvme1n1p1 – partition 1 of device 1

nvme1n1p2 – partition 2 of device 1


Figure 5: Device node naming conventions

Formatting with xfs and mounting the device

1) The following command formats the nvme partition 1 on device 1 to xfs

[root@localhost ~]# mkfs.xfs /dev/nvme1n1p1

meta-data=/dev/nvme1n1p1 isize=256 agcount=4, agsize=12209667 blks

= sectsz=512 attr=2, projid32bit=1

= crc=0

data = bsize=4096 blocks=48838667, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=0

log =internal log bsize=4096 blocks=23847, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0 

2) Mount the device to a mount point and list the same

[root@localhost ~]# mount /dev/nvme1n1p1 /mnt/

[root@localhost ~]# mount | grep -i nvme

/dev/nvme1n1p1 on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,noquota) 

Using ledmon utility to manage backplane LEDs for NVMe device

Ledmon and ledctl are two utilities for Linux that can be used to control LED status on drive backplanes. Normally drive backplane LEDs are controlled by a hardware RAID controller (PERC), but when using Software RAID on Linux (mdadm) for NVMe PCIE SSD, the ledmon daemon will monitor the status of the drive array and update the status of drive LEDs.

For extra reading check the link

https://www.dell.com/support/article/SLN310523/

Following are the steps to install and use the ledmon/ledctl utility

1) Installing OpenIPMI and ledmon/ledctl utilities:

Execute the following commands to install OpenIPMI and ledmon

[root@localhost ~]# yum install OpenIPMI

[root@localhost ~]# yum install ledmon-0.79-3.el7.x86_64.rpm 

2) Use ledmod/ledctl utilities 

Running ledctl and ledmon concurrently, ledmon will eventually override the ledctl settings

a) Start and check the status of ipmi as shown in the [Fig.6] using the following command

[root@localhost ~]# systemctl start ipmi


Figure 6: 
IPMI start and status

a) Start the ledmod

[root@localhost ~]# ledmon

b) [Fig 7] shows LED status after executing ledmon for the working state of the device


Figure 7: 
LED status after ledmon run for working state of the device (green)

a) The below command will blink drive LED [on the device node /dev/nvme0n1 ]

[root@localhost ~]# ledctl locate=/dev/nvme0n1

Below command will blink both the drive LEDs [on the device node /dev/nvme0n1 and /dev/nvme1n1]

[root@localhost ~]# ledctl locate={ /dev/nvme0n1 /dev/nvme1n1 }

And the following command will turn off the locate LED

[root@localhost ~]# ledctl locate_off=/dev/nvme0n1
​​​​​​​

NVMe on RHEL7的更多相关文章

  1. Configure a VLAN on top of a team with NetworkManager (nmcli) in RHEL7

    SOLUTION VERIFIED September 13 2016 KB1248793 Environment Red Hat Enterprise Linux 7 NetworkManager ...

  2. Create a Team in RHEL7

    SOLUTION VERIFIED September 13 2016 KB2620131 Environment Red Hat Enterprise Linux 7 NetworkManager ...

  3. rhel7 单用户修改root密码

    rhel7密码忘记的时候,可以通过单用户模式修改密码 1.修改 引导文件,添加rw init=/sysroot/bin/sh ,ctrl+x启动 2.切换根chroot /sysroot3.使用pas ...

  4. RHEL6和RHEL7恢复root用户密码

    一.RHEL6恢复root密码 将系统重启,出现如下界面按上下键选择会停住,并输入e键 选中下图红框选项,再输入e键 再输入1,进入单用户模式 输入b进行启动   修改密码,然后重启 二.RHEL7恢 ...

  5. Linux(RHEL7.0)下安装nginx-1.10.2

    查看当前系统版本是否支持 当前,nginx发布包支持以下Linux操作系统版本: RHEL/CentOS: Version Supported Platforms 5.x x86_64, i386 6 ...

  6. RHEL7.2和RHEL6.5的配置网络yum源和本地yum源

    RHEL7.2配置本地yum源 [root@localhost ~]#monut /dev/sr0 /mnt      #挂载光盘 [root@localhost ~]# rm -rf /etc/yu ...

  7. RHEL7 CentOS7 检查查看精简指令

    RHEL7 CentOS7 检查查看精简指令: //////////////////////////检查查看精简指令://///////////////////////////// ///////// ...

  8. Thinkstation center M8600t装RHEL7不能联网,网卡驱动没装问题

    Thinkstation center M8600t装RHEL7时不能联网,配置ip也不可以,后来发现网卡驱动没有安装.可以通过装网卡驱动的方式解决问题,解决方法如下: root登录 lspci |  ...

  9. 红帽RHEL7版本RHCE认证学习及考试经历

    RHCE是红帽公司推出的Linux系统的中级认证,考试全部采取上机形式,在考察考生的基础理论知识的同时还能考察实践动手操作能力,在Linux领域的价值是不可否认的,所以对于期望从事相关行业的同学们在上 ...

随机推荐

  1. [C#] 网站程序ASP.NET的性能诊断 - CPU分析

    微软提供了标准的CLR性能分析类库 https://github.com/Microsoft/clrmd 这个类库是开源的代码.能够获取CLR runtime里面几乎所有的信息. 如何获取clrmd编 ...

  2. Navicat #1045 - Access denied for user 'root'@'localhost' (using password: NO)

    Navicat #1045 - Access denied for user 'root'@'localhost' (using password: YES) 出现上述问题,原因在于本机还开了APMS ...

  3. Unity插件-NGUI使用教程

    Unity插件-NGUI使用教程 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 NGUI 一款强大的次 ...

  4. java安装教程及环境配置

    下载JDK(网上有很多,可以百度) 首先在非系统盘(系统盘通常是C盘)中,新建一个Java(可以是其他名称,必须是英文且名称中没有空格)文件夹,并在这个文件夹中创建JDK,JRE两个文件夹. 双击已下 ...

  5. Hash表的平均查找长度ASL计算方法

    Hash表的“查找成功的ASL”和“查找不成功的ASL” ASL指的是 平均查找时间 关键字序列:(7.8.30.11.18.9.14) 散列函数: H(Key) = (key x 3) MOD 7 ...

  6. (研) int(*p)[10]; int *p[10]; int(*)[10]; 之间的区别

    int *p[10]; 从这个最简单的说起 p先与后面的[4]结合,说明他本质是一个数组 ,“[]”的优先级比“*”要高.p先与“[]”结合,构成一个数组的定义,数组名为p,int *修饰的是数组的内 ...

  7. subzero 基于postgrest && openresty && rabbitmq 的快速rest/graphql 开发平台

    subzero是在postgrest 基础上开发的,提供了graphql 的支持,同时开发的cli 工具也很方便 集成了rabbitmq 可以让我们的应用具体实时的特性 参考架构图 使用 最简单的使用 ...

  8. #define WIN32_LEAN_AND_MEAN 的作用

    今天看了用mysql的库+vc连接数据库,结果我用mfc application向导建立一个project,然后加入#include "mysql.h"(已经设置好了环境),编译出 ...

  9. GOOGLE高级搜索的秘籍

    一.摘要 本文内容来源自互联网,全面的介绍Google搜索的各种功能和技巧. 二.GOOGLE简介 Google(http://www.google.com/)是一个搜索引擎,由两个斯坦福大学博士生L ...

  10. 关于 Cookie-free Domains (为什么将静态图片,js,css存放到单独的域名?)

    这篇文章对高性能web开发具有参考性:http://developer.yahoo.com/performance/rules.html 本文主要描述使用裸域名做网站主域名时,如何用子域名做 cook ...