本章提供有关状态数据库副本的概念信息。有关执行相关任务的信息,请参见第 7 章,状态数据库(任务)。
本章包含以下信息:
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。
副本可以存储在以下设备中:
专用本地磁盘分区
属于卷的本地分区
属于 UFS 日志记录设备的本地分区
副本不能存储在根 (/)、swap 或 /usr 片上,也不能存储在包含现有文件系统或数据的片上。副本存储后,可以将卷或文件系统放置在同一个片上。
复制的数据库的固有问题是可能很难确定哪个数据库包含有效并且正确的数据。为了解决此问题,Solaris Volume Manager 使用多数一致算法。此算法要求大多数数据库副本彼此一致,然后才能声明其中任一副本有效。此算法还要求至少存在三个已创建的初始副本。只要三个副本中至少有两个可用,就可以取得一致。如果仅存在一个副本并且系统已崩溃,则可能会丢失所有的卷配置数据。
为了保护数据,只有当所有状态数据库副本中有一半可用时,Solaris Volume Manager 才会运行。因此,该算法可确保不会损坏数据。
多数一致算法可提供以下功能:
如果至少有一半状态数据库副本可用,则系统将继续运行。
如果少于一半的状态数据库副本可用,则系统将崩溃。
仅当全部状态数据库副本中的多数(半数 + 1)可用时,系统才能重新引导至多用户模式。
如果可用的状态数据库副本数量不足,则必须将系统引导至单用户模式,并且删除足够的已损坏副本或缺失副本以达到定额。请参见如何从状态数据库副本不足中恢复。
如果状态数据库副本总数为奇数,则 Solaris Volume Manager 会将该数字除以 2,然后将结果向下舍入到最接近的整数,再加上 1(一)以计算表示多数的数字。例如,在包含 7 个副本的系统上,表示多数的数字是 4(7 除以 2 为 3.5,向下舍入后为 3,再加1 为 4)。
缺省情况下,状态数据库副本的大小为 4 MB 或 8192 个块。应在专用片上创建每个副本大小至少为 4 MB 的状态数据库副本。由于磁盘片可能不会这么小,因此可能需要调整片的大小才能存放状态数据库副本。有关调整片的大小的信息,请参见《系统管理指南:设备和文件系统》中的第 12 章 “管理磁盘(任务)”。
要避免单点故障,请将状态数据库副本分布于片、驱动器和控制器上。一般希望在单个组件发生故障时大部分副本完好。如果丢失了副本(例如,由于设备故障),则运行 Solaris Volume Manager 或重新引导系统时可能会出现问题。Solaris Volume Manager 要求至少有一半副本可用时才能运行,但要求有大多数(半数 + 1 个)副本可用才能重新引导至多用户模式。
建议至少要有 3 个状态数据库副本,每个 Solaris Volume Manager 磁盘集最多有 50 个副本。建议遵循以下原则:
对于只有一个驱动器的系统:一个片上放置全部三个副本。
对于具有两个到四个驱动器的系统:一个驱动器上放置两个副本。
对于具有五个或更多驱动器的系统:一个驱动器上放置一个副本。
如果存在多个控制器,则应将副本尽可能平均分布于所有控制器中。此策略可在某个控制器出现故障时提供冗余性,并且有助于平衡负载。如果控制器上存在多个磁盘,则每个控制器上至少有两个磁盘应存储副本。
如有必要,可以在将用作 RAID-0、RAID-1 或 RAID-5 卷的一部分的片或软分区中创建状态数据库副本。向卷中添加片之前,必须创建副本。Solaris Volume Manager 可为状态数据库副本保留片的起始部分。
如果将状态数据库副本放置在作为卷的一部分的片上,则卷的容量会减小,这是由于副本会占用一定空间。副本使用的空间会逐渐累积,直至达到下一个柱面边界为止。卷将跳过此空间。
RAID-1 卷用于小规模的随机 I/O(如数据库中的随机 I/O)。要获得最佳性能,请在未连接到 RAID-1 卷的片上(最好位于单独的磁盘和控制器上)的每个 RAID-1 卷中至少放置两个附加副本。
不能在现有文件系统,或根 (/)、/usr 和 swap 文件系统上创建状态数据库副本。如有必要,可通过分配 swap 的空间来创建新片(假定片名称可用)。然后,将状态数据库副本放置在此新片上。
可以在未使用的片上创建状态数据库副本。
可以随时向系统中添加附加的状态数据库副本。附加的状态数据库副本有助于确保 Solaris Volume Manager 的可用性。
如果已从 Solstice DiskSuite 产品升级到 Solaris Volume Manager,并且使状态数据库副本与文件系统或逻辑卷共享片(与单独的片相对),请不要删除现有副本并将其替换为同一位置中的新副本。
Solaris Volume Manager 中状态数据库的缺省大小为 8192 个块,而 Solstice DiskSuite 产品中的缺省大小为 1034 个块。删除在 Solstice DiskSuite 产品中创建的缺省大小的状态数据库副本,然后使用 Solaris Volume Manager 添加新的缺省大小的副本时,请务必小心谨慎。这会覆写占用共享片其余空间的任何文件系统的前 7158 个块,从而会损坏数据。
状态数据库副本出现故障时,如果剩余副本中至少有一半可用,则系统会继续运行。如果少于一半的副本可用,则系统将崩溃。
可用的副本至少要比半数多一个,系统才能重新引导至多用户模式。如果可用副本少于多数,则必须将系统重新引导至单用户模式,并删除不可用的副本(通过使用 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 个副本,这些副本分布于每个控制器上的磁盘中。