22.3. 写障碍注意事项
有些系统配置不需要写屏障来保护数据。在大多数情况下,其他方法比写屏障更可取,因为启用写障碍会导致严重的性能损失。
禁用写缓存
避免数据完整性问题的另一种方法是确保在电源失败时不丢失任何写缓存数据。在可能的情况下,配置此功能的最佳方法是禁用写缓存。在使用一个或多个 SATA 驱动器的简单服务器或桌面上(关闭本地 SATA 控制器 Intel AHCI 部分),您可以使用以下命令在目标 SATA 驱动器中禁用写缓存:
#
hdparm -W0 /device/
电池支持的写缓存
当系统使用带有电池支持的写缓存的硬件 RAID 控制器时,写障碍也是不必要的。如果系统带有此类控制器,并且其组件驱动器禁用了写缓存,则控制器将充当直写缓存,这会告知内核写缓存数据在电源丢失后仍存在。
大多数控制器使用特定于供应商的工具来查询和操作目标驱动器。例如,LSI Megaraid SAS 控制器使用电池支持的写缓存;这种类型的控制器需要 MegaCli64 工具来管理目标驱动器。要显示 LSI Megaraid SAS 的所有后端驱动器的状态,请使用:
#
MegaCli64 -LDGetProp -DskCache -LAll -aALL
要禁用 LSI Megaraid SAS 的所有后端驱动器的写缓存,请使用:
#
MegaCli64 -LDSetProp -DisDskCache -Lall -aALL
注意
在系统运行时,硬件 RAID 卡会对电池充电。如果系统关机的时间较长,则电池将不会充电,从而在电源故障期间存储的数据会丢失。
高端阵列
高端阵列在电源故障时有多种保护数据的方法。因此,不需要验证外部 RAID 存储中的内部驱动器的状态。
NFS
NFS 客户端不需要启用写障碍,因为数据完整性是由 NFS 服务器端处理的。因此,应配置 NFS 服务器,以确保断电过程中数据的持久性(无论是通过写障碍还是通过其他方法)。