Solaris Volume Manager 管理指南

第 6 章 状态数据库(概述)

本章提供有关状态数据库副本的概念信息。有关执行相关任务的信息,请参见第 7 章,状态数据库(任务)

本章包含以下信息:

关于 Solaris Volume Manager 状态数据库和副本

Solaris Volume Manager 状态数据库包含所有卷、热备件和磁盘集的配置和状态信息。Solaris Volume Manager 可维护状态数据库的多个副本,以提供冗余并防止数据库在系统崩溃过程中损坏(最多只会有一个数据库副本损坏)。

状态数据库副本可以确保状态数据库中的数据始终有效。当状态数据库被更新时,每个状态数据库副本也被更新。一次只会对一个副本进行更新(以防止系统崩溃的情况下所有更新副本都会损坏)。

如果系统丢失了状态数据库副本,则 Solaris Volume Manager 必须确定哪个状态数据库副本仍然包含有效数据。Solaris Volume Manager 通过使用多数一致算法来确定此信息。在此算法中,只有当多数(半数 + 1 个)状态数据库副本可用并一致时,才会认为其中的任何状态数据库副本是有效的。由于多数一致算法的要求,设置磁盘配置时,必须创建至少三个状态数据库副本。只要三个状态数据库副本中至少有两个可用,就可以取得一致。

在引导过程中,Solaris Volume Manager 将忽略损坏的状态数据库副本。在某些情况下,Solaris Volume Manager 会尝试重写损坏的状态数据库副本。否则,在修复这些状态数据库副本之前,会将其忽略。如果状态数据库副本由于其基础片遇到错误而损坏,则需要修复或替换该片,然后再启用副本。


注意 – 注意 –

请勿将状态数据库副本放置在通过光纤连接系统的存储器、SAN 或未与系统直接连接的其他存储器中。否则可能无法引导 Solaris Volume Manager。副本所在的存储设备在引导过程中必须与传统 SCSI 驱动器或 IDE 驱动器在同一时间可用。


如果丢失所有的状态数据库副本,则理论上可能会丢失存储在 Solaris Volume Manager 卷中的所有数据。出于此原因,最好是在单独的驱动器上跨多个控制器创建足够的状态数据库副本,以防止灾难性故障。另外,保存初始的 Solaris Volume Manager 配置信息以及磁盘分区信息也是明智之举。

有关如何向系统中添加其他状态数据库副本的信息,请参见第 7 章,状态数据库(任务)。有关丢失状态数据库副本时如何进行恢复的信息,请参见从状态数据库副本故障中恢复

状态数据库副本还用于 RAID-1 卷重新同步方面。与镜像数目相比,如果状态数据库副本相对过少,则可能会导致副本 I/O 影响 RAID-1 卷的性能。也即是说,如果有大量镜像,请确保每个 RAID-1 卷至少有两个状态数据库副本,每个磁盘集最多有 50 个副本。

缺省情况下,卷(本地集)和磁盘集的每个状态数据库副本都占用 4 MB(8192 个磁盘扇区)的磁盘存储空间。多属主磁盘集的状态数据库副本的缺省大小为 16 MB。

副本可以存储在以下设备中:

副本不能存储在根 (/)、swap/usr 片上,也不能存储在包含现有文件系统或数据的片上。副本存储后,可以将卷或文件系统放置在同一个片上。

了解多数一致算法

复制的数据库的固有问题是可能很难确定哪个数据库包含有效并且正确的数据。为了解决此问题,Solaris Volume Manager 使用多数一致算法。此算法要求大多数数据库副本彼此一致,然后才能声明其中任一副本有效。此算法还要求至少存在三个已创建的初始副本。只要三个副本中至少有两个可用,就可以取得一致。如果仅存在一个副本并且系统已崩溃,则可能会丢失所有的卷配置数据。

为了保护数据,只有当所有状态数据库副本中有一半可用时,Solaris Volume Manager 才会运行。因此,该算法可确保不会损坏数据。

多数一致算法可提供以下功能:

如果可用的状态数据库副本数量不足,则必须将系统引导至单用户模式,并且删除足够的已损坏副本或缺失副本以达到定额。请参见如何从状态数据库副本不足中恢复


注 –

如果状态数据库副本总数为奇数,则 Solaris Volume Manager 会将该数字除以 2,然后将结果向下舍入到最接近的整数,再加上 1(一)以计算表示多数的数字。例如,在包含 7 个副本的系统上,表示多数的数字是 4(7 除以 2 为 3.5,向下舍入后为 3,再加1 为 4)。


管理状态数据库副本

处理状态数据库副本错误

状态数据库副本出现故障时,如果剩余副本中至少有一半可用,则系统会继续运行。如果少于一半的副本可用,则系统将崩溃。

可用的副本至少要比半数多一个,系统才能重新引导至多用户模式。如果可用副本少于多数,则必须将系统重新引导至单用户模式,并删除不可用的副本(通过使用 metadb 命令)。

例如,假定您有四个副本。只要两个副本(总数的一半)可用,系统就会继续运行。但是,要重新引导系统,则必须有三个副本(总数的一半 + 1)可用。

在双磁盘配置中,应始终在每个磁盘上至少创建两个副本。例如,假定配置中包含两个磁盘,但仅创建了三个副本(第一个磁盘上有两个副本,另一个磁盘上有一个副本)。如果包含两个副本的磁盘出现了故障,则系统会崩溃,这是因为剩余的磁盘仅有一个副本。也即是说,少于副本总数的一半。


注 –

如果在双磁盘配置中的每一个磁盘上都创建两个副本,则当其中一个磁盘出现故障时,Solaris Volume Manager 仍可继续运行。但是,由于可用的副本必须多于总数的一半时系统才能重新引导,因此无法重新引导系统。


如果包含状态数据库副本的片出现故障,则配置中的其余部分应当仍然继续操作。Solaris Volume Manager 可在引导过程中找到有效的状态数据库(只要可用的有效状态数据库副本比半数多一个)。

手动修复或启用状态数据库副本时,Solaris Volume Manager 将使用有效数据对这些副本进行更新。

方案-状态数据库副本

状态数据库副本可提供有关总体 Solaris Volume Manager 配置的冗余数据。以下示例基于第 5 章,配置和使用 Solaris Volume Manager(方案)中所提供的方案中的样例系统。本示例介绍如何分布状态数据库副本以提供足够的冗余性。

样例系统具有一个内部 IDE 控制器和驱动器,还有两个 SCSI 控制器。每个 SCSI 控制器都连接有六个磁盘。可以使用三个控制器对系统进行配置,从而避免任何单点故障。任何仅有两个控制器的系统都无法避免与 Solaris Volume Manager 有关的单点故障。通过将副本平均分布于所有三个控制器以及每个控制器中的至少一个磁盘上(如果可能,分布于两个磁盘),系统可以经受任何单个硬件故障。

在最低配置中,可以将单个状态数据库副本放置在根磁盘的片 7 上,然后将其他副本放置在其他两个控制器中每一个上的某个磁盘的片 7 上。为了帮助应对可能出现的众所周知的远程介质故障,请向根磁盘中添加另一个副本,这样,位于每个控制器上的两个不同磁盘中的两个副本(总共为六个副本)便可提供足够的安全性。

要提供更高的安全性,请添加 12 个附加副本,将其平均分布于两个镜像的每一面上的 6 个磁盘中。此配置将产生总共 18 个副本,其中根磁盘上有 2 个副本,每个 SCSI 控制器上有 8 个副本,这些副本分布于每个控制器上的磁盘中。