使用智能存储管理,我正在尝试启用 DWC。
使用以下命令,我确认 slot0 是唯一的选项并且它是健康的。
sudo /opt/smartstorageadmin/ssacli/bin/ssacli ctrl all show status
HPE Smart Array P816i-a SR Gen10 in Slot 0 (Embedded)
Controller Status: OK
Cache Status: OK
Battery/Capacitor Status: OK
然后我得到了完整的状态,但是对于这个例子,我将只 grep 引用缓存的行。
sudo /opt/smartstorageadmin/ssacli/bin/ssacli ctrl slot=0 show | grep -i cache
Write Cache Bypass Threshold Size: 1040 KiB
Wait for Cache Room: Disabled
Cache Board Present: True
Cache Status: OK
Cache Ratio: 10% Read / 90% Write
Configured Drive Write Cache Policy: Default
Unconfigured Drive Write Cache Policy: Default
Total Cache Size: 4.0
Total Cache Memory Available: 3.8
No-Battery Write Cache: Disabled
Cache Backup Power Source: Batteries
现在我注意到它说已配置和未配置的驱动器写入缓存策略都是默认的。
因此我尝试启用 dwc,但是它因“使用情况”参数而发疯。
sudo /opt/smartstorageadmin/ssacli/bin/ssacli ctrl slot=0 modify dwc=enable
Error: Parameter "usage" must be specified.
我知道,根据帮助文档,用法可以是未配置、已配置或 hbc。
<target> modify [drivewritecache=enable|disable|default|?]
[usage=configured|unconfigured|hba] [forced]
Enables or disables the physical drive write cache policy for the
controller.The target can be any valid controller target that supports drive
write cache policy.
我在网上找到了很多 PDF 文件,其中提到在尝试启用驱动器写入缓存时使用通配符,并且它们引用了使用情况,就好像它是一个目标状态,仅用于在与此状态匹配的驱动器上启用它。基于此逻辑,我似乎想使用“usage=unconfigured”在此驱动器上启用它。我的逻辑错了吗?
答案1
在激活磁盘驱动器的写缓存之前,您应该清楚其含义。
控制器有自己的写入缓存(本例中为 4 GB),断电时,其内容可以通过电池保存一段时间。这意味着在断电的情况下,在电源恢复并启动硬件后,控制器固件可以在处理新写入之前刷新其缓存。
与此相反,磁盘驱动器的写入缓存不受控制器电池的保护。
当您将磁盘驱动器连接到不带额外写入缓存的简单控制器时,操作系统通常会出于性能原因启用磁盘的写入缓存(或者也许不会禁用它,因为它默认启用)。但操作系统也会在必要时发送刷新缓存命令(例如,当软件调用时fsync()
)。
现在的问题是您的硬件 RAID 控制器如何处理启用了写入缓存的磁盘。当它从自己的缓存中写回一批数据时,
- 它会立即将其从自己的缓存中删除(简单但不安全), 或者
- 它仅在驱动器确认了 flush-cache 命令后才会将其删除(安全的)
由于我们谈论的是昂贵的企业硬件,人们可能会倾向于认为控制器肯定会实施第二种策略。
但是,HP Smart Array 配置指南包含以下警告:
警告:由于物理驱动器写入缓存没有电池供电,因此如果在写入过程中发生电源故障,您可能会丢失数据。为了最大限度地降低这种可能性,请使用备用电源。
HPE 智能阵列 SR Gen10 配置,第 3 版,2018 年,第 86 页,艺术编号:882375-003
这意味着 HP 控制器在将控制器缓存刷新到启用写缓存的驱动器时实施了第一种,即不安全的策略。
您的列表显示Drive Write Cache Policy: Default
。您知道该控制器的默认驱动器写入缓存策略是什么吗?也许它已经默认启用了磁盘写入缓存...
值得一提的是,我在 HP 手册中找不到有关默认驱动器写入缓存策略的任何信息。
已配置/未配置的区别是指驱动器是否已分配给某个磁盘组。换句话说,活动/正在使用与非活动/刚刚连接。
显然,一些控制器仅支持更改未配置的设备的此属性,而其他控制器则支持更改所有设备的此属性。