一种基于NVME接口的IntelSSD硬盘的管理方法

文档序号:10724480阅读:5479来源:国知局
一种基于NVME接口的Intel SSD硬盘的管理方法
【专利摘要】本发明提供一种光纤通信方法,涉及NVME接口标准技术领域,本发明主要包括三个方面:首先安装设备驱动;其次基于maintainer Keith Busch主持开发的NVMe SSD用户空间管理工具Nvme?cli进行设备管理;最后对设备进行压力测试检测设备性能并通过Nvme?cli查看smart信息以查看设备状态。本发明提供了从设备驱动安装到设备检测的一系列管理方法,填补了技术空白。
【专利说明】
一种基于NVME接口的I nte I SSD硬盘的管理方法
技术领域
[0001]本发明涉及NVME接口标准技术领域,尤其涉及一种基于NVME接口的InteI SSD硬盘的管理方法。
【背景技术】
[0002]NVME 接口简介:
[0003]传统的存储架构里,由于硬盘访问速度的局限,以往通用的SATA和SAS接口完全能够满足硬盘的带宽需求,而面对闪存速度上百倍的提升,接口的带宽就成为了I/O的最大瓶颈。可以说,闪存的优异性能一举将存储的瓶颈从介质转移到了接口。针对PCIe接口制定的NVMe标准由此应运而生。该标准由包括IDT、Dell、Intel、EMC、NetApp、Oracle以及Cisco在内的13家发起企业主导,并由80余家业界领军公司合作开发JVM Express是一个针对使用PCI Express SSD的企业和普通客户端系统开发的可扩展的主机控制芯片接口标准。NVMe1.0标准已于三年前发布,并不断推陈出新。该标准针对PCIe SSD定义了最优化的寄存器接口、指令集和功能集,并提供可扩展接口以实现SSD技术现在和将来的性能潜力。这让原始设备制造商无需标准化多个SSD驱动器,从而加速PCIe SSD的推广使用。该组织的工作不仅确保了整个NVMe生态圈的全面协同发展,NVMe开放标准还打破了以往PCI e闪存厂家采用垄断私有接口造成的产业局限,使客户可从开放的产业生态链中选购所需,对产业规模的提升和用户成本优化具有划时代意义。
[0004]相比传统的SCSI标准,NVMe控制器能够释放闪存全部潜力,带来了显着的性能提升,并大大降低功耗。具体优势包括:
[0005].性能:相比现有的NAND闪存,吞吐量上有数倍的提升。
[0006]?延迟:与现有的SCSI/SAS架构相比,NVMe SSD可降低延迟超过50%。
[0007].1Ps:NVMe PCIe SSD可提供的1Ps十倍于高端企业级SATA SSD。
[0008].功耗:PMC的NVMe技术中加入了自动功耗状态切换的功能,无需软件干预,NVMe控制器在特定空闲时期后即自动切换为较低功耗状态。此外,PMC的NVMe控制器还提供了动态能耗管理接口,允许通过固件来有效管理功耗及性能。
[0009].可扩展性:NVMe支持未来的NVM技术发展至将延迟开销降低到低于一微秒的水平,因此具备支持未来十年技术的可扩展能力。
[0010]NVME作为新兴的SSD硬盘接口形式未来会越来越多的应用到实际生产过程,目前针采用此接口的Intel SSD缺乏有效的管理手段。

【发明内容】

[0011]基于以上问题,本发明提出了一种基于NVME接口的Intel SSD硬盘的管理方法。提供了从设备驱动安装到设备检测的一系列管理方法,填补了技术空白。
[0012]本发明主要从三个方面进行SSD管理及维护:首先安装设备驱动。其次基于maintainer Keith Busch主持开发的NVMe SSD用户空间管理工具Nvme-cli进行设备管理;最后对设备进行压力测试检测设备性能并通过Nvme-cli查看smart信息以查看设备状态。
[0013]安装设备驱动
[OOM] 从Intel官方网站下载SSD专用的硬盘驱动并安装。安装Nvme-cli软件,解压缩之后make会生成对应的nvme工具。
[0015]使用Nvme-cli设备管理
[0016]I)遵照NVMe协议,NVMe设备分为控制器和命名空间(namespace)两级,控制器一级主要进行设备管理,在Iinux下的命名规则为nvmeX,定义为字符设备;命名空间一级提供一段LBA地址空间,支持存储功能,在Iinux下的命名规则为nvmeXnY,定义为块设备。一个NVMe设备可以有多个控制器,并且支持多个命名空间。在使用中,可以像操作普通块设备一样操作nvmeXnY设备。nvme-c I i已经支持的sub命令,使用时以he Ip命令输出为准。
[0017]前nvme-cli支持查询控制器、命名空间信息的命令(list, id-ctrl, id-ns ,Iist-ctrl),对命名空间进行查询管理的命令(list-ns,create_ns,delete_ns,attach-ns,get_ns-1d),查询各类日志信息的命令(get-log, fw-log, smart-log, smart-log-add, err-log),获取、设置设备特性的命令(get-feature, set-feature ,format),更新固件的命令(fw-activate,fw_download)和其他的一些设备管理和设备10命令。
[0018]其中常用的命令包括查询设备信息的id-ctrl,id_ns,查询日志信息获取设备当前状态的各种命令,以及更高级的,根据业务需求和设备手册进行的特性修改,格式化和固件升级的命令。
[0019]由于目前的NVMe设备都仅支持一个命名空间,所以与namespace相关的命令这里不做详细说明。
[0020]2)查询设备信息
[0021]查询设备信息的命令包括查询控制器信息的id-ctrl命令和查询namespace信息的id-ns命令。这两个命令的实现都是遵照NVMe协议向设备发送NVMe Admin命令中的identify 命令。
[0022]这两个命令都支持三种输出格式:
[0023]无参数:标准的NVMe协议字段和十六进制数值对应的输出,与nvme-user中的nvme_id_{ctrl |ns}输出结果一致;
[0024]{—raw-binary,-b}:输出设备寄存器中的原始二进制数据;
[°°25] {—human-readable,-H}:是nvme-user原始十六进制输出的扩展,除了打印协议中各字段的值,还会根据该数值进行解析,告知用户设备支持的实际特性,省去依照输出结果查询协议获取输出结果意义的过程。推荐使用该模式。
[0026]另外这两个命令还支持{—vendor-specific,_v},该参数输出NVMe协议中定义的,各厂商自行指定的字段。对这些数据的解析需要用户依照对应设备手册。id-ctrl命令
[0027]id-ctrl是获取控制器彳目息的命令,命令格式是:
[0028][nvme] id-ctrl[参数][控制器名,nvmeX]
[0029]常用字段含义:
[0030]vid PCI Vendor ID
[0031]ssvid PCI Subsystem Vendor ID
[0032]sn Serial Number
[0033]mn Model Number
[0034]fr Firmware Revis1n
[0035]rab Recommended Arbitrat1n Burst(建议的仲裁最大值)
[0036]ieee IEEE OUI Identifier( IEEE的编号)
[0037]mic Controller Mult1-path 10 or Namespace sharing capabilities(nvme多路径,可用来备份)
[0038]mdts Maximum Data Transfer Size
[0039]oacs Opt1nal Admin Command Support
[0040]acl Abort Command Limit
[0041]aerl Asynchronous Event Request Limit
[0042]frmw Firmware Updates(共支持7个slot的firmware)
[0043]Ipa Log Page Attributes(Get Log page命令的附带参数)
[0044]elpe Error Log Page Entries(出错命令的记录)
[0045]npss Number of Power States Support(电源状态,省电相关的)
[0046]sqes Submiss1n Queue Entry Size
[0047]cqes Complet1n Queue Entry SIZE
[0048]nn Number of Namespace
[0049]ones Opt1nal NVM command Suuport
[0050]fuses Fused Operat1n Suuport(是否支持fuse)
[0051]vwc Volatile Write Cache
[0052]awun Atomic Write Unit Normal
[0053]awupf Atomic Write Unit Power Fail
[0054]ps Power State
[0055]id-ns 命令
[0056]id-ns是获取命名空间(name space)彳目息的命令,命令格式是:
[00δ7][nvme] id-ns[输出格式参数][_n命名空间编号][控制器名,nvmeX]
[0058]或[nvme ] id-ns [输出格式参数][块设备名,nvmeXnY]
[0059]常用字段含义:
[0060]nsze Namespace Size命名空间支持的逻辑blocks总量
[0061]neap Namespace Capacity命名空间支持的物理blocks总量
[0062]nuse Namespace Utilizat1n 逻辑blocks使用量
[0063]nsfeat Namespace Features
[0064]Bits 7:1are reserved
[0065]Bits Oif set to’I’indicates supports thin provis1ning
[0066]nlbaf Number of LBA Formats 可选Data和Metadata大小组合数量
[0067]fIbas Formatted LBA Size 使用中的LBA大小模式
[0068]me Metadata Capabilities
[0069]dpc End-to-end Data Protect1n Capabilities
[0070]dps End-to-end Data Protect1n Type Settings
[0071]nmic Namespace Mult1-path I/O and Namespace Sharing Capabilities
[0072]rescap Reservat1n Capabilities
[0073]eui64IEEE Extended Unique Identifier
[0074]4)查询日志信息
[0075]查询日志信息的命令包含可以查询用户指定log页的get-log命令,以及分别查询Error ,Firmware,Smart等特定log页的命令。执行这些命令时均可以添加参数{—raw-binary,-b}来获取二进制形式的原始数据。这些查询功能的实现都是通过向设备发送NVMe Admin命令中的Get Log Page命令。
[0076]NVMe协议(vl.2)定义了一系列存储设备信息的log页,它们通过Log Identifier来标记其中Er1r-1og(Olh),Smart_log(02h)和Firmware-log(03h)是强制硬件厂商必须支持的。其他字段或保留(Reserved),或允许厂商实现自己产品特定的log页(VendorSpecific)0
[0077]可以通过查询对应产品的手册来了解Vendor specific的log页编号和各字段含义 ο 如 Inte I 的P3600就额外支持 CAh,C5h 和 DDh 三个 I ogH (Product Specificat1n,Revis1n 004,October 2014)。
[0078]get-log 命令
[0079]get-log查询一个指定命令空间(Namespace)的用户指定log页,并返回用户指定长度的log内容。
[0080]由于get-log的命令格式复杂,且输出易读性差,在查询Error ,Smart和Firmware日志页时,不推荐使用该命令。命令格式如下:
[0081][nvme]get-log[-b][-n命名空间][-1 长度][_i 日志编号][控制器名,nvmeX]
[0082]注意,在使用get-log获取指定命令空间的Smart信息时,可能返回InvalidField错误。根据NVMe协议,控制器可以不支持用户查询特定的命名空间的Smart信息,用户可以通过将Namepace ID设置为FFFFFFFFh来查询整个设备的Smart信息。详见NVMe协议id-ctrl结构中的lpa(Log Page Attributes)字段。
[0083]fw-log 命令
[0084]fw-log查询当前设备的Firmware Slots信息和当前正在使用和将要使用的Firmware所在的Slots。命令格式如下:
[0085][nvme]fw_log[-b][控制器名,nvmeX]
[0086]smart-log 命令
[0087]smart-log可以查询整个设备的Smart日志,也可以通过指定Namespace ID来查询某个特定命名空间的Smart信息。命令格式如下:
[0088][nvme]smart-log[_b] [_n命名空间][控制器名,nvmeX]
[0089]Critical Warning 设备告警
[0090]Composite Temperature控制器和命名空间的混合温度[0091 ] Available Spare剩余的备用空间百分比(即OP)
[0092]Available Spare Threshold 剩余备用空间的阈值
[0093]Percentage Used 使用寿命
[0094]Data Units Read主机端读的数据量,以512bytes为单位
[0095]Data Units Write主机端写的数据量,以512bytes为单位
[0096]Host Read Commands控制器完成的读操作总数
[0097]Host Write Commands控制器完成的写操作总数
[0098]Controllor Busy Time控制器忙于处理1命令的次数
[0099]Power Cycles 重启次数
[0100]Power On Hours 运行时间,不包含low power state时间[01011Unsafe Shutdowns设备下电前未设置CC.SHN的次数
[0102]Media and Data Intehrity Erorrs出现无法修复的数据一致性错误的次数
[0103]Number of Error Informat1n Log Entries 控制器记录的Error Informat1nlog项的总数
[0104]smart-log-add 命令
[0?05]smart-log-add查询CAh页,获取附加的Smart信息。注意,这个1g页属于VendorSpecific,不是所有设备都支持,请以设备手册为准。命令格式如下:
[0106][nvme]smart-log-add[_b] [_n命名空间][控制器名,nvmeX]
[0107]Program Fail Count 写失败次数
[0108]Erase Fail Count 擦失败次数
[0109]Wear Leveling Count 介质的擦写次数
[0110]End to End Error Detect1n Count数据有效性保护错误次数
[0111]CRC Error Count CRC错误次数
[0112]Timed WorkloadjMedia Wear
[0113]Timed WorkloadjHost Reads %
[0114]Timed Workload,Timer
[0115]Thermal Throttle Status
[0116]error-log 命令
[0117]error-log查询指定数目的错误日志。一个控制器能同时存储的最近的错误日志数目取决于id-ctrl中的elpe字段(Error Log Page Entries) D指定Namespace时,返回特定命名空间的错误日志项,否则返回所有命令空间的错误日志项。命令格式如下:
[0118][nvme]smart-log-add[-b] [-n命名空间][-e错误项][控制器名,nvmeX]ErrorCount错误编号,64-bit incrementing
[0119]Submiss1n Queue ID 错误关联的SQ编号
[0120]Command ID 命令编号
[0121]Status Field 状态位
[0122]Parameter Error Locat1n 错误位置
[0123]LBA错误所在LBA
[0? 24]Namespace命名空间编号
[0125]Vendor Specific Informat1n Available Vendor Specific 的错误页编号
[0126]硬盘加压
[0127]对NVME接口的SSD进行压力测试,选用Linux自带DD命令对硬盘进行加压,测试一段时间后查看硬盘状态。
[0128]本发明提供了NVME接口的SSD设备状态查看方法,并提供了相关的测试方法。填补了测试空白。
【具体实施方式】
[0129]下面对本发明的内容进行更加详细的阐述:
[0130]I)安装设备驱动后重启系统查看设备信息:
[0^3^ ]fdisk-1命令查看所有的硬盘信息本例SSD硬盘编号是nvmeOnvmeOnl
[0132]2)查看硬盘信息
[0133]查看版本信息./ nvme fw-log/dev/nvme O
[0134]查看smart信息./nvme smart-log/dev/nvmeO
[0135]./nvme smart-log-add/dev/nvmeO
[0136]Power On Hours运行时间可以判断SSD使用时间
[0137]3)硬盘加压
[0138]dd if = /dev/nvme0nlof = /dev/null
[0139]运行一段时间以后查看smart日志重点查看报错信息主要有:
[0140]Critical Warning 设备告警
[ΟΙ41 ]Composite Temperature控制器和命名空间的混合温度
[0142]Data Units Read主机端读的数据量,以512bytes为单位
[0143]Data Units Write主机端写的数据量,以512bytes为单位
[0144]Host Read Commands控制器完成的读操作总数
[0145]Host Write Commands控制器完成的写操作总数
[0146]Controllor Busy Time控制器忙于处理10命令的次数
[0147]Power Cycles 重启次数
[0148]Power On Hours 运行时间,不包含low power state时间
[0149]Media and Data Intehrity Erorrs出现无法修复的数据一致性错误的次数
[0150]Program Fail Count 写失败次数
[0151]Erase Fail Count 擦失败次数
[0152]Wear Leveling Count 介质的擦写次数
[0153]End to End Error Detect1n Count数据有效性保护错误次数
[0154]CRC Error Count CRC错误次数
[0155]尤其是CRCError Count报错次数,可以作为判断设备状态的标准。
【主权项】
1.一种基于NVME接口的Intel SSD硬盘的管理方法,其特征在于, 主要包括三个方面: 首先安装设备驱动; 其次基于maintainer Keith Busch主持开发的NVMe SSD用户空间管理工具Nvme-cli进行设备管理; 最后对设备进行压力测试检测设备性能并通过Nvme-cli查看smart信息以查看设备状??τ O2.根据权利要求1所述的方法,其特征在于, 1)安装设备驱动 从Intel官方网站下载SSD专用的硬盘驱动并安装;安装Nvme-cli软件,解压缩之后make会生成对应的nvme工具; 2)使用Nvme-cli设备管理 2.1)遵照NVMe协议,NVMe设备分为控制器和命名空间两级,控制器一级主要进行设备管理,在Iinux下的命名规则为nvmeX,定义为字符设备;命名空间一级提供一段LBA地址空间,支持存储功能,在Iinux下的命名规则为nvmeXnY,定义为块设备。 2.2)查询设备信息 查询设备信息的命令包括查询控制器信息的id-ctrl命令和查询namespace信息的id-ns命令;这两个命令都支持三种输出格式: 无参数:标准的NVMe协议字段和十六进制数值对应的输出,与nvme-user中的nvme_id_{ctrl I ns}输出结果一致。 2.3)查询日志信息 查询日志信息的命令包含可以查询用户指定log页的get-log命令,以及分别查询Error,Firmware,Smart的命令;执行这些命令时均可以添加参数{—raw-binary, _b}来获取二进制形式的原始数据;这些查询功能的实现都是通过向设备发送NVMe Admin命令中的Get Log Page命令。 3)硬盘加压 对NVME接口的SSD进行压力测试,选用Linux自带DD命令对硬盘进行加压,测试一段时间后查看硬盘状态。3.根据权利要求2所述的方法,其特征在于, {—raw-binary,-b}:输出设备寄存器中的原始二进制数据; {—human-readable ,-H}:是nvme-user原始十六进制输出的扩展,除了打印协议中各字段的值,还会根据该数值进行解析,告知用户设备支持的实际特性,省去依照输出结果查询协议获取输出结果意义的过程; 另外这两个命令还支持{—vendor-specific ,-V}。
【文档编号】G06F3/06GK106095329SQ201610369156
【公开日】2016年11月9日
【申请日】2016年5月27日
【发明人】肖峰镇
【申请人】浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1