|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
修订计数器
修订计数器是一个机制,SUSE Storage 用于跟踪每个副本的更新。
在创建副本时,SUSE Storage 将创建一个 revision.counter 文件,并将其初始计数器设置为0。每次对副本的写入,revision.counter 文件中的计数器将增加1。
SUSE Storage 引擎在启动时使用这些计数器,作为在副本之间实现最佳一致性的启发式方法。请注意,由于 SUSE Storage 中的写入IO是并行的,启用修订计数器并不能保证数据一致性。SUSE Storage 也会在自动恢复过程中使用这些计数器,以识别最新更新的副本。
禁用修订计数器是一个选项,在该选项下,副本上的每次写入都不会被跟踪。使用此设置时,性能会有所提高。如果您更喜欢更高的性能,并且拥有稳定的网络基础设施(例如内部网络)和足够的处理器资源,则此选项可能会很有帮助。当修订计数器被禁用时,Longhorn Engine 在启动时跳过对所有副本的修订计数器检查。然而,自动恢复仍然可以正常工作,因为SUSE Storage可以使用副本的头文件状态来识别用于恢复的副本。有关在未启用修订计数器情况下自动恢复如何工作的更多信息,请参见禁用修订计数器的自动恢复支持。
默认情况下,修订计数器是禁用的。
|
“修复”是 SUSE Storage 尝试恢复处于故障状态的卷。当 Longhorn Engine 与所有副本失去连接,并且所有副本都被标记为错误状态时,卷处于故障状态。 |
禁用修订计数器
使用清单文件
可以自定义 StorageClass 以添加 disableRevisionCounter 参数。
默认情况下,disableRevisionCounter 为假,因此修订计数器已启用。
将 disableRevisionCounter 设置为真以禁用修订计数器:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: best-effort-longhorn
provisioner: driver.longhorn.io
allowVolumeExpansion: true
parameters:
numberOfReplicas: "1"
disableRevisionCounter: "true"
staleReplicaTimeout: "2880" # 48 hours in minutes
fromBackup: ""
禁用修订计数器的自动恢复支持
当修订计数器被禁用时,自动恢复的逻辑是不同的。
当修订计数器启用且卷中的所有副本处于 'ERR' 状态时,引擎控制器将处于故障状态,为了让引擎恢复卷,它将获取修订计数最大的副本作为 '真相来源' 来重建其余副本。
在这种情况下,当修订计数器被禁用时,引擎控制器将获取 volume-head-xxx.img 的最后修改时间和所有副本的头文件大小。它还将执行以下步骤:
-
根据
volume-head-xxx.img的最后修改时间,识别具有最新最后修改时间戳的副本。 -
选择所有最后修改时间戳在上述副本最后修改时间戳5秒内的副本。
-
从上述步骤中的副本候选中,比较候选的主文件大小,并选择文件大小最大的副本。
-
从上述步骤中的副本候选中,选择具有最新修改时间戳的最佳副本。
-
将最佳副本更改为 'RW' 模式,其他副本标记为 'ERR' 模式。错误的副本将根据最佳副本进行重建。