der*_*ert 6 linux raid cache sata data-integrity
据说(例如,请参阅此处的有关它的问题),对于启用 NCQ 的驱动器,驱动器写入缓存应该是安全的,因为它不会对操作系统说谎,即当数据未提交到盘片时. 我试图弄清楚需要哪些设置才能使这成为现实。
我正在使用diskchecker.pl来确认是否所有块都在拔下电源插头后幸存下来。服务器配置如下:
如果我关闭写缓存 ( hdparm -W0),那么它就可以工作(性能损失巨大)。所以看起来上层是有能力的。
我试过在 libata 中启用 FUA(通过传递fua=1给模块加载,并通过 确认dmesg),这没有帮助。
关于如何进行这项工作的任何建议?
编辑:找到原因(见我的回答);关于如何至少恢复部分性能的任何建议?
升级到内核 2.6.38-2-amd64(从 sid)可以解决该问题,但代价是巨大的性能损失(与仅关闭写入缓存非常相似)。
对此进行一些研究,似乎MD直到2.6.33-rc1(commit a2826aa92e2e14db372eda01d333267258944033)才支持I/O屏障(RAID1除外)。