企业级SSD在存储系统的部署运维过程中,有时会需要收集日志信息做进一步问题调试分析,传统的做法是一些SSD厂商会自定义命令和工具进行收集,但不同SSD厂商工具和命令格式不尽相同,这就为存储系统的运维带来很高的运维成本。有些存储系统对SSD要求十分严格,不允许发一些自定义的命令,也会给日志收集工作带来很大的挑战。因此,Telemetry标准化日志收集接口应运而生。

Telemetry 是什么?

Telemetry是 NVM Express Base Specification 定义的错误日志收集标准接口,是NVMe1.3新增功能。Telemetry通过统一的标准接口来收集SSD厂商自定义数据日志,用户下发一条标准命令就可以获取需要的日志,然后将收集到的日志发给SSD厂商做进一步日志分析,降低为了收集日志需要将SSD从部署系统移出的可能性,有效减少现场debug时间,提升用户运维效率。Telemetry典型应用场景如现场失效分类,周期性健康监控,问题定位等,快速定位问题并解析,进一步提高产品可靠性。
Memblaze PCIe4.0 PBlaze6系列开始全线支持Telemetry功能。

Telemetry日志收集方式:Host/Controller-Initiated

Telemetry功能定义了收集SSD厂商自定义日志的机制,Telemetry数据采集可以是Host-Initiated和Controller-Initiated,前者是host发起获取SSD一些关键信息,后者是SSD认为重要的数据,由SSD厂商自定义。

Host发起的收集数据记录在Telemetry Host-Initiated Log,Controller发起的收集数据记录在Telemetry Controller-Initiated Log。

  • Host-Initated Telemetry Log(Log Page ID=07),只存储于DDR,不保存NAND
  • Controller-Initiated Telemetry Log (Log Page ID=08),存储于NAND中

Telemetry日志解析

每个Telemetry数据日志由一组单独的Telemetry数据块(Block)组成,每个Telemetry数据块大小为512字节,Telemetry数据以Telemetry数据块为单位返回(必须是512Bytes 的整数倍)。Block 0是日志Header部分。NVMe Spec 定义了标准Telemetry Header 信息(Byte#0~511,Host-Initiated Telemetry日志和Controller-Initiated Telemetry 日志的数据结构类似,如下图为Telemetry: Host-Initiated log 数据结构)。其中384:511 Reason Identifier这部分属于厂商自定义字段,不同方式触发的Controller-Initiated日志该部分结构可能存在差异。
Telemetry日志数据块返回必须是512Bytes 的整数倍:

每个Telemetry数据日志被划分为三个Telemetry数据区(即Area 1、Area 2和Area 3,后者均包含前者)。

  • Data Area 1:第一阶段,确定存在问题,通过收集最小的数据集来确定问题与其他问题的区别。
  • Data Area 2:第二阶段,收集并分析更深入的中等量有效数据集,以确定问题的来源。
  • Data Area 3:第三阶段,可用于收集最大和最完整的数据集,以诊断问题。

所有Telemetry数据区从Telemetry Area1开始,通过Byte 383:Telemetry Controller-Initiated Data Generation Number判断数据是否已经读完。

以下是NVMe Spec中给出的Host-Initiated Telemetry Log实例,Controller-Initiated Telemetry log类似。

  • 当没有收集到telemetry log信息时
    – Telemetry Host-Initiated Data Area 1 Last Block = 0
    – Telemetry Host-Initiated Data Area 2 Last Block = 0
    – Telemetry Host-Initiated Data Area 3 Last Block = 0
  • 当3个Area都存在信息时(以下数字仅为示例,请以实际情况为准)
    – Telemetry Host-Initiated Data Area 1 Last Block = 65
    – Telemetry Host-Initiated Data Area 2 Last Block = 1000
    – Telemetry Host-Initiated Data Area 3 Last Block = 30000
  • 当只有Area 2存在信息时(以下数字仅为示例,请以实际情况为准)
    – Telemetry Host-Initiated Data Area 1 Last Block = 0
    – Telemetry Host-Initiated Data Area 2 Last Block = 1000
    – Telemetry Host-Initiated Data Area 3 Last Block = 1000

Host/Controller-Initiated Telemetry触发条件差异

Host-Initiated和Controller-Initiated的数据的准备、收集和提交等方面类似,主要的区别在于收集的触发方式,Controller-Initiated Telemetry Log会在出现坏块、PCIe超时等SSD厂商自定义场景下触发。

Telemetry的操作流程一般为:
1) 主机在Identify Controller data structure 中识别控制器对Telemetry日志的支持;

2) 主机准备一个区域,以便在需要时存储Telemetry数据;
3) 要接收Controller-Initiated的Telemetry数据可用的通知,主机使用异步事件配置功能启用Telemetry日志通知;

4) 如果主机决定收集Host-Initiated的Telemetry数据或控制器信号表明Controller-Initiated的Telemetry数据可用

  • a. 主机从Host-Initiated的日志或Controller-Initiated的日志中读取Telemetry数据区(Telemetry Data Area)的相应块。如果可能,主机应该收集Telemetry数据区1、2和3。主机以512字节的Telemetry数据块单元读取日志。作为对Controller-Initiated的日志的最后一次读取的一部分,主机将异步保持事件RAE(Retain Asynchronous Event)位清除为0;
  • b. 如果是Controller-Initiated的日志,主机将重新读取日志页的头,并确保读取的controller-initiated Data Generation Number与读取的原始值匹配。如果这个值不匹配,则获取的数据不完整,需要重新继续读取;
  • c. 当所有Telemetry数据保存完毕后,应将数据转发给SSD厂商

NVMe-CLI Memblaze自定义一键化收集

开源CLI工具支持Telemetry log收集,收集到的telemetry日志Hearder部分可以解析,数据日志内容都进行加密,需要返回Memblaze进行解析,以nvme-cli v1.12为例:

示例1:收集一条host-initiated的telemetry-log。

# nvme telemetry-log /dev/nvme0 -o host_tel.log -g 1

示例2:收集一条controller-initiated的telemetry-log(如需获取全部,需要执行多次)。

# nvme telemetry-log /dev/nvme0 -o controller_tel.log -c

真实场景有可能存了多条telemetry日志,Memblaze基于nvme-cli 提供自动化收集工具,可以一次性把所以telemetry 日志全部收集。

OCP Spec 2.0 关于Telemetry 延展

OCP(Open Compute Project) Datacenter NVMe® SSD Specification是Facebook和Microsoft主导制定,来自Hyperscale业务商对SSD的需求定义,协议到2021年演进到2.0版本。

OCP 2.0协议中新增基于 PCIe VDM 实现的NVMe-MI带外管理支持Telemetry日志收集,这也可能是国内业务厂商未来的潜在需求。

参考文献:

  • NVM ExpressTM Base Specification NVM Express Revision 1.4
  • OCP Datacenter NVMe® SSD Specification Version 2.0

Telemetry 标准日志接口如何提升运维效率?相关推荐

  1. 天眼AIOps—AI提升运维效率

    1.系统简介 AI结合大数据的智能运维现已成为运维领域的焦点及未来发展趋势.天眼大数据AIOps平台致力于引入成熟的AI算法.大数据流处理技术及成熟的开源组件,打造智能运维平台.该平台致力于改变依赖专 ...

  2. 运维工程师:如何利用AR技术减少舟车劳顿提升运维效率?

    一名资深的运维工程师的特征是怎样的?身着衬衫或Polo衫,背负能放进一台笔记本电脑的双肩包,大概率戴着眼镜且一脸疲惫,但敲打代码排除故障时格外认真.此外他们一定拥有丰富的差旅经验,并且大概率拥有各家航 ...

  3. 联想服务器销售公司,安徽联想服务器硬盘_提升运维效率

    强劲推荐:加速的步进集成镜像,asp技术,玩家学习使用(参***:电脑.鼠标.车标等).这次的四川联想服务器硬盘体系是属于hd7+以上的型号,也是规模比较大的这些全世界规模***大的三星体系,专业支持 ...

  4. 想提高运维效率,那就把MySQL数据库部署到Kubernetes 集群中

    摘要:Kubernetes 很多看起来比较"繁琐"的设计的主要目的,都是希望为开发者提供更多的"可扩展性",给使用者带来更多的"稳定性"和& ...

  5. 如何提高运维团队的运维效率?

    如何运行一个庞杂的机房,进行无数的主动和被动的操作,同时避免错误导致的数据中心故障? 1.以终为始 以终为始是一种以结果为导向的思维方式,提示人们在做事情前要先明确做事情的最终目的,也就是" ...

  6. WOT演讲回顾——海量日志分析与智能运维

    以下内容根据日志易创始人 & CEO 陈军在 WOT 全球人工智能技术峰会上的演讲整理而成,全文大约7000字,阅读时长10分钟. 大家好,今天我演讲的主题是<海量日志分析与智能运维&g ...

  7. 运维技能定级标准第4篇——关于运维工程师岗位的自动化运维与运维开发技能级别设计

    运维工程师岗位工作技能的评定类别(5)和(6) 5.自动化运维技术 级别0,什么都不懂 级别1,了解ansible.saltstack.puppet等主流的自动化运维管理技术工具,掌握公司主要使用的一 ...

  8. 多功能自动化智能运维平台,提升集群的全自动运维效率

    一.开源项目简介 致力于打造一个集主机管理.配置部署.监控报警.异常诊断.安全审计等一系列功能的自动化运维平台. 探索创新的sysAK.ossre诊断工具及高效的LCC(Libbpf Compiler ...

  9. 《2023金融科技趋势研究报告》显示dbPaaS管理平台将成为提升数据库应用、运维效率的关键...

    2023年1月,恒生电子研究院发布了<2023金融科技趋势研究报告>,其中明确指出dbPaaS管理平台将成为提升数据库应用.运维效率的关键.dbPaaS趋势的背景是,随着信创进程的推进以及 ...

  10. 发布国内首个无服务器容器服务,运维效率从未如此高效

    近年来,随着越来越多的企业基于微服务架构构建自身核心业务平台后,微服务已获得越来越多技术人员的肯定,同时,微服务也承载着企业数字化转型的重任.但微服务架构的落地给企业的运维团队带来了不少的挑战,原有的 ...

最新文章

  1. isMobile 一个简单的JS库,用来检测移动设备
  2. python生词本的生词_【Anki小工具】有道生词本转Anki 1.0
  3. 【Hibernate】Hibernate系列6之HQL查询
  4. 学习笔记~~~~~Set接口实现
  5. C语言学习及应用笔记之四:C语言volatile关键字及其使用
  6. 开发者解读:为什么蚂蚁要用融合计算这种新计算模式?
  7. ArcGIS API for JavaScript:Layer之间那点儿事
  8. hdu 2896 AC自动机
  9. python日常能做什么-Python除了做AI、还能干啥?
  10. 牛客小白月赛3 I 排名【结构体排序/较复杂/细节】
  11. matlab的做潮流计算,Matlab实现潮流计算程序
  12. 使用Photoshop去掉图片上的文字的几种方法
  13. 算法—— LeetCode 第一遍
  14. 正态分布(用python画出相应的图)
  15. 旅游攻略app开发定制
  16. Autoware介绍
  17. 计算机辅助骨科手术的常用简称,大连理工大学创客:计算机辅助骨科手术提高接骨精准度...
  18. 卡巴斯基官方论坛送一年免费升级
  19. 解决:微信小程序按钮重复点击
  20. Redis使用验证码

热门文章

  1. 关于mysql的时区(下):如何设置mysql的时区
  2. leach c matlab,其实是MATLAB的LEACH协议
  3. python读文件-read_csv()-常用参数
  4. 智源首席科学家孙茂松当选欧洲科学院外籍院士
  5. 内容公链Contentos首席科学家不建议刚毕业的年轻人直接从事区块链开发
  6. SD-WAN,边缘网络和安全性大热
  7. HtmlHelp调用chm帮助文档使用
  8. opensuse15.0测试使用snapper
  9. 球相交的表面积并/体积并
  10. rasa_nlu踩坑经历