NVDIMM原理与应用之四:NVDIMM的数据恢复、使用和监控

简介:


NVDIMM原理与应用之四:NVDIMM的数据恢复、使用和监控

  1. NVDIMM的主要结构

nvdimm的内部集成了SDRM、NAND控制器和Flash,还包括兼容DDR规范的I2c接口,以某款常见的NVDIMM为例,主要构造如下图所示:

wKiom1hsTmmwavHZAAEu9HbL0-I290.png

2. NVDIMM datarecovery

NVDIMM掉电保存和恢复数据的功能,需要依赖于NVDIMM超级电容、CPU芯片、主板电路和BIOS的协同工作。系统突然掉电或者重启的时候,主板上专门的电路设计保证触发ADR,此时在nvdimm超级电容提供电力,保证NVDIMM SDRAM上的数据能够即使写到nvdimm的NAND Flash上去。不同的主板可能会实现不同的触发ADR的硬件电路。比如笔者手头上的某款服务器,下面的操作会触发ADR:


CPU Reset
BMC initiated power cycle (confirm)
AC power lost (confirm)
0xCF9 reboot (confirm)
CPU thermal trip assertion
CAT/IERR assertion

ipmitool chassis power cycle (confirm)


这里特别需要引起重视的是,如果上面的操作和下面不能触发ADR的操作混淆或者相邻执行,就不会触发ADR,进而可能导致数据丢失:

ipmitool chassis power reset (confirm)

BMC initiated reset (confirm)


而在系统再次启动的过程中, 如果flash里有完整的内存映像,硬件会自动把它写到nvdimm SDRAM。



3. NVDIMM usage


不同的NVDIMM厂商会提供不同的SDK,开发者需要参考SDK里提供的文档、示例代码和乃至驱动源代码,根据实际要应用的场景,选择合适的驱动类型、Cache模式和API和来实现自己的功能。以笔者手头上的NVDIMM为例,需要按照下面的步骤设置和使用nvdimm:

Once Restore is complete and the system boots up to OS; here are the things to do:


  • Check valid image Restored status


  • Check all the conditions as mentioned in following table


  • ARM


  • ClearSDV


Ready for SAVE


4. NVDIMM RAS monitor

实际使用NVDIMM的过程中,如果NVDIMM持续处于高温的状态,会急剧缩短它的使用寿命;此外,nvdimm上的Flash也有一定的擦写次数的限制。而且,如果nvdimm的超级电容里电量不够一次SAVE操作,也会发生数据丢失的情况。因此,为了保证nvdimm的可靠性、可用性,及时预报掉电或者重启后不能恢复数据的情况,需要监控一些nvdimm RAS相关的状态,包括电容温度、电量、flash老化率等等。下面是针对笔者的某款NVDIMM的监控列表,仅供参考:

Type

Must check for saving data

and/or restoring data?

Valid Rang

Invalid Rang

Event Severity

Poll interval

DIMM connected

Must check

Connected

Not

Connected

High

Once

SuperCap connected

Must check

Connected

Not

Connected

High

Once

Charge Level

Must check for saving data

ARX_CHARGE

Others

High

12h~24h

Flash Life Level

Must check for saving data

>=10

<10

High

12h~24h

Capacitor Healthy

Better to check

healthy

EOL

?

12h~24h

Temperature

Better to check

0~65C

>65

Normal

12h~24h

Armed Status

Must check for saving data

Armed

Not Armed

High

once

Valid Image Restored Status

Must check after recovering data

Valid

Valid

High

Once per

recover

Valid Image available Status

Not need check

-

-

-

Never




5. NVDIMM内存使用方式


  • 支持nvdimm的bios会在系统内存初始化的时候探测到nvdimm并分配特殊的类型符;


  • nvdimm驱动实现nvdimm逻辑设备open/close/ioctl/mmap/等操作,其中mmap操作实现nvdimm内核空间到用户空间的映射


  • nvdimm SDK提供API向调用者提供nvdimm映射到用户态空间后的起始地址和长度;



















本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/1888738  ,如需转载请自行联系原作者






相关文章
|
2月前
|
存储 缓存 算法
【自己动手画CPU】存储系统设计
博文“【自己动手画CPU】存储系统设计”探讨了在自制 CPU 中存储系统的设计。存储系统是计算机中至关重要的组成部分,负责存储和检索数据。文章介绍了在 DIY CPU 中实现存储系统的关键考虑因素,包括存储器的类型、存储器与 CPU 的连接方式以及数据存取的速度和效率。通过深入探讨存储系统的设计原理和实现方式,读者可以更好地理解计算机内部结构,并且为自己动手设计和构建 CPU 提供了有益的指导和启发。
97 0
【自己动手画CPU】存储系统设计
|
缓存 Java Unix
一文详解 NanoHttpd 微型服务器原理
`NanoHttpd`仅有一个Java文件的微型Http服务器实现。其方便嵌入式设备(例如:Android设备)中启动一个本地服务器,接收客户端本地部分请求;应用场景也非常广泛,例如:本地代理方式播放m3u8视频、本地代理方式加载一些加密秘钥等。
888 0
|
3月前
|
存储 缓存 Linux
内存系列学习(六):ARM处理器存储访问一致性问题
内存系列学习(六):ARM处理器存储访问一致性问题
63 0
|
5月前
|
存储 固态存储 Linux
开启全新存储时代:SPDK文件系统项目实战指南
开启全新存储时代:SPDK文件系统项目实战指南
|
固态存储 内存技术
SSD可靠性分析前传之NAND闪存可靠性概览
按照剧情发展的规律,在进入正片之前都会有前传来交代事件的背景,所以在介绍SSD可靠性之前,咱们也先来个前传哈。
|
存储 缓存 NoSQL
系统性能提升利刃 | 缓存技术使用的实践与思考
导读 按照现在流行的互联网分层架构模型,最简单的架构当属Web响应层+DB存储层的架构。从最开始的单机混合部署Web和DB,到后来将二者拆分到不同物理机以避免共享机器硬件带来的性能瓶颈,再随着流量的增长,Web应用变为集群部署模式,而DB则衍生出主从机来保证高可用,同时便于实现读写分离。
|
存储 固态存储 大数据
【阿里云总监课】存储系统设计——NVMe SSD性能影响因素一探究竟
NVMe SSD的性能时常捉摸不定,为此我们需要打开SSD的神秘盒子,从各个视角分析SSD性能影响因素,并思考从存储软件的角度如何最优化使用NVMe SSD,推进数据中心闪存化进程。本文从NVMe SSD的性能影响因素进行分析,并给出存储系统设计方面的一些思考。
4493 0
|
Linux 关系型数据库 Oracle