网易首页 > 网易号 > 正文 申请入驻

浅析nvme原子写的应用场景

0
分享至

1.NVMe原子写简介

NVME协议家族,当前发展的已经非常庞大,来张nvme家族大合影。从最开始的NVME Base Spec,又延伸了更加专业聚焦的模块Command Set Spec、Transport Spec,NVME MI Spec等等。

在Command Set Spec中,我们可以看到针对nvme设备相关的原子操作的定义相关参数。原子写的简单理解就是,一笔写操作,要不全部写入盘,要不全部未写入盘,不存在部分写入+部分未写入的情况,最大限度保证数据一致性。

从nvme协议中的定义来看,原子写参数主要分为三大类:控制器controller级别、namespace级别以及namespace原子写边界相关参数。

  • AWUN:Atomic Write Unit Normal,这个参数是定义了控制器级别的原子写参数,以block数量为单位,常见的盘的block的大小有512B、4K、16K等。单个block本身就有原子写属性。当写入IO=
  • 当写入IO>=AWUN时,且namespace没有设定原子写操作参数,会失去原子写的能力,NVME盘是不会有相关错误返回,需要上层用户自己掌控原子写的约束条件。

下图示例,AWUN=2KB,每个LBA 512B。假设两笔原子写操作:A原子写命令填充LBA0-3数据,B原子写命令填充LBA1-4数据,且均小于等于AWUN的原子写单位。那么,有效的结果就是前2行,要么LBA0-3 A+ LBA4 B,要么LBA0 A+LBA1-4 B,每一笔写入都是原子操作,不能出现后两种部分写入的情况。

  • AWUPF:Atomic Write Unit Power Fail,这个比较好理解,当出现异常掉电的情况,当写入IO=
  • 企业级SSD中通常有PLP掉电保护的大电容,不会影响数据安全,消费级SSD如果使用原子写能力,可能需要重点关注这项。在linux系统中,可以通过nvme_id_ctrl相关的命令获取原子写参数的配置

struct nvme_id_ctrl {
...
__u8 tnvmcap[16];
__u8 unvmcap[16];
...
__le16 awun;
__le16 awupf;
__le16 acwu;
...
};

  • NAWUN/NAWPF:这两个参数是Namespace级别的,定义与AWUN/AWUPF类似,控制器级别的参数也可以用于namespace级别原子写,需要注意的是,namespace级别原子写的参数>=控制器级别的原子写参数,比如NAWUN>=AWUN, NAWUPF>=AWUPF. 也就是说,namespace级别原子写支持更大的原子写能力。此外,Namespace级别原子写需要注意LBA边界的问题
  • ACWU/NACWU:这两个参数是控制器和namespace相关的比较&写两种操作原子能力参数。不过,这个在nvme协议里面也是optional的,没有特别具体的定义,nvme盘基本不支持这个特性。

  • NABSN/NABO/NABSPF:这三个参数定义的是Namespace级别的原子写操作边界,在nvme协议规范中也是Optional的。

如下图示例,黄色或者蓝色的4个格子是一个边界大小NABSN/NABSPF,原子写操作要符合规则的定义,不能夸边界原子写操作。NABSN/NABSPF要大于等于NAWUN/NAWPF,且NABO小于等于NABSN/NABSPF,用一个对比关系式:NABSN/NABSPF>=(NAWUN/NAWPF & NABO).

但也需要注意,如果控制器AWUN/AWUPF/ACWU限制为0,即使出现跨边界的写,在控制器级别也是可以完成原子写操作,可以不用管NABSN/NABSPF这些namespace的边界约束。

2.应用场景

在数据库应用场景中,对数据一致性有很高的要求。比如在MySQL InnoDB场景,page size是16KB,数据校验也是16KB。但是盘通常是block size是4KB,导致在某些场景(比如掉电场景)无法保证16KB原子写落盘,出现partial write问题。为了解决这个问题,MySQL会在脏数据下刷到文件时,会先复制到double write buffer。然后double write buffer分2次在写入共享表空间,最后通过fsync刷新到硬盘。

double write buffer带来的负面影响就是会有额外的开销,在MySQL官网也是推荐采用O_Direct的方式降低double write buffer的影响。在DirectIO模式下,可以把数据以DMA的形式写入SSD中,避免了buffering IO相关的脏数据问题,降低延迟抖动的影响。

支持Direct IO写入的数据库类型主要有:

  • Oracle
  • SAP HANA
  • MySQL (InnoDB storage engine)
  • RocksDB
  • PostgreSQL
  • Teradata

基于MySQL数据库Direct IO模式应用场景,如果要使用硬件的原子写能力,要经过文件系统、block层、驱动层,才能闯关成功。

闯关第一步:文件系统

此时,文件系统Direct IO模式可以绕过文件系统的缓存,直接写入,文件系统不会有太多的影响,会通过BIO提交IO到Block层。比如ext4文件系统中,通过ext4_direct_IO下发到块设备中。

闯关第二步:Block块设备层

在block块设备层,可能会出现IO merge合并和IO Split拆分的情况。如果要原子写的效果,在Block层就不能发生IO拆分或者合并的情况。

在linux内核中,可以查询merge是否已开启:

cat /sys/class/block/device-name/queue/nomerges

This enables the user to disable the lookup logic involved with IO merging requests in the block layer. By default (0) all merges are enabled. When set to 1 only simple one-hit merges will be tried. When set to 2 no merge algorithms will be tried (including one-hit or more complex tree/hash lookups).

闯关第三步:NVME驱动层

这部分对IO没有merge,主要是获取nvme盘硬件的原子写能力,然后通过块设备层接口对块设备相关的原子写能力进行设置。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
郭士强加盟,孙铭徽不走+强援加盟

郭士强加盟,孙铭徽不走+强援加盟

元爸体育
2024-04-28 16:31:43
国内油价将于明晚迎来调整 预计下调0.07-0.08元/升

国内油价将于明晚迎来调整 预计下调0.07-0.08元/升

手机中国
2024-04-28 15:44:08
告别!亚洲第一飞人落幕,苏炳添轰10秒50,名次第5无缘达标奥运

告别!亚洲第一飞人落幕,苏炳添轰10秒50,名次第5无缘达标奥运

林小湜体育频道
2024-04-28 21:06:56
湖人本该2-2!詹姆斯愤怒挥拳揪出头号罪人,拉塞尔对不起了

湖人本该2-2!詹姆斯愤怒挥拳揪出头号罪人,拉塞尔对不起了

球哥侃球
2024-04-28 12:19:02
经过我不断被喷之后发现,支持哈、伊、俄的大体应该是同一群人!

经过我不断被喷之后发现,支持哈、伊、俄的大体应该是同一群人!

翻开历史和现实
2024-04-27 15:59:22
问界M7起火致3死后续!视频曝光,家属提出3大质疑,车企回应来了

问界M7起火致3死后续!视频曝光,家属提出3大质疑,车企回应来了

洛洛女巫
2024-04-28 12:11:42
1998年印尼屠华事件:10万华人妇女当街被侵犯,50万华人被残杀

1998年印尼屠华事件:10万华人妇女当街被侵犯,50万华人被残杀

平安是福呀
2024-04-25 23:19:39
《城中之城》大结局:蒋芮30万换赵蕊一夜,田晓慧30万成最后赢家

《城中之城》大结局:蒋芮30万换赵蕊一夜,田晓慧30万成最后赢家

汤汤慢
2024-04-28 13:15:45
1换3,沈梓捷交易或敲定,郭艾伦回归时间曝光,朱芳雨回应孙铭徽

1换3,沈梓捷交易或敲定,郭艾伦回归时间曝光,朱芳雨回应孙铭徽

东球弟
2024-04-28 09:43:39
闹大了!美民众呐喊:把旧世界烧成灰烬,美国工人阶级都要站起来

闹大了!美民众呐喊:把旧世界烧成灰烬,美国工人阶级都要站起来

明日之家
2024-04-28 15:45:25
一个国家被踢出SWIFT系统的后果非常的严重!

一个国家被踢出SWIFT系统的后果非常的严重!

华夏司马北
2024-04-24 22:01:49
喜讯!伊万将向足协提交国足四大新归化球员名单?两人已成功入籍

喜讯!伊万将向足协提交国足四大新归化球员名单?两人已成功入籍

罗掌柜体育
2024-04-28 13:03:25
余承东的“想撞都难”被打了脸

余承东的“想撞都难”被打了脸

科技新知
2024-04-28 19:31:19
消息称马斯克已飞抵北京 但所乘坐的私人飞机并不是湾流G650ER

消息称马斯克已飞抵北京 但所乘坐的私人飞机并不是湾流G650ER

搞笑的阿票
2024-04-28 19:27:23
探访广州龙卷风受灾地:4分钟4个村庄遭袭,铁皮厂房受损严重

探访广州龙卷风受灾地:4分钟4个村庄遭袭,铁皮厂房受损严重

澎湃新闻
2024-04-28 16:22:38
汤尤杯:世界第一险爆冷,决胜局2分之差!石宇奇2-0暴打世界第24

汤尤杯:世界第一险爆冷,决胜局2分之差!石宇奇2-0暴打世界第24

求球不落谛
2024-04-28 18:56:45
外媒爆料:美军竟然在偷偷使用北斗导航 原来中国已大幅超越GPS

外媒爆料:美军竟然在偷偷使用北斗导航 原来中国已大幅超越GPS

军评陈光文
2024-04-27 09:49:56
周鸿祎懵逼!卖迈巴赫,卖到了990万!竞拍者表示:这辈子不卖

周鸿祎懵逼!卖迈巴赫,卖到了990万!竞拍者表示:这辈子不卖

户外小阿隋
2024-04-28 21:22:07
大家发现没有,曾经轰轰烈烈的“垃圾分类”运动,现在已经摆烂了

大家发现没有,曾经轰轰烈烈的“垃圾分类”运动,现在已经摆烂了

沫姐美食记
2024-04-28 18:40:20
“优惠4元”写成“售价4元”,烘焙店称标错价格面临数百万元损失

“优惠4元”写成“售价4元”,烘焙店称标错价格面临数百万元损失

上游新闻
2024-04-27 16:44:12
2024-04-28 23:38:44
存储随笔
存储随笔
记录SSD相关知识与经验
114文章数 292关注度
往期回顾 全部

科技要闻

特斯拉生死时速,马斯克西天取经

头条要闻

周鸿祎的二手迈巴赫以990万元成交 半个车圈到场

头条要闻

周鸿祎的二手迈巴赫以990万元成交 半个车圈到场

体育要闻

湖人的G4,尽人事得到了回报

娱乐要闻

张杰谢娜发文为何炅庆生,亲如家人!

财经要闻

上财万字报告深度解读Q1经济

汽车要闻

鸿蒙首款行政旗舰轿车 华为享界S9实车亮相车展

态度原创

教育
本地
房产
亲子
手机

教育要闻

语文经常要考的但是课本里都没有的文学常识!读完这本

本地新闻

云游中国|苗族蜡染:九黎城的“潮”文化

房产要闻

力度越来越大!落户两年享本地居民购房政策,海南第16城松绑限购!

亲子要闻

弟弟和姐姐打架,被姐姐一挥手撂倒,虽然打不过气势不能输

手机要闻

苹果发警告:iPhone充电不要放枕头下丨iPad、AirPods新品待发

无障碍浏览 进入关怀版