硬件故障中恢复
VERITAS Volume Manager (VxVM) 保护系统不因磁盘和其它硬件故障而出错,并帮助您
从这些事件中恢复系统。本章描述恢复步骤和相关信息,以帮助您防止因磁盘和其它硬件
故障而丢失数据或系统存取。
如果一个卷发生磁盘 I/O 故障 (例如,因为磁盘有无法改正的错误),则 VxVM 可分离涉
及此故障的 plex。那个 plex 上的 I/O 停止,但卷中其余 plex 上的 I/O 继续进行。
如果磁盘完全失败 , VxVM 可从其磁盘组中分离该磁盘。该磁盘上的所有 plex 被禁用。如
果磁盘分离时其上存在任何未镜像的卷,则那些卷也被禁用。
理解 Plex 状态循环
更改 plex 状态是正常操作的一部分,并且未必指出那些必须纠正的反常行为。牢固理解不
同 plex 状态及其内部关系,对于正确执行本章所描述的恢复程序是十分必要的。
系统启动时,卷自动启动,且 vxvol start 任务使所有 CLEAN plex 变为 ACTIVE。关
机时, vxvol stop 任务将所有 ACTIVE plex 标记为 CLEAN。如果启动时所有 plex 的初
始状态为 CLEAN,则表明曾发生了受控关机,并将优化启动卷所需的时间。
初始创建时, plex 具有 EMPTY 状态,且一直保持到其所挂接的卷初始化时为止。然后其
状态置为 CLEAN。其 plex 内核状态保持为 DISABLED,并且在卷启动之前不会置为
ENABLED。
在系统崩溃并重新启动后,卷的所有 plex 为 ACTIVE 状态,但 plex 内核状态仍标记为
DISABLED ,直到其数据由 vxvol resync 任务恢复。
可以使用 vxmend off 命令使 plex 脱机,使用 vxmend on 命令使其重新联机,以及在使
用 vxplex att 重新挂接 plex 时使其数据与其它 plex 重新同步。失败的再同步或无法纠
正的 I/O 故障使 plex 置于 IOFAIL 状态。
列出不可启动的卷
不可启动卷可能被错误配置或存在其它阻碍其启动的错误或条件。要显示不可启动卷,请
使用 vxinfo 命令。以下命令显示有关卷的可存取性和可使用性信息:
# vxinfo [-g diskgroup] [volume ...]
以下示例输出显示卷 mkting 不可启动:
home fsgen Started
mkting fsgen Unstartable
src fsgen Started
rootvol root Started
swapvol swap Started
重启动已禁用卷
如果磁盘故障导致一个卷被禁用,则必须在更换故障磁盘后从备份中恢复该卷。在由备份
恢复其内容之前,必须使用 vxvol 命令重新启动列为 Unstartable 的所有卷。例如,若
要重新启动卷 mkting 以便它能够从备份中恢复,请使用以下命令:
# vxvol -o bg -f start mkting
-f 选项强制重启动卷,而 -o bg 选项则将 plex 的重同步作为后台任务进行。
恢复已镜像卷
系统崩溃或 I/O 错误会损坏已镜像卷的一个或多个 plex,并使得 plex 均不处于 CLEAN 或
ACTIVE 状态。可以将 plex 中的一个标记为 CLEAN,并指示系统使用该 plex 作为恢复其
它 plex 的源。步骤如下:
1. 使用以下命令将预定的 plex 置于 CLEAN 状态:
# vxmend fix clean plex
例如,将 plex vol01-02 置于 CLEAN 状态:
# vxmend fix clean vol01-02
2. 若要由 CLEAN plex 恢复卷中的其它 plex,必须禁用卷,而这些 plex 必须处于 STALE
状态。如有必要,可通过在每个 plex 上依次运行以下命令,使所有其它 CLEAN 或
ACTIVE plex 的状态变为 STALE:
# vxmend fix stale plex
3. 若要启用 CLEAN plex 并据此恢复 STALE plex,使用以下命令:
# vxvol start volume
例如,恢复卷 vol01
# vxvol start vol01
有关 vxmend 和 vxvol 命令的更多信息,请参见 vxmend(1M) 和 vxvol(1M) 帮助手册。
卷的所有镜像 plex 的基础磁盘或其它相关子系统发生严重硬件故障后,有可能无法
使用 vxmend 恢复卷。在这种情况下,请删除卷,并在正常工作的硬件上重新创建
卷,然后从备份或从快照影像来恢复卷的内容。
重新挂接磁盘
如果磁盘发生完全故障并且不可能进行热重定位,或 VxVM 是在某些磁盘驱动程序已卸载
或不可装载 (导致磁盘进入故障状态)的情况下启动的,可执行重新挂接操作。如果问题
已修复,则可以使用 vxreattach 命令重新挂接磁盘,而不会将 plex 标记为 STALE。但
是,重新挂接必须在磁盘上的所有卷启动之前进行。
作为磁盘恢复的一部分,从 vxdiskadm 菜单和在引导进程中调用 vxreattach 命令。如
果可能, vxreattach 将故障磁盘介质记录重新挂接到具有相同设备名的磁盘上。重新挂
接将磁盘置于其以前所属的同一磁盘组中,并且将保留其原来的磁盘介质名称。
发生重新挂接后,便可能不再需要恢复操作。如果磁盘故障的初始 (或其它)原因仍然存
在,则重新挂接将失败。
命令 vxreattach -c 将检查重新挂接是否可能,而不执行任何操作。它显示可以重新挂
接磁盘的磁盘组和磁盘介质名称。
有关 vxreattach 命令的更多信息,请参阅 vxreattach(1M) 帮助手册。
RAID-5 卷上的故障
可见的故障有两类:系统故障 和磁盘故障。系统故障指因操作系统崩溃或电源故障而导致
系统突然停止操作。磁盘故障则指因系统故障 (如磁头划盘、磁盘上的电子故障或磁盘控
制器故障)而使一些磁盘上的数据不可用。
系统故障
RAID-5 卷的设计使其在磁盘发生故障时以最小的磁盘空间开销来保持可用性。但是,在系
统故障后,许多形式的 RAID-5 会有数据丢失。发生数据丢失,是因为系统故障致使
RAID-5 卷中的数据和奇偶校验变为不同步。而同步丢失,则是因为故障发生时刻未完成的
写操作状态无法确定造成的。
如果正当存取 RAID-5 卷时发生同步丢失,则将该卷描述为具有失效的奇偶校验。必须通
过读取每个条带中的所有非奇偶校验列、重新计算奇偶校验并将其写出到条带的奇偶校验
条带单元中来重构奇偶校验。必须对卷中的每个条带进行此操作,因此需要较长时间才能
完成。
当对无日志 plex 的 RAID-5 卷进行再同步时,卷中磁盘的任何故障都将导致其
数据丢失。
除了易因故障而受损之外,再同步进程还会耗费系统资源并减缓系统操作。
RAID-5 日志保留发生故障时的写入数据副本,因而可减少因系统故障而导致的损坏。再同
步进程包括:从日志中读取数据及奇偶校验,然后将它们写入 RAID-5 卷的适当区域。这
大大地减少了数据和奇偶校验再同步所需的时间。它还意味着卷决不会真正失效。任何时
刻,卷中所有条带的数据和奇偶校验均为已知,因此,单个磁盘的故障不会导致卷中数据
的丢失。
磁盘故障
磁盘故障可导致磁盘上的数据不可用。对 RAID-5 卷来说,这意味着子磁盘不可用。
这种情况可因写入磁盘期间出现不可纠正的 I/O 错误而发生。 I/O 错误可导致当系统 (例
如,因电缆问题或由于驱动器掉电)被引导时子磁盘从阵列中分离或磁盘不可用。
当这种情况发生时,子磁盘无法用于保持数据,将被视作失效的 和分离的。如果基础磁盘
变为可用或已更换,该子磁盘仍被视为失效并不可用。
如果试图读取包含在失效子磁盘上的数据,则从条带中所有其它条带单元上的数据重构此
数据。此操作称为重构读取。这是一个比简单读取数据繁重得多的操作,并可能导致读取
性能降低。当 RAID-5 卷有失效子磁盘时,它被视为处于退化模式。
处于退化模式的 RAID-5 卷可从 vxprint -ht 的输出中识别。
列出为 DEGRADED
不要在处于退化模式的 RAID-5 卷上运行 vxr5check 命令。
包含 RAID-5 日志的磁盘可能也发生了故障。如果 RAID-5 日志已镜像,则单个 RAID-5 日
志 plex 的故障对卷的操作没有直接影响。但是,丢失卷中全部 RAID-5 日志 plex 会使卷易
于因完全故障而受损。在 vxprint -ht 命令的输出中,如果 plex 状态为 BADLOG 而不是
LOG,就 表明 RAID-5 日志 plex 出错。
RAID-5 的默认启动恢复过程
要全面恢复 RAID-5 卷的内容并使它可用, VxVM 可能需要执行几项操作。无论何时启动
卷,在启动卷之前,所有 RAID-5 日志 plex 均被置为零。这可防止将随机数据解释为日志
项而破坏卷内容。还可能需要恢复一些子磁盘,或可能需要再同步奇偶校验 (如果
RAID-5 日志已出错)。
启动 RAID-5 卷时, VxVM 采用下列步骤:
1. 如果 RAID-5 卷未能干净地关闭,它将检查是否存在有效的 RAID-5 日志 plex。
如果存在有效的日志 plex,则重放它们。重放过程是通过将卷置于 DETACHED 卷
内核状态、将卷状态设置为 REPLAY 并启用 RAID-5 日志 plex 来完成的。如果能
够成功地读取和重放日志,则进入步骤 2。
如果不存在有效日志,则必须再同步奇偶校验。再同步是通过将卷置于 DETACHED
卷内核状态并将卷状态设置为 SYNC 来完成的。所有的日志 plex 都继续处在
DISABLED plex 内核状态。
由于再同步奇偶校验时的任何子磁盘失效都会导致卷无法利用,因此在同步期间不
启动卷。通过和 vxvol 命令一起使用 -o unsafe start 选项可废弃此条件。如
果存在任何失效子磁盘,则 RAID-5 卷无用。
-o unsafe start 选项是危险的,它可能使卷的内容无用。因此不推荐使用该
选项。
2. 将全部现有日志 plex 置零并启用这些日志。如果此过程期间全部日志失败,则启动进
程中止。
3. 如果不存在失效子磁盘或现有的失效子磁盘可以修复,则卷置于 ENABLED 卷内核状态
而卷状态设置为 ACTIVE。至此,卷已启动。
如果在磁盘发生故障时热重定位功能是激活的,则除非没有合适的磁盘空间可用于重定
位,否则不需要系统管理员的干预。热重定位功能由故障触发,并通过电子邮件将故障信
息通知系统管理员。
热重定位操作自动尝试重定位出错 RAID-5 plex 的子磁盘。当重定位发生后,热重定位后
台驻留程序 (vxrelocd) 还起始一个奇偶校验再同步。
在 RAID-5 日志 plex 出错的情况下,仅当日志 plex 已镜像时才发生重定位; 然后,
vxrelocd 后台驻留程序起始一个镜像再同步操作,重新创建 RAID-5 日志 plex。如果在
故障发生时热重定位功能是关闭的,则需要系统管理员来启动再同步或恢复操作。
在 RAID-5 plex 的基础磁盘或其它相关子系统发生严重硬件故障后,有可能无法使
用本章描述的方法恢复卷。在这种情况下,请删除卷并在正常工作的硬件上重新创
建它,然后从备份恢复卷的内容。
奇偶校验再同步
大多数情况下,RAID-5 阵列不存在失效的奇偶校验。失效的奇偶校验只出现在 RAID-5 卷
的全部 RAID-5 日志 plex 失败之后,并且仅当存在系统故障时才出现。即使 RAID-5 卷有
失效的奇偶校验,通常也只作为卷启动进程的一部分来修复它。
如果启动了不存在有效 RAID-5 日志的卷并且该进程在卷再同步之前停止,则会产生带有失效奇偶校验的活动卷。
NEEDSYNC,表明需要奇偶校验再同步。卷状态还可能是 SYNC,
表明启动时曾尝试同步,并且同步进程应正在进行同步操作。如果不存在这样的进程,或
如果卷处于 NEEDSYNC 状态,则可通过对 vxvol 命令使用 resync 关键字来手动启动同
步操作。
# vxvol resync r5vol
通过向 RAID-5 卷发布 VOL_R5_RESYNC ioctls 可重新生成奇偶校验。再同步进程起始
于 RAID-5 卷的开头,并对大小等于 -o iosize 选项指定的区域进行再同步。如果未指定
-o iosize 选项,则使用默认的最大 I/O 大小。然后, resync 操作移到下一个区域上进
行,直到整个 RAID-5 卷长度均被再同步。
对于较大的卷,奇偶校验再生需要很长时间,在操作完成前很有可能发生系统关机或崩
溃。在系统关机情况下,经过重启动后必须保持奇偶校验再生的进度。否则,该进程必须
重头再来。
为避免重新开始整个进程,奇偶校验再生设有检查点,也就是把进行了奇偶校验再生的卷
偏移保存在配置数据库中。-o checkpt=size 选项控制检查点的间隔。如果没有指定该选
项,则使用默认的检查点大小。
由于保存检查点偏移需要事务处理,因此检查点太小会延长再生奇偶校验所需的时间。在
重启动系统后,检查点偏移小于卷长的 RAID-5 卷会在检查点偏移处启动奇偶校验再同步。
日志 Plex 恢复
有可能因磁盘故障而使 RAID-5 日志 plex 分离。对 vxplex 命令使用 att 关键字可重新挂
接这些 RAID-5 日志。若要重新挂接失败的 RAID-5 日志 plex,请使用以下命令:
# vxplex att r5vol r5vol-l1
失效子磁盘恢复
失效子磁盘恢复通常在卷启动时完成。但是,恢复进程可能会崩溃,或者卷可能是用 -o
delayrecover 这样的防碍子磁盘恢复的选项启动的。此外,还可能在未执行恢复操作之
前就替换了子磁盘所驻留的磁盘。 在这些情况下,可以通过使用 vxvol recover 命令完
成子磁盘恢复。
# vxvol recover r5vol disk01-00
具有多个失效子磁盘的 RAID-5 卷只需一个操作即可恢复。若要恢复多个失效子磁盘,请
对卷使用 vxvol recover 命令,如下所示:
# vxvol recover r5vol
在移动 RAID-5 子磁盘后恢复
当移动或更换了 RAID-5 子磁盘时,新的子磁盘标记为 STALE 以期恢复。如果卷为活动
的,则可使用 vxsd 命令恢复卷。如果卷不活动,则当它下一次启动时得到恢复。恢复操
作期间的 RAID-5 卷是退化的。
移动所涉及的条带中的任何故障都会使得卷无用。如果其奇偶校验失效,则 RAID-5 卷也
会无效。为避免此种情况发生,在下列情况下, vxsd 不允许子磁盘移动:
失效子磁盘占据与正在移动的子磁盘相同的条带
RAID-5 卷已停止,但未干净地关闭; 也就是说,奇偶校验视为失效
RAID-5 卷活动并且不存在有效日志区域
只有第三种情况可通过使用 -o force 选项忽略。
还可通过使用 vxsd split 命令和 vxsd join 命令来分割和结合 RAID-5 卷的子磁盘。这些操作以对镜像卷相同的方式工作。
RAID-5 子磁盘移动和其它卷类型的子磁盘移动的执行方式相同,但没有降级冗余的不利后果。
启动 RAID-5 卷
在启动 RAID-5 卷时,它的状态可以是许多状态中的一种。在系统正常关闭后,卷应处于
CLEAN 状态且不需要恢复。但是,如果卷未关闭,或者在崩溃之前没有卸载,则在启动
RAID-5 卷并使它可用之前会要求恢复。
在正常条件下,重启动后会自动启动卷,并且自动发生恢复或通过 vxrecover 命令进行
恢复。
不可启动的 RAID-5 卷
如果 RAID-5 plex 的一些部分未映射卷长,则 RAID-5 卷无用:
RAID-5 plex 不能比 RAID-5 卷稀疏
RAID-5 plex 不会映射一个条带中有两个子磁盘发生故障的区域,故障原因或者是因为
子磁盘失效,或者是由于子磁盘建立在故障磁盘上。
发生这种情况时, vxvol start 命令返回以下出错讯息:
vxvm:vxvol: 错误 : 卷 r5vol 不可启动 ; RAID-5 plex 未映射整个卷长。
此刻, RAID-5 卷的内容不可用。
RAID-5 卷不可启动的另一种可能方式是,奇偶校验失效且子磁盘分离或失效。发生这种情
况是由于在包含故障子磁盘的条带内,奇偶校验条带单元无效 (因为奇偶校验失效)并且
出错子磁盘上的条带单元也无效。
在这种情况下,来自 vxvol
start 命令的输出显示是:
vxvm:vxvol: 错误 : 卷 r5vol 不可启动;某些子磁盘不可用且奇偶校验失效。
如果在 RAID-5 卷中总是 使用两个或多个 RAID-5 日志 plex,则可避免这种情况。 RAID-5
日志 plex 可防止卷内的奇偶校验失效,从而防止这种情况发生。
若要启动具有失效子磁盘的 RAID-5 卷,可以将 -f 选项与 vxvol start 命令一起使用。
这使所有失效子磁盘都标记为非失效。标记发生在 start 操作求取 RAID-5 卷的有效性并
确定启动所需的条件之前。同样,也可通过使用以下命令将单个子磁盘标记为非失效:
# vxmend fix unstale subdisk
如果某些子磁盘失效并需要恢复,并且如果存在有效日志,则通过将卷置于 ENABLED
内核状态可启用该卷,并且在子磁盘恢复期间该卷可用。否则,卷的内核状态将设置
为 DETACHED,并且在子磁盘恢复期间不可用。
这样做是因为,如果在卷活动时系统崩溃或卷不适当地停止,则奇偶校验会变为失效,
从而使得卷不可用。如果不希望这样做,则可使用 -o unsafe start 选项来启动卷。
-o unsafe start 选项是危险的,它可能使卷的内容不可用。因此,不建议使
用此选项。
卷状态被设置为 RECOVER 且失效磁盘被恢复。因每个子磁盘上的数据变为有效,子磁
盘不再标记为失效。
如果有任何子磁盘的恢复失败且不存在有效日志,则因为子磁盘仍保持失效,卷的启
动中止,并且系统崩溃会使 RAID-5 卷无用。这也可通过使用 -o unsafe start 选项
废弃。
-o unsafe start 选项是危险的,它可能使卷的内容不可用。因此,不建议使
用此选项。
如果卷具有有效日志,则子磁盘恢复的失败可记录下来,但不会停止启动过程。
当所有子磁盘均得到恢复时,卷被置于 ENABLED 内核状态且标记为 ACTIVE。至此,卷已启动。
阅读(842) | 评论(0) | 转发(0) |