Linux核心脑损伤臭虫可能促使PostgreSQL资料遗失且没有任何错误通知
PostgreSQL社群发现,在Linux上使用PostgreSQL,有机会发生核心处理I/O错误造成资料遗失,且系统不会回报任何的错误讯息,PostgreSQL执行缓冲I/O的方式恶化了这个错误,Linux社群表示,这并非Linux独有的问题,OpenBSD和NetBSD都可能受影响而且很难解决。
PostgreSQL支援工程师Craig Ringer在3月的时候,于pgsql-hackers邮件列表首次回报了这个问题。简单来说,当fsync()被呼叫,PostgreSQL便会假设所有资料都成功写入到永久储存中,但事实并非总是如此。
当由硬体错误引发的缓冲I/O写入失败时,档案系统会作出不同的回应,而这个动作通常包括丢弃受影响页面,并将页面的资料标示为清空,所以之前写入资料的区块,可能回传除了写入资料之外的内容。
由于Linux社群在档案系统的错误报告还未达成共识,以至于错误报告在去年LSFMM会议上被人指称一团乱,这也让应用程式很难正确地获得通知,在核心4.13版本对此问题做了部分补丁,但是仍然没有提供完整的解决方案,而这样的情况发生在PostgreSQL,便会造成无警示的资料失败。
PostgreSQL社群对Linux这样的问题多表达不满,他们认为,无法写入的页面应该保存在记忆体内,将状态标记为Dirty并在稍后再次尝试,而且相关的档案描述符( File Descriptor)状态也应该设为永久错误,让PostgreSQL伺服器不会错过这个存在的问题。
开源软体知名贡献者Tom Lane表示,这样的错误根本是核心脑损伤(Kernel Brain Damage),而EnterpriseDB副总裁同时也是PostgreSQL社群重要成员Robert Haas则认为,会发生这样的问题百分之一百不合理。
Robert Haas进一步解释错误发生的细节,PostgreSQL伺服器服务由一群程序集合而成,许多程序都能执行资料库档案I/O,而呼叫fsync()工作由一个称为Checkpointer的程序执行,该程序负责确保硬碟上的资料一致性,以便在错误发生时回复。而Checkpointer不会总是一直开启所有的相关档案,通常只会在呼叫fsync()前打开文件。
而这就是问题发生的地方,Robert Haas表示,即便在4.13或是更高的核心版本,Checkpointer在打开档案之前,不会知道有任何错误发生,如果Checkpointer在真正执行开启档案之前,系统发生了错误,fsync()呼叫仍会回传成功。Robert Haas认为,这样的核心设计,也会对其他应用程式造成问题,不仅是PostgreSQL。
Linux社群讨论提到,Google有自己的I/O错误处理机制,核心会透过Netlink socket回报I/O错误,这样的处理方式对于PostgreSQL可能是完美的,因此暂时解决办法可能採取这个方向进行。
而Linux社群对于该问题的解决方案,普遍共识认为应该让PostgreSQL执行直接I/O(Direct I/O,DIO),一般来说直接I/O可以更容易控制回写以及I/O,也能存取I/O操作所发生的错误讯息。但是他们也同意这项工作是大工程,不会很快被实现。
但无论是哪一种的解决办法,更新都需要在新一版的核心才会出现。
免责声明:本文由用户上传,如有侵权请联系删除!
猜你喜欢
- 庆余年哪集是范闲背诗的(庆余年范闲背诗第几集简介介绍)
- 西游记里面的故事简介(西游记的故事有哪些简介介绍)
- dnf男街霸三觉(dnf86级男街霸\/千手罗汉\/暗街之王二觉刷图加点)
- 产品整体概念的主要内容是什么(什么是产品整体概念简介介绍)
- 英雄联盟手游内测怎么申请内测申请攻略(LOL英雄联盟手游内测在哪申请)
- 剑灵一个南天国金币可以换多少银币(剑灵南天国铁币,银币在哪获得)
- 凯里欧文到底多高(凯里欧文的身高体重是多少简介介绍)
- 申请工伤认定所必需的材料是什么(申请工伤认定所必需的材料是)
- 生日歌歌词(蝶变新生的主题歌歌词)
- 中餐与西餐有什么区别(中餐与西餐有什么区别)
- 索爱k506c(用索爱k510的进一下)
- 我们结婚了初恋夫妇表演舞台(我们结婚了初恋夫妇(泰民)
最新文章
- 中国好声音如果没有你李昊瀚(山野中国好声音李昊瀚唱的那么好为什么淘汰)
- 被套的尺寸是多少(被套尺寸一般是多少简介介绍)
- 怪物x联盟复刻版攻略(怪物x联盟复刻祥云马)
- 阳历是快的还是慢得(快的和慢的哪个是阳历简介介绍)
- 英雄联盟赵信特战先锋(特战先锋德邦总管赵信)
- 凤凰传奇有一首歌叫什么(凤凰传奇有一首歌歌词有)
- 为什么腾讯视频看不了直播(腾讯lpl视频看不了怎么办)
- Blue(Da(Ba Dee) 歌词)
- 联想z475开机黑屏(联想Z475开机超慢怎么回事)
- 吴建豪舞林大会跳的舞(2011舞林大会吴建豪怎么没有看见进复赛)
- 海清结婚了吗现在怎么样了(海清结婚了吗)
- 开十字绣店到哪里进货(开十字绣店在哪里进货怎么进货呢)
- 卫庄大战六剑奴是哪一集(卫庄哪集说的六剑奴是值得一战的对手)
- 微信六年来第一次开始“变脸”为什么
- iphone怎么看已连接wifi密码(iPhone怎么越狱啊)
- 求K233次列车(15车厢的座位号)
- 能链综合能源港里的充电站为何成为香饽饽
- 鸡蛋怎么做比较有营养(鸡蛋怎么做比较好吃)
- lol手游霞怎么出装(LOL新英雄霞与洛逆羽霞如何出装霞怎么出装)
- 穿越火线什么时候上架(穿越火线什么时候能玩)
- 北比臼舅怎么读(北比臼日怎么读)
- 创世之柱任务有什么用(创世之柱任务怎么做)
- 徐磊的歌曲(写给你的歌 徐磊乐演唱作品)
- 广州市经济适用住房准购证明怎么办理(如何取得广州市经济适用住房准购证明)