检查磁盘数据刷新功能
强烈建议确保计划包含在集群中的所有存储设备都可以在电源意外中断时,将数据从缓存中刷新到磁盘。这样,您将找到可能在电源故障时丢失数据的设备。
Acronis Cyber Infrastructure 附带 vstorage-hwflush-check 工具,该工具检查在紧急情况下存储设备如何将数据刷新到磁盘。该工具作为客户端/服务器实用程序实施:
- 客户端持续将数据块写入到存储设备。写入数据块时,客户端将增加一个特殊的计数器,并将其发送到保留它的服务器上。
- 服务器跟踪从客户端传入的计数器,并始终知道下一个计数器数字。如果服务器收到的计数器小于它所拥有的计数器(例如,由于电源发生故障以及存储设备未将缓存的数据刷新到磁盘),服务器将报告错误。
要检查存储设备在发生电源故障时是否能够将数据成功刷新到磁盘,请遵循以下步骤:
- 在一个节点上,运行服务器:
-
在托管想要测试的存储设备的不同节点上,运行客户端,例如:例如:
# vstorage-hwflush-check -s vstorage1.example.com -d /vstorage/stor1-ssd/test -t 50
其中:
vstorage1.example.com是服务器的主机名。/vstorage/stor1-ssd/test是用于数据刷新测试的目录。在执行期间,客户端在此目录中创建文件并将数据块写入该文件。- 50 是客户端将数据写入磁盘的线程数。每个线程有其自己的文件和计数器。可以增加线程数(最大为 200)以在更严苛的条件下测试系统。在运行客户端时,还可以指定其他选项。有关可用选项的更多信息,请参阅
vstorage-hwflush-check手册页。
-
至少等待 10-15 秒,从客户端节点切断电源(按下电源按钮或拔出电源线),然后重新打开电源。
- 重新启动客户端:
# vstorage-hwflush-check -l
# vstorage-hwflush-check -s vstorage1.example.com -d /vstorlage/stor1-ssd/test -t 50
启动后,客户端将读取所有以前写入的数据、确定磁盘上数据的版本,并从最后一个有效的计数器重新启动测试。然后,它将此有效计数器发送到服务器,服务器将其与最新的计数器进行比较。您看到的输出可能类似于:
id<N>:<counter_on_disk> -> <counter_on_server>
它表示以下其中一项:
- 如果磁盘上的计数器低于服务器上的计数器,则存储设备无法将数据刷新到磁盘。避免在生产中使用此存储设备,尤其对于 CS 或日志,因为您会有丢失数据的风险。
- 如果磁盘上的计数器高于服务器上的计数器,则存储设备已将数据刷新到磁盘,但客户端无法将其报告给服务器。对于设置的载入线程数,网络可能太慢或者存储设备可能太快,因此认为增加线程数。此存储设备可以用在生产中。
- 如果两个计数器相等,则存储设备已将数据刷新到磁盘,并且客户端已将其报告给服务器。此存储设备可以用在生产中。
慎重起见,请重复该过程几次。在检查了第一个存储设备后,继续检查计划用在集群中的所有剩余设备。需要测试计划用在簇中的所有设备:用于 CS 日志的 SSD 磁盘,用于 MDS 日志和区块服务器的磁盘。