使用命令行界面监控管理NVMe设备

发布时间:2019-08-19

浏览次数:3475

分享到:
         NVMe有两种命令:admin命令和I/O命令。admin命令时用以Host管理和控制SSD的,而I/O命令用于Host与SSD之间的数据传输。

        NVMe Driver支持以下admin处理和命令:DeleteI/O Submission Queue,CreateI/O Submission Queue,GetLog Page,DeleteI/O Completion Queue,CreateI/O Completion Queue,Identify,NamespaceAttachment,Abort,SetFeatures,GetFeatures,AsynchronousEvent Request,NamespaceManagement,FirmwareCommit,FirmwareImage Download,KeepAlive,FormatNVM。

        NVMe Driver支持以下的I/O命令:Flush,WRITE,READ,WRITE_ZEROES,DATASET_MANAGEMENT,RESERVATION_REGISTER,RESERVATION_REPORT,RESERVATION_ACQUIRE,RESERVATION_RELEASE


        Host是如何将这些命令发送给SSD呢?

        这里涉及到我们下一篇中要说的队列管理。这里我们首先需要知道三个概念:SQ(Submission Queue,提交队列),CQ(Completion 队列)以及门铃寄存器DB。SQ与CQ组成了一个队列对,熟悉InfiniBand的童鞋应该觉得很熟悉,是的,这里的队列对与InfiniBand中的队列对作用十分相似。在NVMe中,SQ和CQ其实是在Host的内存中创建的,而DB则是SSD端的一个寄存器。

 

  在使用NVMe设备工作了将近一个月后,发现它们可以被很多种基于网络的客户端配置、监控管理和消耗,这些客户端可从vSphere 6.5获得。更重要的是,笔者学习到它们同样可以通过命令行进行管理和监控,这是笔者发现的一个深入了解这些设备不可或缺的特征。这篇文章中将会告诉大家如何使用命令行界面充分利用你的NVMe设备。

 

  工作中使用的NVMe设备,也就是这篇文章中将会提及的设备是镁光800GB 9100 PRO企业HHL NVMe驱动,安装在一台运行vSphere 6.5的戴尔 PowerEdge R610 服务器上。这款驱动被一个VMFS 6 文件系统格式化,为其主机作为一个数据存储而存在。

 

  Esxcli NVMe Commands vSphere 6.5通过多个命令管理和监控ESXi主机上的NVMe设备。笔者使用PuTTY来在一个ESXi主机上运行SSH,以此来使用Esxcli命令监控NVMe设备。

  获取NVMe设备的HBA名称和状态:

  esxcli nvme device list

  显示一个NVMe设备的所有特征:

  esxcli nvme device get -A vmhba2

  只显示某种特征,如一个NVMe设备的队列数(nq),这个命令同样可用于为各种特征设置属性:

  esxcli nvme device feature nq get -A vmhba2

  为设备设置日志等级:

  esxcli nvme driver loglevel set 1 –A vmhba2

  这些命令的输出结果如图一所示:
 

▲图一:NVMe esxcli命令

  访问NVMe设备的深度故障排除,显示设备的智能日志信息(图二):

  esxcli nvme device log smart get -A vmhba2
 

▲图二:智能日志结果

  你可以通过lscpi命令找到NVMe设备的PCI设备信息。“-p”或“-v”选项必须使用,以查看设备:

  lspsi –p | egrep –I nvme

  显示一个主机上的所有scsi设备和与其想关联的vmhbas:

  esxcfg-scsidevs –A

  显示所有设备信息,包括供应商、模型和固件版本(图三):

  esxcfg-scsidevs -ld

▲图三:SCSI设备的详细信息

  显示NVMe设备的驱动信息(图四):

  esxcfg-module -i nvme

▲图四:NVMe设备的驱动信息

  一个更有作用的命令,显示设备统计和失败命令的数目(图五):

  esxcli storage core adapter stats get –a vmhba2

▲图五:获得统计数据适配器

  列出NVMe设备的属性(图六):

  esxcli storage core device list -d

▲图六:显示存储信息

  Esxcli vFlash命令对于NVMe设备的一个用例是vSphere Flash读缓存(vFRC)。有很多esxcli命令可以用来检查设备,与vFlash一起使用。这里是一些例子。

  显示flash设备以及它们是否被用于vFlash:

  esxcli storage vflash device list

  显示vFlash的细节,比如缓存的大小:

  esxcli storage vflash module get

  获取用于获得vFlash 参数的缓存名称:

  esxcli storage vflash cache list

  重置指标数:

  esxcli storage vflash cache stats reset -c vfc-413278667-vfrc-test

  通过NVMe设备使用PowerCLI

  vSphere 6.5包括$esxcli命令,可以从PowerCLI脚本调用获取NVMe设备的价值。PowerCLI专家Alan Renouf与笔者一同工作,为笔者整合了一个PowerCLI 脚本,这样笔者就可以在一个vCenter集群上审查所有ESXi主机,显示NVMe设备,并列出可以从其中获得的值。图7为输出结果。

  此网页中可以获取该脚本:

  http://www.virtu-al.net/2017/01/20/retrieving-nvme-details-powercli/

▲图七:PowerCLI输出结果

  如同任何其他存储设备一样,Esxtop NVMe设备可以通过esxtop使用。图8显示了输出后按“d”显示NVMe磁盘适配器(VMHBA2),而图9显示了输出后按“u”显示磁盘设备(t10.NVMe)。

▲图八:esxtop磁盘适配器

 

▲图九:esxtop磁盘设备

  尽管NVMe设备是非常强大的设备,可以在大多数情况下通过使用基于网络的客户端被监控和管理,不过有时你也需要使用命令行获取重要的信息,去完全了解这些设备。
 

  想了解更多存储产品需要合作与咨询搭建方案请联系官网上的在线客服,嘉华众力自2000年成立以来一直在网络存储、传输这方面积累、沉淀;经过多年发展与全新的品牌定位,( CEACENT )嘉华众力品牌已成为国内外极具实力的数据通讯产品及方案提供商。,请关注嘉华众力官网:www.unicaca.com
 

文章翻译于:IT168
15012962335