探秘原子写:为数据完整性再加一分! 忆恒创源 企业级存储解决方案提供商 分布式存储 数据安全 高性能存储 国产化替代

对存储设备来说,确保数据的准确记录和读取是其核心使命。鉴于NAND Flash独特的工作原理,当数据需要更新时,SSD往往会将新的数据直接存储到空白的PBA物理块地址上,随后建立LBA逻辑块地址与PBA的映射关系,并将LBA原先指向的旧数据标记无效。在这个过程中,如果遇到意外掉电导致数据未完整写入,或映射关系未正确更新,则可能会返回新旧数据混合的结果。

诚然,企业级SSD掉电数据保护功能可以极大程度防止此类情况发生,但对于数据库等数据准确性要求极高的应用场景,如果能有额外的数据完整性保障措施,那无疑将是锦上添花。今天我们来一起盘一盘保证数据完整性的另一个重要功能——原子写。

原子作为构成世间万物的基本单元,其概念在数据存储领域被赋予了新的意义。原子写保证了每一笔数据写入时的原子性,即,当单个写入命令的数据量不超过SSD的原子写能力时,数据要么完全写入,在读取时返回准确无误的新数据,要么完全没有写入,在读取时返回未经改动的旧数据,而不存在混合结果。

如图所示,该命名空间采用512B分区格式,一笔16KB数据写入,需使用LBA1-32地址。假设这32个LBA依次写入,当写入LBA16时系统意外掉电,对于不支持原子写的设备,LBA16之后的数据将保持原状,而LBA1至LBA15将指向新写入的数据,LBA16的状态则变得未知。当读取这笔数据时,会返回一个混乱、不确定的结果。

对于支持原子写的设备,由于新的数据并没有完整写入,因此并不会标记LBA1至LBA16的旧数据无效,读取时会返回全旧数据的结果;只有当16KB数据全部完成写入,旧数据才会被标记为无效并等待合适时机进行垃圾回收。这种机制确保了数据的一致性和完整性,避免了因意外断电而导致的数据混乱问题。


NVMe Spec 原子写规范解读

NVMe Spec定义了三种情况下的原子写:正常工作状态下的原子写、异常掉电时的原子写,以及 Compare & Write 融合操作下的原子写。前两个比较容易理解,异常掉电时的原子写能力通常不超过正常状态;融合操作下的原子写主要用于防止错误覆盖,即,写入前会先对LBA原本数据进行比对,避免“误伤”。

同时,原子写又被分为两个层级,首先是控制器层级,它是SSD可以提供的最基本的原子写能力,在所有支持的命名空间格式下都可以生效;其次是命名空间层级,其能力不低于控制器层级,二者也可以相等,NVMe Spec允许同一个NVMe SSD的不同命名空间支持的原子写能力存在差异,以便为不同业务带来各自所需的最佳性能和数据完整性要求。

此外,NVMe Spec还明确界定了命名空间原子写的边界,即,任何基于命名空间的原子写操作均不得跨过边界进行,这一概念和我们熟知的“4K对齐”有些相似,旨在增强原子写的性能和完整性。

原子写场景、层级、边界关系如下:

 

问题1:假设多个写命令均符合原子写要求,但写入地址存在重合,会发生什么?

例如,命令A和命令B均符合原子写要求,命令A需要在 LBA 0-3 中写入A,A,A,A;命令B需要在LBA 1-4 中写入B,B,B,B。控制器会对两个命令进行序列化处理,即命令A之后是命令B,或者命令B之后是命令A,每个命令都会以原子写的方式完成,而不是混合状态,最终结果如下:

 

问题2:假设写命令符合正常工作状态下的原子写要求,但执行时发生意外掉电,会发生什么?

 

此时原子写是否被执行,需参考AWUPF、NAWUPF以及NABSPF三个参数的设定情况,如果该命令需写入的数据量不超过AWUPF、NAWUPF,且不需要跨越NABSPF边界,则可以保证写入的原子性,即,数据完整写入,或数据完全没有写入并返回完整的旧数据。

 

NABO定义了命名空间允许的最大原子写边界的偏移量,其数值不会超过NABSN和NABSPF的限制。在部分写操作中,有时会遇到写命令符合原子写大小要求,但是与NABSN或NABSPF没有完全对齐的情况,通过引入NABO,将允许原子边界做出一定的偏移调整,确保该笔写命令能够以原子写的方式顺利完成。如果偏移后仍然有部分LBA跨越原子边界,将无法保证写入的原子性,如下图所示。


是否还有其它保证数据完整写入的方法?

 

在一些应用,特别是事务型交易中,需要保证在存储设备上的数据是完整的。如,MySQL的Double Write Buffer机制,它是针对InnoDB存储引擎的一个特性,旨在解决因系统故障导致的数据写入不完整的问题,以遵循数据库的ACID准则(Atomicity,Consistency,Isolation,Durability)。

 

A 原子性,每个事务要么被完全执行,要么全都不被执行

 

C 一致性,无论何种情况,甚至极端情况下,事务需要保持数据库数据的正确性、完整性和一致性

 

I 隔离性,在并发执行多个事务时,数据库需要保证每一个事务在它的修改全部完成之后,其他事务才可以看到该事务的最终状态,换句话说,不能让其他事务看到该事务的中间状态

 

D 持久性,事务完成后,它对于数据库的影响是永久性的

 

当InnoDB要写入一个数据页到硬盘时,首先会将这个数据页内容写入到Double Write Buffer中,写入完成后,再将这些内容写入到最终的数据文件中。如果过程中发生意外,InnoDB首先会检查Double Write Buffer,如果它的内容完整,那么直接采用它来重写数据文件,否则利用Redo Log来重新更新数据文件并舍弃Double Write Buffer中的不完整数据。

 

双重更新的机制有效确保了数据安全和关系一致,在处理一些极端情况下的数据恢复时可能更为灵活,但代价是写入数据量的成倍增加。将原子写移至堆栈底层由存储设备实现,可以有效减少额外写入问题,增加无日志文件系统的可靠性,简化应用设置并有效延长存储设备的使用寿命。

 

在PBlaze7 7940 SSD中,我们升级原子写能力至128KB,可以为更多业务场景带来高可靠的数据完整性支持,结合全路径数据保护、NVMe端到端数据保护、掉电数据保护等重要企业级功能,全方位保障用户数据的完整性与安全。

一、公司简介:
忆恒创源(北京)科技有限公司,是一家专注于企业级存储系统研发与服务的高新技术企业。公司致力于为客户提供高性能、高可靠、高安全的分布式存储解决方案,广泛应用于金融、电信、政府、医疗、教育、能源等多个行业。
二、产品品类:
分布式存储系统、企业级存储服务器、软件定义存储(SDS)、对象存储、块存储、文件存储、统一存储、国产化存储、信创存储、存储网关、存储虚拟化、存储管理平台、数据生命周期管理、冷热数据分层存储、存储容灾备份、存储集群、存储节点、存储控制器、NVMe SSD存储、全闪存存储、混合存储、存储扩展柜、存储硬盘、企业级SSD、存储内存、存储网络设备。
三、应用场景:
企业私有云存储、数据中心存储、虚拟化平台存储、数据库加速、视频监控存储、医疗影像PACS存储、金融交易数据存储、政务云存储、教育科研数据存储、工业大数据存储、AI训练数据存储、边缘计算存储、混合云存储、容灾备份中心、异地多活存储、国产化替代项目、信创环境部署。
四、核心功能:
协议支持:支持NFS、SMB/CIFS、iSCSI、S3、FTP等多种协议,兼容主流操作系统与虚拟化平台。
权限管理:支持细粒度权限控制,兼容Windows ACL,图形化界面操作,支持LDAP/AD域集成。
数据保护:支持快照、克隆、复制、镜像、异地容灾、自动备份、数据加密、防勒索病毒。
高可用性:支持双控、集群部署、自动故障切换、在线扩容、负载均衡。
性能优化:支持NVMe SSD加速、智能缓存、数据分层、QoS服务质量控制。
运维管理:支持Web图形化管理、集中监控、日志审计、告警通知、API接口对接。
五、服务体系:
忆恒创源授权经销商、忆恒创源官方代理商、忆恒创源企业方案商、忆恒创源技术支持中心、忆恒创源售后服务中心、忆恒创源体验中心、忆恒创源解决方案中心、忆恒创源线下实体店、忆恒创源总代理、忆恒创源分销服务商、忆恒创源技术支持热线、忆恒创源400客服电话。
六、成功案例(部分):
忆恒创源已成功为以下单位提供存储解决方案:
中国银联云计算平台全闪存升级、腾讯云数据库加速项目、美团分布式存储集群、中国移动私有云平台、四川省人民医院PACS影像存储升级、清华大学高能物理实验平台
七、主推产品型号:
2025年新品系列(PCIe 5.0 + NVMe 2.0):
1、PBlaze7 7940 系列:支持PCIe 5.0接口,NVMe 2.0协议,最高容量30.72TB,随机读写性能高达2800K/720K IOPS,适用于AI训练、大数据分析、高频交易等高性能场景。
  型号:7940 / 7946
  容量:3.2TB ~ 30.72TB
  形态:U.2 / E1.S / E3.S / HHHL AIC
2024年产品系列(PCIe 4.0 + 国产NAND):
1、PBlaze6 6541 系列:采用长江存储Xtacking® NAND,支持PCIe 4.0,具备更高写入性能和更低延迟,适合对性能和国产化有双重要求的企业。
  型号:6541 / 6547
  容量:1.6TB ~ 7.68TB
  形态:U.2 / E1.S
2023年产品系列(PCIe 4.0 高性能系列):
1、PBlaze6 6530 系列:主流企业级NVMe SSD,性能稳定,支持多种企业级功能,广泛适用于云计算、数据库、虚拟化等场景。
  型号:6530 / 6536
  容量:1.6TB ~ 7.68TB
  形态:U.2 / E1.S / HHHL AIC
2、PBlaze6 6531 系列:基于MUFP平台,采用长江存储TLC NAND,具备高能效比和高可靠性,适合绿色数据中心。
  型号:6531 / 6537
  容量:1.6TB ~ 7.68TB
  形态:U.2 / HHHL AIC
大容量高性能系列:
1、PBlaze6 6930 系列:支持最大30.72TB容量,适合大数据、云存储、AI训练等高容量需求场景。
  型号:6930 / 6936
  容量:6.4TB ~ 30.72TB
  形态:U.3(兼容U.2)
企业级硬盘支持:
SSD:支持NVMe/SAS/SATA接口,容量覆盖1.6TB ~ 30.72TB
机械硬盘:支持企业级SATA/SAS HDD,容量支持16TB/18TB/20TB/30TB
内存支持:DDR4 ECC RDIMM,最大支持1TB内存扩展,适配高性能服务器平台
八、服务区域:
全国服务覆盖,重点服务区域包括:
北京、上海、广州、深圳
成都、重庆、西安、武汉、南京、杭州
全国各省会城市及重点地级市
九、常见问题(FAQ):
1、存储系统如何进行在线扩容?
2、如何配置快照策略实现数据保护?
3、存储系统支持哪些虚拟化平台?
4、如何实现异地容灾备份?
5、存储系统是否支持国产化CPU平台?
6、如何进行存储性能调优?
7、存储系统是否支持对象存储协议?
8、如何与现有IT系统无缝集成?
9、存储系统是否支持多租户管理?
10、如何防范勒索病毒攻击?
成都科汇科技有限公司
地址:成都市人民南路四段1号时代数码大厦18FA5
电话:400-028-1235
手机:18081950517(微信同号)
在线客服系统