假设(参见,例如, 关于它的一个问题 ),在启用了NCQ的驱动器中,驱动器写入caching应该是安全的,因为在操作系统中数据没有被提交给盘片时。 我试图弄清楚需要什么设置才能使其成为现实。
我正在使用diskchecker.pl来确认是否所有模块都存在电源插头的拔出。 服务器configuration如下:
如果我closures写caching( hdparm -W0 ),那么它工作(在巨大的性能损失)。 所以看起来上层是有能力的。
我试过在libata中启用FUA(通过将fua=1传递给模块加载,并通过dmesg确认),这并没有帮助。
有关如何使这项工作的任何build议?
编辑:find原因(看我的答案); 任何关于如何获得至less一些performance的build议?
升级到内核2.6.38-2-amd64(来自sid)修复了这个问题,代价是巨大的性能损失(非常类似于closures写入caching)。
对此做了一些研究,似乎MD直到2.6.33-rc1(提交a2826aa92e2e14db372eda01d333267258944033)才支持I / O障碍(RAID1除外)。
是的,因为我知道这是安全的代价,你可以在Postgresql邮件列表的每一个文件系统和存储层看到关于数据安全和速度成本的许多线索,他们最近一直在谈论SSD安全性,例如, Vertex 2 Pro或最后一个连接了小内存的SSD Intel系列(如RAID控制器中的电池caching)对于数据库的使用是安全的,SSD的问题无法修复禁用写入caching。
我在这里粘贴两个链接,但在邮件列表中有多个示例,请执行search。
http://archives.postgresql.org/pgsql-performance/2010-06/msg00076.php
http://archives.postgresql.org/pgsql-general/2011-04/msg00709.php
这就是为什么你真的应该使用带有BBU(电池备份单元)的硬件RAID控制器。 然后,你可以把你的写入caching打开并且安全。