-
NVDIMM
目录
NVDIMM由
BBU(Battery Backed Up)
DIMM演变而来。BBU采用含有重金属的
后备电池以维持普通挥发性内存中的内容几小时之久,但不符合绿色能源的要求。由
超级电容作为动力源的NVDIMM应运而生。并且NVDIMM使用非挥发性的flash存储介质来保存数据,数据能够保存的时间更长。
数据保护
计算机系统的计算结果和服务信息皆临时保存在内存中,这些数据在系统掉电后将丢失,甚至能引起整个系统的崩溃。NVDIMM可以解决系统异常掉电情况下,内存数据的保存工作,并且能够在系统恢复正常运行后,继续之前的工作。
全系统保护
[1]
是NVDIMM的一个典型应用场景。在系统异常掉电后,该系统能在短时间内将整个计算机系统当前的工作状态(包括CPU,桥接芯片,网卡等硬件设备以及系统中所有的进程)保存至NVDIMM。在系统重新上电运行后,立即恢复至之前的运行状态,仿佛系统只是“打了个盹”。
在
云技术发展日新月异的今天,虚拟化技术作为云的核心技术,得到了广泛的关注与创新。与此同时,作为云服务运行的底层载体,
虚拟机的
数据安全与完整是目前急需解决的重要课题。虚拟机实质为软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,也就意味着虚拟机的所有运行状态都在内存中。NVDIMM可以利用虚拟机本身的快照功能,在系统异常情况下,迅速保护存储在内存中的临时快照,达到保护整个虚拟机的目的。
磁盘缓存
磁盘缓存是为了减少
CPU透过
I/O读写磁盘的次数,提升磁盘I/O的效率,用一部分内存来储存访问较频繁的磁盘内容。磁盘缓存的存在对于数据访问的一致性带来了问题,尤其是采用write-back策略的写缓存导致异常掉电情况下内存中更新的数据未能及时写入磁盘而丢失。NVDIMM是写缓存的最佳存储介质。它的随机访问性质能让CPU和操作系统直接访问管理,并且非易失性保证数据在异常掉电情况下得以保护。
[2]
目前,针对
RAID控制器的写缓存NVDIMM已逐渐被接受。对于带有板级
RAID控制芯片或者采用
软件RAID方案的计算机,缺乏写缓存,NVDIMM可以直接用做系统主存,配合操作系统,完成写缓存任务。还有一类PCIE接口的
RAID控制卡,它们采用普通的带电池后备的
内存条作为缓存使用,NVDIMM可以直接替代这些内存条。
存储链
如图所示为一典型的存储链实例。IO性能要求较高的数据被存储在SSD上,而要求较低的数据放入各种类型的磁盘阵列以及
NAS。NVDIMM可作为存储链的最前端,它的速度比SSD更快,并且能够提供直接随机访问的特性。CPU的内存栅障与刷新cache指令能够保证NVDIMM数据的原子写与一致性。所以,NVDIMM非常适合用作文件系统或者
数据库元数据与日志的存储介质。
SNIA NVM Express
SNIA在2013年底相继发表的NVM(Non-volatile memory)的硬件接口规范和编程模型规范。定义了NVM的范围为PCIE接口的
flash存储器,控制卡以及NVDIMM,PCM等可以随机访问的非易失性存储器。SNIA 提出了block volume和persistent memory两种模型,并给出了每种模型能够处理的命令集以及能完成的功能。Block volume即传统的块设备模型,以块为单位进行数据传输,采用与现有的ATA,SCSI,FC等协议具有相同的编程方式,比如PCIE SSD,PCIE RAID controller就是此类模型。Persistent memory是具有直接随机访问与非易失性双重特性的编程模型,可以采用传统
虚拟内存管理接口,为文件系统或者数据库提供新的存储行为。NVDIMM即采用此类编程模型,同样PCIE卡如果将其存储空间映射至PCIE存储域,并且能够屏蔽底层的flash特性,亦能采用此类模型。
Linux kernel
操作系统方面,Ric Wheeler 在2013 Linux Foundation Collaboration Summit提出了在Linux系统中支持NVM的想法,并且SNIA组织也已经给出了NVMe设备的
Linux驱动。在Ric的讨论中,在兼容老式编程模型的API的基础上,定义新的适合NVM设备的API,让文件系统和数据库都能更好地利用NVM的特性。
CPU
Intel最新的家用机芯片
Haswell-E CPU开始支持288pin的
DDR4
内存条。在JEDEC 最新的DDR4规范中
[3]
,有4个pin为NVDIMM的电源与
控制信号。可见
主流CPU与主板已经开始将NVDIMM加入商业化的存储系统。
异步DRAM自刷新(ADR)技术是
Intel在
凌动S12X9家族处理器上推出的新技术,可保证在异常掉电时,CPU冲刷cache,写回cache的
脏数据,然后将DRAM设置进入自刷新状态。NVDIMM就是在DRAM处于自刷新状态时将控制权由CPU移交给NVDIMM本身,ADR技术就是为NVDIMM量身定制。另外,ADR技术能够有选择的在计算机热启动时,不对特定通道的DRAM进行重新初始化,从而保留DRAM中的数据。包括MacroSAN、Dahua、Accusys、Qsan和Qnap等数据中心制造商已经宣布开始支持S12X9处理器家族。
-
参考资料