OCP NVME SSD规范解读-13.Self-test自检要求

图片

4.10节Device Self-test Requirements详细描述了数据中心NVMe SSD自检的要求,这一部分规范了设备自身进行各种健康检查和故障检测的过程。自检对于确保SSD的正常运行和提前预防潜在故障至关重要。

图片

在进行设备自检时,设备应当确保不对用户数据造成破坏,即除了读取用户数据外,自检过程不会导致数据丢失或损坏。例如,即使在进行读取操作时产生轻微的读取干扰,只要这种影响极小,就不被视为破坏性行为。

此外,针对设备自检(Device Self-test)的重新执行情况,规范做出了特别说明。例如,在连续两次执行自我测试时,如果第二次测试发生在第一次成功完成后不久,则第二次的Media Check Extended应当检查不同的逻辑块地址(LBAs),并在必要时进行循环扫描,以覆盖尽可能多的存储区域,避免每次测试重复同一部分而导致某些潜在问题遗漏。

具体来说,如果一个设备拥有10000h分配的LBAs(即总共有10000个逻辑块地址),但在指定的设备自检完成时间内只能扫描到其中的6000h(即6000个逻辑块地址),那么设备自检的执行将采取分批扫描的方式。

  • 首次设备自我测试运行时,将扫描从LBAs 0h到5FFFh的部分;

  • 紧接着下一次运行时,将接着扫描从LBAs 6000h到BFFFh的部分;

  • 随后的下一轮测试将开始于C000h的LBAs,并在达到地址上限后,循环回到0h继续扫描直到1FFFh,然后依次类推。

这样做的目的在于,即使在有限的测试时间内无法一次性扫描完全部的LBAs,也能确保每次执行都能检查到新的、尚未被上次测试覆盖到的存储区域,从而逐步全面地检测存储设备的健康状况。通过这种循环交错的扫描方式,设备自我测试能够实现对存储介质的有效分段式检查,有利于早期发现潜在故障,确保数据的安全性和存储系统的稳定性。

对于SMART/Health Information的检查,规定在自检中,如遇到温度阈值超标的情况,不应导致测试失败,因为这通常是风扇或系统故障引起的,而非SSD本身的问题。在自检操作中,将忽略SMART/Health Information日志页面中Critical Warning bit 1(温度警告位)的影响。

图片

在进行扩展设备自检时,设备制造商需要提供一个最小的逻辑块地址(LBA)数量要求,以便主机写入足够的数据,以促使设备自检操作能读取到所有物理非易失性存储单元(如NAND闪存芯片)。

最后,针对特定的设备自自检代码(Device Self-test Code, STC),规范规定了设备在给定时间内至少要完成哪些测试段。例如,对于STC为1h或Eh的设备自检操作,至少需要包括segments 1到3和8的测试,并尽可能在指定完成时间内完成segments 4到7的测试。

图片

当设备正在进行自检的过程中,如果由于同时存在的主机IO活动等原因导致未能在指定的完成时间内完成整个自检操作,设备不应因此报错或终止测试。相反,设备应尽可能在分配的完成时间内完成尽可能多的自检部分(device self-test segments)。

这意味着在并发I/O活动或其他资源竞争条件下,即使无法在预定的时间内彻底完成所有的测试内容,SSD也要尽力去执行尽可能多的测试环节,而不是立即放弃测试。这样的设计确保了在实际运行环境中的自检能够具有更强的鲁棒性和实用性。

  • 鲁棒性指的是一个系统在面对内部错误、外部干扰、边界条件、异常输入或不利环境条件时,仍然能够保持稳定运行并维持预期功能的能力。在数据中心NVMe SSD的语境下,鲁棒性表现为即便在复杂的、高负载的服务器环境中(如存在大量并发的I/O活动),设备的自检功能也能够在各种不利条件下坚持执行,并不会因为未能在规定的完成时间内完成全部测试就失效或崩溃。这种设计确保了SSD在实际运用中能够应对不可预测的挑战,保持稳定性和可靠性。

  • 实用性则反映了设备或系统在现实场景中能够有效解决问题和满足用户需求的程度。对于数据中心NVMe SSD的自检功能来说,实用性强意味着即使在理想测试条件不具备的情况下(如受到并发I/O活动影响),设备仍能够部分执行自我测试,尽可能多地获取到有价值的信息。这样一来,即便在繁忙的生产环境中,系统管理员也可以通过执行自我测试得到关于SSD健康状况的部分反馈,从而做出及时的决策和维护措施。

结合这两点来看,数据中心NVMe SSD的自检功能设计既要确保在复杂、动态的IT环境中保持稳健运行,不受临时条件约束,又要能够提供实际可用的、有助于系统运维的测试结果。

小编每日撰文不易,如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 如何突破SSD容量提升的瓶颈?

  • 固态存储是未来|浅析SSD架构的演进与创新技术

  • 论文解读:NAND闪存中读电压和LDPC纠错码的高效设计

  • 华为新发布磁电存储“王炸”,到底是什么?

  • 关于SSD LDPC纠错能力的基础探究

  • 存储系统如何规避数据静默错误?

  • PCIe P2P DMA全景解读

  • 深度解读NVMe计算存储协议

  • 对于超低延迟SSD,IO调度器已经过时了吗?

  • 浅析CXL P2P DMA加速数据传输的原理

  • HDD回暖于2024,与SSD决战于2028

  • SSD固态硬盘的黄金原则:抱最高的希望,做最坏的打算

  • PCIe 6.0生态业内进展分析总结

  • 详细解读QLC SSD无效编程问题

  • NVMe SSD IO压力导致宕机案例解读

  • 浅析PCIe 6.0功能更新与实现的挑战

  • 过度加大SSD内部并发何尝不是一种伤害

  • FIO测试参数与linux内核IO栈的关联分析

  • PCIe surprise down异常与DPC功能分析

  • 过度加大SSD内部并发何尝不是一种伤害

  • NVMe over CXL技术如何加速Host与SSD数据传输?

  • 为什么QLC NAND才是ZNS SSD最大的赢家?

  • SSD在AI发展中的关键作用:从高速缓存到数据湖

  • 浅析不同NAND架构的差异与影响

  • SSD基础架构与NAND IO并发问题探讨

  • 字节跳动ZNS SSD应用案例解析

  • SSD数据在写入NAND之前为何要随机化?

  • 深度剖析:DMA对PCIe数据传输性能的影响

  • NAND Vpass对读干扰和IO性能有什么影响?

  • HDD与QLC SSD深度对比:功耗与存储密度的终极较量

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 如何通过优化Read-Retry机制降低SSD读延迟?

  • 关于硬盘质量大数据分析的思考

  • 存储系统性能优化中IOMMU的作用是什么?

  • 全景解析SSD IO QoS性能优化

  • NVMe IO数据传输如何选择PRP or SGL?

  • 浅析nvme原子写的应用场景

  • 多维度深入剖析QLC SSD硬件延迟的来源

  • 浅析PCIe链路LTSSM状态机

  • 浅析Relaxed Ordering对PCIe系统稳定性的影响

  • 实战篇|浅析MPS对PCIe系统稳定性的影响

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

图片

如果您也想针对存储行业分享自己的想法和经验,诚挚欢迎您的大作。
投稿邮箱:Memory_logger@163.com (投稿就有惊喜哦~)

《存储随笔》自媒体矩阵

图片

更多存储随笔科普视频讲解,请移步B站账号

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/469725.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity类银河恶魔城学习记录11-2 p104 Inventoty源代码

此章节相对较难理解,有时间单独出一章讲一下 Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili InventoryItem.cs…

三维指静脉生物识别成像设备设计和多视图验证研究

文章目录 三维指静脉生物识别成像设备设计和多视图验证研究总结摘要介绍多视角指静脉识别模型结构内容特征编码Transformer(CFET)主导特征选择模块(DFSM) 实验和结果数据集实施细节视角研究池化层的作用消融实验和SOTA方法比较 论文: Study of 3D Finger Vein Biometrics on I…

openfeign使用fallback指定降级方法无法执行问题

直接点上代码: package com.fuXiApi.api;import com.common.util.MyResult; import com.fuXiApi.api.fallback.UserClientFallback; import com.fuXiApi.dto.UserDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bi…

【Python】使用selenium对Poe批量模拟注册脚本

配置好接码api即可实现自动化注册登录试用一体。 运行后会注册账号并绑定邮箱与手机号进行登录试用。 测试结果30秒一个号 import re import time import requests from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.options imp…

#Ubuntu(修改root信息)

(一)发行版:Ubuntu16.04.7 (二)记录: (1)命令行终端: a.右键,open terminal b.快捷键 ctrlaltt (2)进行root修改 sudo passwd &a…

3月19日做题

[NPUCTF2020]验证🐎 if (first && second && first.length second.length && first!second && md5(firstkeys[0]) md5(secondkeys[0]))用数组绕过first1&second[1] 这里正则规律过滤位(Math.) (?:Math(?:\.\w)?) : 匹配 …

PX4|基于FAST-LIO mid360的无人机室内自主定位及定点悬停

目录 前言环境配置运行fast-lio修改px4位置信息融合方式编写位置坐标转换及传输节点 前言 在配置mid360运行环境后,可使用mid360进行室内的精准定位。 环境配置 在livox_ros_driver2的上级目录src下保存fast-lio的工程 git clone https://github.com/hku-mars/F…

在Ubuntu20.04(原为cuda12.0, gcc9.几版本和g++9.几版本)下先安装cuda9.0后再配置gcc-5环境

因为自己对Linux相关操作不是很熟悉,所以因为之前的代码报错之后决定要安cuda9.0,于是先安装了cuda9.0。里面用到的一些链接,链接文件夹时直接去copy它的路径,就不那么容易错了。 今天运行程序之后发现gcc环境不太匹配cuda9.0&am…

2024/03/19(网络编程·day5)

一、思维导图 二、selec函数实现TCP并发服务器 #include<myhead.h>#define SER_PORT 8888 //服务器端口号 #define SER_IP "192.168.117.116" //服务器IP int main(int argc, const char *argv[]) {//1、创建一个套接字int sfd -1;sfd socket(AF_INET,SOC…

Vue技能树总结01

Vue vs React 相似之处: 它们都有使用 Virtual DOM&#xff1b;提供了响应式&#xff08;Reactive&#xff09;和组件化&#xff08;Composable&#xff09;的视图组件。将注意力集中保持在核心库&#xff0c;而将其他功能如路由和全局状态管理交给相关的库。React 比 Vue 有更…

备战蓝桥杯---牛客寒假训练营2VP

题挺好的&#xff0c;收获了许多 1.暴力枚举&#xff08;许多巧妙地处理细节方法&#xff09; n是1--9,于是我们可以直接暴力&#xff0c;对于1注意特判开头0但N&#xff01;1&#xff0c;对于情报4&#xff0c;我们可以把a,b,c,d的所有取值枚举一遍&#xff0c;那么如何判断有…

关系数据库:关系数据结构基础与概念解析

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

微信小程序开发学习笔记——4.4常见的导航栏api接口

>>跟着b站up主“咸虾米_”学习微信小程序开发中&#xff0c;把学习记录存到这方便后续查找。 课程连接&#xff1a;https://www.bilibili.com/video/BV19G4y1K74d?p29&vd_source9b149469177ab5fdc47515e14cf3cf74 一、属性 界面 / 导航栏 / wx.showNavigationBar…

使用Java JDBC连接数据库

在Java应用程序中&#xff0c;与数据库交互是一个常见的任务。Java数据库连接&#xff08;JDBC&#xff09;是一种用于在Java应用程序和数据库之间建立连接并执行SQL查询的标准API。通过JDBC&#xff0c;您可以轻松地执行各种数据库操作&#xff0c;如插入、更新、删除和查询数…

python二级--jieba库知识点简明整理

前言 本文是我学习过程的总结。 &#xff08;针对的是二级对于jieba库的考点&#xff09; jieba简介 用于把中文长句分割成中文词组。 jieba三模式 精确模式&#xff1a;把文本精确的切分开&#xff0c;不存在冗余单词 全模式&#xff1a;把文本中所有可能的词语都扫描出…

CTFHUB-web-信息泄漏

题目所在位置&#xff1a;技能树->web->信息泄漏 目录遍历 打开题目&#xff0c;我们进入的是这个页面 翻译过来就是 得到的信息就是&#xff1a;flag要在这些目录里面寻找&#xff0c;我们直接一个一个点开查看就行 发现得到一个flag.txt&#xff0c;点击打开得到flag …

堆排序(数据结构)

本期讲解堆排序的实现 —————————————————————— 1. 堆排序 堆排序即利用堆的思想来进行排序&#xff0c;总共分为两个步骤&#xff1a; 1. 建堆 • 升序&#xff1a;建大堆 • 降序&#xff1a;建小堆 2. 利用堆删除思想来进行排序. 建堆和堆删…

自动驾驶决策 - 规划 - 控制 (持续更新!!!)

总目录 Frenet与Cartesian坐标系 Apollo基础 - Frenet坐标系 车辆模型 车辆运动学和动力学模型 控制算法 PID控制器轨迹跟随实现 Pure Pursuit控制器路径跟随 路径跟踪算法Stanley 实现 c 无人驾驶LQR控制算法 c 实现 MPC自动驾驶横向控制算法实现 c 双环PID控制详细讲解 …

鸿蒙开发实战:【网络管理-Socket连接】

介绍 本示例主要演示了Socket在网络通信方面的应用&#xff0c;展示了Socket在两端设备的连接验证、聊天通信方面的应用。 效果预览 使用说明 1.打开应用&#xff0c;点击用户文本框选择要登录的用户&#xff0c;并输入另一个设备的IP地址&#xff0c;点击确定按钮进入已登录…

JavaScript高级系列(三) - JavaScript的运行过程

一. 全局代码的执行过程 1.1. ECMA的版本说明 在ECMA早期的版本&#xff08;ECMAScript3&#xff09;&#xff0c;代码的执行流程的术语和ECMAScript5以及之后的术语会有所区别&#xff1a; 目前网上大多数流行的说法都是基于ECMAScript3版本的解析&#xff0c; 并且在面试问…