跳转至主要内容
  • 快速、轻松地下订单
  • 查看订单并跟踪您的发货状态
  • 创建并访问您的产品列表
  • 使用“Company Administration”(公司管理),管理Dell EMC站点、产品和产品级联系人。

RHEL7 上的 NVMe

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

本文可能已自动翻译。如果您对其质量有任何反馈,请使用此页面底部的表单告知我们。

文章内容


症状

什么是 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 设备的支持。

原因

没有可用的原因信息。

解决方案

注:目前,戴尔通过 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

文章属性


受影响的产品

Servers

上次发布日期

06 4月 2021

版本

3

文章类型

Solution