Solaris Volume Manager 管理指南

第 18 章 磁盘集(概述)

本章提供有关磁盘集的概念性信息。有关执行相关任务的信息,请参见第 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 和 Oracle Real Application Clusters 软件的信息,请参见《Sun Cluster 软件安装指南(适用于 Solaris OS) 》和《用于 Oracle Real Application Clusters 的 Sun Cluster 数据服务指南(适用于 Solaris OS)》


Solaris Volume Manager 磁盘集管理

与本地磁盘集管理不同的是,您无需手动创建或删除磁盘集状态数据库。Solaris Volume Manager 会在磁盘集中的每个磁盘上放置一个状态数据库副本(在片 7 上),最多可在磁盘集中放置 50 个副本。

向磁盘集中添加磁盘时,Solaris Volume Manager 会在磁盘集上自动创建状态数据库副本。将磁盘收入磁盘集时,Solaris Volume Manager 可能会对磁盘重新分区,以便可将磁盘集的状态数据库副本置于磁盘上(请参见自动磁盘分区)。

驻留在磁盘集中的卷上的文件系统通常不会在引导时通过 /etc/vfstab 文件自动挂载。必要的 Solaris Volume Manager RPC 守护进程(rpc.metadrpc.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 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 必须满足以下条件:

如果现有分区表不满足这些条件,则 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。

图 18–1 磁盘集示例

图中显示两个主机如何通过共享磁盘集共享一些磁盘,并始终独占使用本地磁盘集中的其他磁盘。

磁盘集使用指南

使用磁盘集时,请考虑以下指南:

磁盘集中的异步共享存储

在以前的 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 还将报告光纤网络上的逻辑卷在引导时不可用。但是,通过向磁盘集添加存储器,然后使用磁盘集工具管理该存储器,可以避免引导时可用性的问题。另外,还可以在本地存储器中的单独的、由磁盘集控制的名称空间中方便地管理与光纤网络连接的存储器。