13.故障排除和错误恢复
本章介绍发生硬件或系统故障时要执行的任务。
13.1。处理硬盘故障
如何处理硬盘驱动器故障取决于DRBD配置为处理磁盘I / O错误的方式(请参阅磁盘错误处理策略),以及配置的元数据的类型(请参阅DRBD元数据)。
| 在大多数情况下,仅在直接在物理硬盘驱动器上运行DRBD的情况下,此处描述的步骤才适用。如果您在DRBD上分层运行DRBD,则通常它们不适用
|
13.1.1。手动从硬盘驱动器上卸下DRBD
如果将DRBD 配置为传递I / O错误(不建议),则必须首先分离DRBD资源,即,将其与其后备存储解除关联:
#drbdadm detach <资源>
通过运行drbdadm status或drbdadm dstate命令,您现在可以验证资源现在处于无盘模式:
#drbdadm status <资源>
<资源>角色:主要
卷:0磁盘:无盘
<peer>角色:中学
卷:0对等磁盘:UpToDate
#drbdadm dstate <资源>
无盘/最新
如果主节点上发生了磁盘故障,则可以将此步骤与切换操作结合在一起。
13.1.2。I / O错误时自动分离
如果将DRBD 配置为在I / O错误时自动分离(推荐的选项),则DRBD应该已经从其后备存储中自动分离了资源,而无需手动干预。您仍然可以使用该drbdadm status 命令来验证资源实际上是否在无盘模式下运行。
13.1.3。使用内部元数据时更换故障磁盘
如果使用内部元数据,则将DRBD设备绑定到新硬盘就足够了。如果新硬盘必须使用除故障磁盘之外的其他Linux设备名称寻址,则必须相应地修改DRBD配置文件。
此过程涉及创建新的元数据集,然后重新附加资源:
#drbdadm create-md <资源>
v08找不到幻数
写入中继资料...
初始化活动日志
不初始化位图
成功创建了新的drbd元数据块。
#drbdadm attach <资源>
新硬盘的完全同步会立即自动启动。drbdadm status --verbose与任何后台同步一样,您将能够通过监视同步的进度。
13.1.4。使用外部元数据时更换故障磁盘
使用外部元数据时,过程基本相同。但是,DRBD无法独立识别出硬盘驱动器已被交换,因此需要执行额外的步骤。
#drbdadm create-md <资源>
v08找不到幻数
写入中继资料...
初始化活动日志
不初始化位图
成功创建了新的drbd元数据块。
#drbdadm attach <资源>
#drbdadm invalidate <资源>
| 确保drbdadm invalidate在没有良好数据的节点上运行;此命令将导致本地内容被对等方的数据覆盖,因此在错误的节点上运行此命令可能会丢失数据! |
在此,该drbdadm invalidate命令触发同步。同样,可以通过观察同步进度drbdadm status --verbose。
13.2。处理节点故障
当DRBD检测到其对等节点已关闭(通过真正的硬件故障或手动干预)时,DRBD会将其连接状态从“ 已连接”更改为“正在连接”,并等待对等节点重新出现。然后说DRBD资源以断开模式运行。在断开连接模式下,资源及其关联的块设备完全可用,可以根据需要进行升级和降级,但是没有块修改被复制到对等节点。相反,DRBD基于对等存储在断开连接时正在修改哪些块。
13.2.1。处理临时辅助节点故障
如果当前具有次要角色资源的节点暂时发生故障(例如,由于随后通过更换RAM纠正了内存问题),则无需采取进一步干预措施-除了显然有必要修复故障节点并带来故障它重新联机。发生这种情况时,两个节点将在系统启动时简单地重新建立连接。此后,DRBD会将与此同时在主节点上进行的所有修改同步到辅助节点。
| 此时,由于DRBD的重新同步算法的性质,资源在辅助节点上短暂地不一致。在较短的时间范围内,如果对等节点不可用,则辅助节点将无法切换到主要角色。因此,群集不冗余的时间段由实际的辅助节点停机时间以及后续的重新同步组成。 |
请注意,对于DRBD 9,每个资源可以连接两个以上的节点,例如。单个发生故障的辅助节点仍然有4个节点,而其他两个辅助节点仍可用于故障转移。
13.2.2。处理临时主节点故障
从DRBD的角度来看,主节点的故障几乎与辅助节点的故障相同。幸存的节点检测到对等节点的故障,并切换到断开连接模式。DRBD并不会促进幸存节点到主角色; 这样做是集群管理应用程序的责任。
修复发生故障的节点并返回群集后,它会充当次要角色,因此,如上一节所述,不需要进一步的手动干预。同样,DRBD不会变回资源角色,而是由集群管理器来做(如果已配置)。
在主节点发生故障的情况下,DRBD通过特殊机制确保了块设备的一致性。有关详细讨论,请参考活动日志。
13.2.3。处理永久性节点故障
如果节点遇到不可恢复的问题或永久性损坏,则必须执行以下步骤:
- 用性能和磁盘容量相似的硬件替换出现故障的硬件。
| 可以用性能较差的节点替换故障节点,但不建议这样做。不支持用磁盘容量较小的节点替换故障节点,这将导致DRBD拒绝连接到替换后的节点[ 13 ]。 |
此时无需手动启动完整的设备同步,它将在连接到尚存的主节点和/或辅助节点后自动开始。
13.3。手动裂脑恢复
当连接重新变得可用并且对等节点交换初始DRBD协议握手时,DRBD会检测到脑裂。如果DRBD检测到两个节点都处于(或在断开连接时处于某个位置)主要角色,则它将立即断开复制连接。明显的迹象是,系统日志中显示以下消息:
检测到裂脑,连接断开!
检测到裂脑后,一个节点将始终使资源处于StandAlone连接状态。另一个可能也处于StandAlone状态(如果两个节点同时检测到裂脑),或者处于 连接状态(如果对等方在另一个节点有机会检测到裂脑之前断开连接)。
在这一点上,除非您将DRBD配置为从裂脑自动恢复,否则您必须通过选择一个将放弃其修改的节点来手动进行干预(此节点称为 裂脑受害者)。使用以下命令进行此干预:
| 这仍在进行中。 期待边缘和变化。 |
#drbdadm disconnect <资源>
#drbdadm secondary <资源>
#drbdadm connect --discard-my-data <资源>
在另一个节点(裂脑幸存者)上,如果其连接状态也为StandAlone,则应输入:
#drbdadm disconnect <资源>
#drbdadm connect <资源>
如果节点已经处于“ 连接”状态,则可以省略此步骤 ;然后它将自动重新连接。
| 使用DRBD 9预发行版,您可能会收到稍微误导性的错误消息 失败:(102)本地地址(端口)已在使用中。 在StandAlone中并尝试重新连接时,因为内核模块仍然具有活动的连接数据。 在这种情况下,只需使用删除网络设置drbdadm disconnect,然后drbdadm connect照常继续操作即可。 |
如果受脑部分裂影响的资源是 堆叠资源,请使用drbdadm --stacked而不是drbdadm。
连接后,您的裂脑受害者立即将其连接状态更改为SyncTarget,并使其修改被其他节点覆盖。
| 大脑分裂的受害者不会受到完全的设备同步。取而代之的是,它的本地修改会回滚,对裂脑幸存者所做的任何修改都会传播到受害者。 |
重新同步完成后,裂脑被认为已解决,并且节点再次形成了完全一致的冗余复制存储系统。
本文详细介绍DRBD在遇到硬件或系统故障时的处理流程,包括硬盘故障、节点故障及裂脑情况下的恢复策略,旨在帮助管理员有效应对各种故障场景。
2203

被折叠的 条评论
为什么被折叠?



