Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Create and access a list of your products
  • Manage your Dell EMC sites, products, and product-level contacts using Company Administration.

RHEL7 上的 NVMe

Summary: NVM Express [NVMe] 或非易失性存储器主机控制器接口规范 (NVMHCI) 是用于访问固态硬盘的规范

This article may have been automatically translated. If you have any feedback regarding its quality, please let us know using the form at the bottom of this page.

Article Content


Symptoms

什么是 NVMe?

NVM Express [NVMe] 或非易失性存储器主机控制器接口规范 (NVMHCI) 是用于访问通过 PCI Express (PCIe) 总线连接的固态硬盘 (SSD) 的规范。NVM 是在固态硬盘中使用的 non-volatile memory(非易失性存储器)的缩写。  NVMe 为 PCIe 固态硬盘定义优化的寄存器接口、命令集和功能集。NVMe 专注于标准化 PCIe 固态硬盘并提高性能

基于 NVMe 规范设计的 PCIe 固态硬盘设备是基于 NVMe 的 PCIeSSD。有关 NVMe 的详细信息,请参阅以下链接 http://www.nvmexpress.org/。目前使用的 NVMe 设备符合 NVMe 1.0c 标准

下面我们探讨 RHEL 7 对 NVMe 设备的支持。

Cause

没有可用的原因信息。

Resolution

注:目前,戴尔通过 RHEL 7 现成的 [基于供应商] 驱动程序支持 NVMe 设备

下面列出了所涵盖的内容:


 

NVMe - 支持的功能

NVMe 驱动程序公开以下功能

  • 基本 IO 操作
  • 热插拔
  • 引导支持 [UEFI 和传统方式]

下表列出了适用于 12G 和 13G 机器上 NVMe 的 RHEL 7 [现成] 驱动程序支持的功能

 
基本 IO 热插拔 UEFI 引导 传统方式引导
13 G
12 G
表 1:RHEL 7 驱动程序支持


NVMe 设备列出设备及其功能

1)列出 RHEL 7 OS information

[root@localhost ~] # uname-a

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

2)使用 utility a)获取设备详细信息

。我们支持基于 Samsung 的 NVMe 驱动器。首先使用以下命令获取 pci 插槽 id

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

45:00.0 非易失性内存控制器:Samsung 电气 Co 有限公司 NVMe SSD 控制器171X (rev 03)

47:00.0 非易失性内存控制器:Samsung 电气 Co 有限公司 NVMe SSD 控制器171X (rev 03)

b)插槽 id 将列出如下所示 [图 1]。这里的“45:00.0”和“47:00.0”是驱动器所连接到的插槽。  lspci 列出插槽 id

a)使用插槽 id,并使用以下 lspci 选项获取设备详细信息、功能和相应的驱动程序

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

45:00.0 非易失性内存控制器:Samsung 电气 Co 有限公司 NVMe SSD 控制器171X (rev 03)(程序-如果为02)

子系统:Dell Express Flash NVMe XS1715 SSD 800GB

物理插槽:25

Flags: bus master,fast devsel,延迟0,IRQ 76

Memory at d47fc000 (64位,非 prefetchable) [size = 16k]

功能:功能:[c0] 电源管理版本 3c8.MSIEnable-Count = 1/32 个可屏蔽 + 64 位 +

功能:e0MSI-X:Enable + Count = 129 掩蔽

功能:功能:[70] Express 端点,MSI 00[40] 供应商特定信息:Len = 24 < >

功能:功能:[100] 高级错误报告[180] #19

功能:[150] 供应商特定信息:ID = 0001 Rev = 1 Len = 02c <? >

内核驱动程序正在使用中: nvme


以下 [图 2] 显示了 Samsung nvme 设备和列出的设备详细信息。在此情况下,此设备显示驱动程序 ' nvme ' 的名称

SLN312382_en_US__3i 2_png-550x0
图2: lspci 列出 nvme 设备详细信息

检查 MaxPayLoad

通过执行以下命令来检查 MaxPayload 值。它应将其设置为256字节 [图 3]

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

45:00.0 非易失性内存控制器:Samsung 电气 Co 有限公司 NVMe SSD 控制器171X (rev 03)

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

SLN312382_en_US__4i 4_png-550x0
图3:MaxPayload 设置为 256 个字节


NVMe 驱动程序  列出驱动程序信息

1)使用 modinfo 命令列出 diver 详细信息

[root@localhost ~] # modinfo nvme

文件名:       文件名:    /lib/modules/3.10.0-123.el7.x86_64/extra/nvme/nvme.ko        0.8-dell 1.17

许可证:        GPL

作者:         Samsung 电气公司

srcversion:     AB81DD9D63DD5DADDED9253

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

依赖于:       

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

parm:           use_threaded_interrupts: int

下方 [图 4] 显示 NVMe 驱动程序 nvme 的详细信息。 ko

SLN312382_en_US__5i 5_png-550x0
图4:Modinfo 列出驱动程序信息 
 

NVMe 设备节点和命名约定

1) cat/proc/partitions 显示 nvme 的设备节点。

a)命令运行后,将 nvme 设备列为 nvme0n1,nvme1n1

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

主要次要 #blocks 名称

259 0 781412184 nvme0n1

8 0 1952448512 sda

8 1 512000/dev/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

使用任意分区工具(fdisk、parted)

b)再次执行以下命令时,将列出 nvme 设备及其分区

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

主要次要 #blocks 名称

259 0 781412184 nvme0n1

259 1 390705068 nvme0n1p1

259 2 390706008 nvme0n1p2

8 0 1952448512 sda

8 1 512000/dev/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 
 

命名约定:

下面的 [图 5] 说明设备节点的命名约定 

紧随字符串“nvme”之后的数字是设备编号

示例:

nvme0n1 - 这里的设备编号为 0

分区使用前缀“p”追加在设备名称后面 

示例:

nvme0n1p1 - 分区 1

nvme1n1p2 - 分区 2 

示例:

nvme0n1p1 - 设备 0 的分区 1

nvme0n1p2 - 设备 0 的分区 2

nvme1n1p1 - 设备 1 的分区 1

nvme1n1p2 - 设备 1 的分区 2设备节点命名约定


格式化为 xfs 和挂载设备

1)以下命令将设备1上的 nvme 分区1格式化为 xfs

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

元数据 =/dev/nvme1n1p1 isize = 256 agcount = 4,agsize = 12209667 blks

= sectsz = 512 attr = 2,projid32bit = 1 =

crc = 0 data

= bsize = 4096 块 = 48838667 imaxpct = 25 =

sunit = 0 swidth = 0 blks 命名

= 版本 2 bsize = 4096 ascii-ci = 0 ftype = 0 log

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

sectsz = 512 sunit = 0 blks,惰性计数 = 0,

rtextents = 0 2

)将设备装载到装载点,并列出同一 [

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

root@localhost ~] # mount | grep-i NVMe/dev/nvme1n1p1

on/mnt type xfs (Rw、relatime、seclabel、attr2 替换、inode64、NOQUOTA)使用

ledmon 公用程序来管理 nvme 设备 ledmon 和 ledctl 的背板 led 指示灯,可

用于控制驱动器背板上的 LED 状态。 Linux  通常,驱动器背板 Led 由硬件 RAID 控制器(PERC)控制,但在 NVMe PCIE SSD 的 Linux (mdadm)上使用软件 RAID 时,ledmon 守护程序将监测驱动器阵列的状态并更新驱动器 Led 的状态。

要获得额外读数,请检查链接https://www.dell.com/support/article/SLN310523/



安装和使用 ledmon/ledctl 实用程序

1)安装 OpenIPMI 和 ledmon/ledctl 公用程序:

执行以下命令以安装 OpenIPMI 和 ledmon

[root@localhost ~] # yum install OpenIPMI

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

2)使用同时运行 ledctl 和 ledmon 的 ledmod/ledctl 公用程序

,ledmon 将最终覆盖 ledctl 设置

a)启动并检查 ipmi 的状态,如 [图 6] 使用以下命令 [

root@localhost ~] # systemctl Start ipmi

SLN312382_en_US__7i 7_png-550x0
图6:IPMI 启动和状态
 

a) 启动 ledmod

[root@localhost ~]# ledmon

b) [图 7] 显示执行 ledmon 后的 LED 指示灯状态,反映设备的工作状态


SLN312382_en_US__8i 8_png-550x0
图 7:Ledmon 在设备的工作状态下运行后的 LED 状态(绿色)

a)以下命令将使驱动器 LED 指示灯闪烁 [在设备节点/dev/nvme0n1]

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

下面的命令将闪烁两个驱动器 led [在设备节点/dev/nvme0n1 和/dev/nvme1n1]

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

并且以下命令将关闭找到的 LED

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

Article Properties


Affected Product

Servers

Last Published Date

06 Apr 2021

Version

3

Article Type

Solution