本章提供有关磁盘集的概念性信息。有关执行相关任务的信息,请参见第 19 章,磁盘集(任务)。
本章包括以下信息:
本节介绍此 Solaris 发行版中新增的磁盘集功能。
有关 Solaris 新增功能的完整列表以及 Solaris 发行版的描述,请参见《Solaris 10 新增功能》。
磁盘集是一组物理存储卷,其中包含逻辑卷和热备件。卷和热备用池必须在该磁盘集中的驱动器上生成。在磁盘集中创建卷后,可以像使用物理片一样使用卷。可以使用卷来创建和挂载文件系统,以及存储数据。
磁盘集在基于 SPARC 和 x86 的平台上均受支持。
本节介绍 Solaris Volume Manager 中可用的不同类型的磁盘集。
每台主机都具有本地磁盘集。本地磁盘集包含主机上不属于已命名磁盘集的所有磁盘。本地磁盘集专属于特定主机。本地磁盘集包含该特定主机配置的状态数据库。本地磁盘集中的卷和热备用池仅包含本地磁盘集中的驱动器。
除了本地磁盘集以外,主机还可以分享已命名的磁盘集。已命名的磁盘集是本地磁盘集以外的任何磁盘集。可以根据系统的配置,使用以下类型的已命名磁盘集来管理卷。
共享磁盘集可由多个主机共享。尽管共享磁盘集在所有参与的主机中都是可见的,但是只有该磁盘集的属主才能对其进行访问。每台主机都可以控制共享磁盘集,但一次只能有一台主机对其进行控制。此外,共享磁盘集还提供了用于管理卷的特定名称空间。
共享磁盘集支持数据冗余性和数据可用性。如果一台主机出现故障,另一台主机可以取代该主机的磁盘集(此类型的配置称为故障转移配置)。
共享磁盘集的设计目的之一是为了与 Sun Cluster、Solstice HA(High Availability,高可用性)或其他受支持的第三方 HA 框架协同工作。Solaris Volume Manager 本身不提供实现故障转移配置所必需的所有功能。
尽管每台主机都可以控制磁盘集,但一次只能有一台主机对其进行控制。
在 Solaris 9 4/04 发行版提供自动获取功能之前,Solaris Volume Manager 不支持通过 /etc/vfstab 文件在磁盘集上自动挂载文件系统。Solaris Volume Manager 要求系统管理员在访问磁盘集上的文件系统之前使用 metaset -s setname -t 命令手动发出磁盘集获取命令。
借助自动获取功能,可以使用 metaset -s setname -A enable 命令将磁盘集设置为在引导时自动访问,可以在引导时在 /etc/vfstab 文件中为文件系统定义挂载选项,还可以在 /etc/vfstab 文件中为位于已启用磁盘集的卷上的文件系统定义挂载选项。
只有单个主机磁盘集支持自动获取功能。自动获取功能要求磁盘集不得与任何其他系统共享。不能将共享的磁盘集设置为使用自动获取功能,不能对其使用 metaset -A 命令。但是,从磁盘集删除其他主机后,便可将该磁盘集设置为自动获取。同样,不能在自动获取磁盘集中添加其他主机。如果自动获取功能已禁用,则可以将其他主机添加到该磁盘集。
在 Sun Cluster 环境中,自动获取功能是禁用的。Sun Cluster 可以处理磁盘集的获取和释放。
有关自动获取功能的更多信息,请参见 metaset(1M) 命令的 -A 选项。
在 Sun Cluster 环境下创建的已命名磁盘集称为多属主磁盘集。多属主磁盘集允许多个节点共享磁盘集的拥有权并同时访问共享磁盘。多属主磁盘集中的所有磁盘和卷均可由群集中的所有节点直接访问。每个多属主磁盘集都包含已添加到该磁盘集中的主机的列表。因此,群集配置中的每个多属主磁盘集可以具有一组不同(有时为重叠的)的主机。
每个多属主磁盘集都有主节点。主节点的功能是管理和更新状态数据库副本更改。由于每个磁盘集都有主节点,因此可以同时存在多个主节点。选择主节点的方法有两种。第一种方法是,如果某一节点是第一个将磁盘添加到磁盘集中的节点,则该节点将成为主节点。第二种方法是,如果主节点崩溃并出现故障,则节点 ID 最小的节点将成为主节点。
只有在 Sun Cluster 环境下才启用多属主磁盘集功能,目的是管理多属主磁盘集存储。Solaris Volume Manager for Sun Cluster 功能可与从 Sun Cluster 10/04 软件集合开始的 Sun Cluster 发行版以及 Oracle Real Applications Clusters 等应用程序配合工作。有关 Solaris Volume Manager for Sun Cluster 的更多信息,请参见第 4 章“Solaris Volume Manager for Sun Cluster(概述)”。
配置 多属主磁盘集 之前,除了安装 Solaris OS 以外还必须安装以下软件:
Sun Cluster 初始群集框架
Sun Cluster Support for Oracle Real Application Clusters 软件
Oracle Real Application Clusters 软件
有关设置 Sun Cluster 和 Oracle Real Application Clusters 软件的信息,请参见《Sun Cluster 软件安装指南(适用于 Solaris OS) 》和《用于 Oracle Real Application Clusters 的 Sun Cluster 数据服务指南(适用于 Solaris OS)》。
与本地磁盘集管理不同的是,您无需手动创建或删除磁盘集状态数据库。Solaris Volume Manager 会在磁盘集中的每个磁盘上放置一个状态数据库副本(在片 7 上),最多可在磁盘集中放置 50 个副本。
向磁盘集中添加磁盘时,Solaris Volume Manager 会在磁盘集上自动创建状态数据库副本。将磁盘收入磁盘集时,Solaris Volume Manager 可能会对磁盘重新分区,以便可将磁盘集的状态数据库副本置于磁盘上(请参见自动磁盘分区)。
驻留在磁盘集中的卷上的文件系统通常不会在引导时通过 /etc/vfstab 文件自动挂载。必要的 Solaris Volume Manager RPC 守护进程(rpc.metad 和 rpc.metamhd)不会在引导过程中很早就启动以允许此操作发生。此外,在重新引导期间会丢失磁盘集的拥有权。请不要在 /etc/inetd.conf 文件中禁用 Solaris Volume Manager RPC 守护进程。它们被配置为在缺省情况下启动。只有这些守护进程始终处于启用状态,Solaris Volume Manager 才能使用其全部功能。
如果使用 metaset 命令的 -A 选项启用了自动获取功能,则在引导时会自动获取磁盘集。在这样的情况下,驻留在磁盘集中的卷上的文件系统可以随 /etc/vfstab 文件一同自动挂载。要在引导过程中启用自动获取功能,必须仅将磁盘集与单个主机关联,且必须启用自动获取功能。可以在磁盘集创建期间或创建之后启用该磁盘集。有关自动获取功能的更多信息,请参见自动获取磁盘集。
尽管磁盘集在单个主机配置中受支持,但它们通常不适合在“本地”(并非双连接)使用。两种常见的例外情况是:使用磁盘集为逻辑卷提供一个更便于管理的名称空间,以及使用磁盘集更方便地管理存储区域网络 (Storage Area Network, SAN) 光纤网络上的存储器(请参见方案-磁盘集)。
可以使用 Solaris Volume Manager 命令行界面(metaset 命令)或 Solaris Management Console 中增强的存储工具 来创建和配置磁盘集。
向磁盘集添加磁盘后,该磁盘集便可由磁盘集中的主机保留(或获取)和释放。如果某一主机保留了磁盘集,则磁盘集中的其他主机便不能访问该磁盘集中磁盘上的数据。要对磁盘集执行维护,主机必须是磁盘集的属主,或已保留了磁盘集。主机通过将第一个磁盘置于磁盘集中获得该磁盘集的隐式拥有权。
可以使用 metaimport 命令将磁盘集(包括在不同系统上创建的磁盘集)导入现有的 Solaris Volume Manager 配置中。
主机使用磁盘集中的磁盘之前,必须先保留该磁盘集。保留磁盘集的方法有两种:
安全-安全保留磁盘集时,Solaris Volume Manager 将尝试获取磁盘集,而其他主机将尝试释放磁盘集。释放可能会失败,因此保留也可能会失败。
强制-强制保留磁盘集时,无论其他主机当前是否已保留磁盘集,Solaris Volume Manager 都将保留磁盘集。当磁盘集中的某一主机停机或当前没有通信时,通常会使用此方法。磁盘集中的所有磁盘都将被接管。将在执行保留的主机上读取状态数据库,并且在磁盘集中配置的共享卷变为可访问状态。如果此时其他主机保留了磁盘集,则该主机可能会由于保留丢失而崩溃。
正常情况下,磁盘集中的两个主机彼此协同工作,以便确保磁盘集中的磁盘一次只由一台主机保留。正常情况是指两个主机都在运行且彼此进行通信。
如果突然确定不保留磁盘(或许由于使用该磁盘集的其他主机强制获取了磁盘),则主机将崩溃。此行为有助于最大程度地减少在两台主机同时访问同一磁盘时造成的数据丢失。
有关获取或保留磁盘集的更多信息,请参见如何提取磁盘集。
对磁盘集中的物理磁盘执行维护时,释放磁盘集可能非常有用。释放磁盘集后,主机便不能访问该磁盘集。如果磁盘集中的两台主机都释放了磁盘集,则磁盘集中的两台主机都不能访问该磁盘集中的磁盘。
有关释放磁盘集的更多信息,请参见如何释放磁盘集。
从 Solaris 9 9/04 发行版开始,使用 metaimport 命令可以将磁盘集(包括复制的磁盘集)导入在磁盘集中具备设备 ID 支持的现有 Solaris Volume Manager 配置。还可以使用 metaimport 命令报告可以导入的磁盘集。
复制的磁盘集是使用远程复制软件创建的。为了使用 metaimport 命令导入复制的磁盘集,还必须将包含磁盘集中每个磁盘的状态数据库副本的片复制到被复制磁盘集所在的同一片上。对于非 EFI 磁盘,这对应于片 7,对于 EFI 磁盘,则对应于片 6。复制磁盘集之前,请确保要复制的数据磁盘配置与远程站点的磁盘配置匹配。此步骤可确保精确复制状态数据库副本和数据。
如果磁盘不包含卷或状态数据库副本,则 metaimport 命令也不会在磁盘集中导入磁盘。如果卷或状态数据库副本尚未添加到磁盘或已从磁盘删除,则会出现此情况。在这种情况下,如果将磁盘集导入其他系统,则会发现磁盘集中缺少该磁盘。例如,每个 Solaris Volume Manager 磁盘集最多允许 50 个状态数据库副本。如果磁盘集中具有 60 个磁盘,则不包含状态数据库副本的 10 个磁盘必须包含卷,才能随磁盘集一同导入。
有关与导入磁盘集关联的任务,请参见导入磁盘集。
在 Sun Cluster 环境下,metaimport 命令不可用。
向磁盘集中添加新磁盘时,Solaris Volume Manager 将检查磁盘格式。如有必要,Solaris Volume Manager 将对磁盘重新分区,以确保磁盘具有正确配置的片 7(具有容纳状态数据库副本所需的足够磁盘空间)。片 7 的准确大小取决于磁盘的几何参数。但是,大小不会小于 4 MB,可能更接近于 6 MB(具体取决于柱面边界所在的位置)。
缺省情况下,Solaris Volume Manager 会将一个状态数据库副本置于片 7 上。可以增加片 7 的缺省大小或缩小状态数据库副本的大小,以便将多个状态数据库副本置于该片中。
基于各种因素(包括状态数据库副本的大小以及要在状态数据库副本中存储的信息),片 7 的最小大小可能会在将来发生更改。多属主磁盘集中的状态数据库副本的缺省大小为 16 MB。
为了在磁盘集中使用,磁盘的片 7 必须满足以下条件:
在扇区 0 处开始
包括足够的空间,可容纳磁盘标号和状态数据库副本
不能挂载
不与任何其他片重叠,包括片 2
如果现有分区表不满足这些条件,则 Solaris Volume Manager 将对磁盘重新分区。每个驱动器都有一小部分空间保留在片 7 中供 Solaris Volume Manager 使用。每个驱动器上其余的空间都被置于片 0 中。磁盘上的任何现有数据都会因重新分区而丢失。
向磁盘集添加驱动器后,可以在必要时对其重新分区,但不能以任何方式对片 7 进行更改。
prtvtoc 命令的以下输出显示了某磁盘在添加到磁盘集之前的状态。
[root@lexicon:apps]$ prtvtoc /dev/rdsk/c1t6d0s0 * /dev/rdsk/c1t6d0s0 partition map * * Dimensions: * 512 bytes/sector * 133 sectors/track * 27 tracks/cylinder * 3591 sectors/cylinder * 4926 cylinders * 4924 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 0 2 00 0 4111695 4111694 1 3 01 4111695 1235304 5346998 2 5 01 0 17682084 17682083 3 0 00 5346999 4197879 9544877 4 0 00 9544878 4197879 13742756 5 0 00 13742757 3939327 17682083 |
以上输出显示磁盘不包含片 7。因此,向磁盘集添加磁盘时,Solaris Volume Manager 将对磁盘重新分区。prtvtoc 命令的以下输出显示了该磁盘在添加到磁盘集之后的状态。
[root@lexicon:apps]$ prtvtoc /dev/rdsk/c1t6d0s0 * /dev/rdsk/c1t6d0s0 partition map * * Dimensions: * 512 bytes/sector * 133 sectors/track * 27 tracks/cylinder * 3591 sectors/cylinder * 4926 cylinders * 4924 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 0 0 00 10773 17671311 17682083 7 0 01 0 10773 10772 [root@lexicon:apps]$ |
输出显示磁盘已重新分区,其中包括一个在柱面 0 处开始且有足够空间容纳状态数据库副本的片 7。如果向磁盘集添加的磁盘具有可接受的片 7,则不会对它们重新格式化。
如果已使用 Solstice DiskSuite 软件升级了磁盘集,则这些磁盘集上的缺省状态数据库副本大小将为 1034 个块,而不是 Solaris Volume Manager 中的 8192 块大小。相应地,在 Solstice DiskSuite 软件下添加的磁盘上的片 7 比 Solaris Volume Manager 下添加的磁盘上的片 7 也要小。
磁盘集卷名称与其他 Solaris Volume Manager 组件名称类似。但是,磁盘集名称会作为该名称的一部分。例如,卷路径名称会在 /dev/md/ 之后和路径中实际卷名称之前包含磁盘集名称。
下表显示了一些示例磁盘集卷名称。
表 18–1 磁盘集的示例卷名称
/dev/md/blue/dsk/d0 |
磁盘集 blue 中的块卷 d0 |
/dev/md/blue/dsk/d1 |
磁盘集 blue 中的块卷 d1 |
/dev/md/blue/rdsk/d126 |
磁盘集 blue 中的原始卷 d126 |
/dev/md/blue/rdsk/d127 |
磁盘集 blue 中的原始卷 d127 |
同样,热备用池也将磁盘集名称作为热备件名称的一部分。
图 18–1 显示使用两个磁盘集的示例配置。
在此配置中,主机 A 和主机 B 共享磁盘集 red 和 blue。每个磁盘集都有各自的本地磁盘集,本地磁盘集不是共享的。如果主机 A 出现了故障,则主机 B 可以取代主机 A 来控制其共享磁盘集,即磁盘集 red。同样,如果主机 B 出现故障,则主机 A 可以取代主机 B 来控制其共享磁盘集,即磁盘集 blue。
使用磁盘集时,请考虑以下指南:
必须在与磁盘集连接的每台主机上都配置 Solaris Volume Manager。
创建磁盘集之前,每台主机都必须已设置其本地状态数据库。
创建磁盘集和为磁盘集创建卷的一系列步骤为:首先创建磁盘集;然后,向磁盘集添加磁盘;最后,在磁盘集中创建卷。
要在群集环境中创建和使用磁盘集,root 必须为组 14 的成员。或者,每台主机上的 /.rhosts 文件都必须包含与该磁盘集关联的其他主机名的对应项。
此步骤在 SunCluster 3.x 环境中不是必需的。
要对磁盘集执行维护,主机必须是磁盘集的属主,或已保留了磁盘集。主机通过将第一个驱动器置于磁盘集中获得该磁盘集的隐式拥有权。
不能向磁盘集中添加当前用于文件系统、数据库或任何其他应用程序的驱动器。添加驱动器之前,请确保该驱动器当前没有被使用。
不要向磁盘集中添加包含要保留的现有数据的驱动器。向磁盘集添加磁盘的过程中,将对磁盘重新分区并销毁现有数据。
与本地卷管理不同的是,不必在磁盘集上手动创建或删除状态数据库副本。Solaris Volume Manager 将尝试在磁盘集的所有驱动器中平衡状态数据库副本的合理数目。
向磁盘集中添加驱动器时,Solaris Volume Manager 将重新平衡其余驱动器中的状态数据库副本。以后,如有必要,可以使用 metadb 命令来更改副本布局。
在以前的 Solaris Volume Manager 版本中,计划在磁盘集中的主机之间共享的所有磁盘都必须与每台主机相连。它们还必须在每台主机上都具有完全相同的路径、驱动程序和名称。具体来说,共享磁盘驱动器必须由位于同一位置 (/dev/rdsk/c#t#d#) 的两台主机看到。此外,共享磁盘必须使用相同的驱动程序名称 (ssd)。
在最新的 Solaris OS 发行版中,对通常可访问存储器具有不同视图的系统可以采用非并行方式共享对磁盘集的访问权限。由于引入了对磁盘集的设备 ID 支持,因此 Solaris Volume Manager 可以自动跟踪已命名磁盘集中的磁盘动作。
对磁盘集的设备 ID 支持在 Sun Cluster 环境中不受支持。
升级到最新 Solaris OS 时,需要立即获取磁盘集以便启用磁盘跟踪。有关获取磁盘集的更多信息,请参见如何提取磁盘集。
如果自动获取功能未启用,则必须手动获取每个磁盘集。 如果此功能已启用,则重新引导系统时会自动执行此步骤。有关自动获取功能的更多信息,请参见自动获取磁盘集。
通过该扩展设备 ID 支持,您还可以导入各种磁盘集(即使是在不同的系统中创建的)。有关导入磁盘集的更多信息,请参见导入磁盘集。
以下示例(利用第 5 章,配置和使用 Solaris Volume Manager(方案)中显示的样例系统)介绍应如何使用磁盘集来管理驻留在 SAN(Storage Area Network,存储区域网络)光纤网络上的存储器。
假设样例系统具有与光纤网络交换机和 SAN 存储器连接的其他控制器。与其他设备(如 SCSI 和 IDE 磁盘)一样,SAN 光纤网络上的存储器在引导过程的初期便不能用于系统。此外,Solaris Volume Manager 还将报告光纤网络上的逻辑卷在引导时不可用。但是,通过向磁盘集添加存储器,然后使用磁盘集工具管理该存储器,可以避免引导时可用性的问题。另外,还可以在本地存储器中的单独的、由磁盘集控制的名称空间中方便地管理与光纤网络连接的存储器。