linux – 使SATA磁盘写缓存安全

据推测(参见例如 a question about it here),启用NCQ的驱动器,驱动器写入缓存应该是安全的,因为它不会向操作系统提供关于数据被提交到盘片的情况.我正在试图找出使这成为现实所需的设置.

我正在使用diskchecker.pl来确认是否所有的块都能通过电源插头拉出来.服务器配置如下:

> 4x ST3500514NS在Linux MD RAID10中运行.英特尔3420芯片组.在AHCI模式下.
> LVM在RAID10上运行.
>经过测试的文件系统是逻辑卷上的ext4(barrier = 1,data = ordered).我也尝试直接在逻辑卷(块设备)上进行测试;这没有帮助.
> Debian 6.0(挤压);内核2.6.32-5-amd64

如果我关闭写缓存(hdparm -W0),那么它的工作原理(性能损失很大).所以看起来上层是有能力的.

我已尝试在libata中启用FUA(通过将fua = 1传递给模块加载,并通过dmesg确认),这没有帮助.

有关如何使这项工作的任何建议?

编辑:找到原因(见我的回答);关于如何获得至少部分性能的任何建议?

解决方法

升级到内核2.6.38-2-amd64(来自sid)可以解决这个问题,代价是巨大的性能损失(非常类似于关闭写缓存).

对此进行一些研究,似乎MD不支持I / O障碍(RAID1除外)直到2.6.33-rc1(提交a2826aa92e2e14db372eda01d333267258944033).

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...