通过使用本附录中的过程以及"规划卷管理"中的规划信息为 Solstice DiskSuite 软件安装和配置您的本地和多主机磁盘。有关详细信息,请参阅 Solstice DiskSuite 文档。
本附录中包含下列过程。
存储磁盘驱动器的映射。
《Sun Cluster 3.0 发行说明》中下列已完成的配置规划工作表。有关规划指南的信息,请参阅"规划卷管理"。
"本地文件系统布局工作表"
"磁盘设备组配置工作表"
"卷管理器配置工作表"
"元设备工作表 (Solstice DiskSuite)"
下表列出了为 Sun Cluster 配置而安装和配置 Solstice DiskSuite 软件所要执行的任务。
如果您已使用 SunPlex Manager 安装 Solstice DiskSuite 软件,则"如何安装 Solstice DiskSuite 软件"至"如何创建元设备状态数据库复本"过程均已完成。
任务 |
有关说明,请转到... |
---|---|
规划 Solstice DiskSuite 配置的布局。 | |
安装 Solstice DiskSuite 软件。 | |
计算配置所需的元设备名称数和磁盘集数,并修改 /kernel/drv/md.conf 文件。 | |
在本地磁盘中创建元设备状态数据库复本。 | |
(可选)镜像根磁盘上的文件系统。 | |
使用 metaset 命令创建磁盘集。 | |
将磁盘驱动器添加到磁盘集中。 | |
为磁盘集中的驱动器重新分区,以便为第 1 至 6 片分配空间。 | |
列出设备 ID 伪驱动程序映射并在 /etc/lvm/md.tab 文件中定义元设备。 | |
初始化 md.tab 文件。 | |
对于双串配置,请配置调解器主机,检查调解器数据的状态并在必要时修正错误的调解器数据。 | |
配置群集。 |
下面的示例有助于解释在使用 Solstice DiskSuite 软件时,确定在每个磁盘集中放置多少磁盘这一过程。在该示例中,使用了三个存储设备,现有的应用程序在 NFS(两个文件系统,各为 5 千兆字节)和两个 ORACLE 数据库(一个 5 千兆字节,另一个 10 千兆字节)上运行。
下表显示用于确定样例配置中所需驱动程序数目的计算结果。 如果有三个存储设备,则可能需要 28 个驱动器,应在这三个存储设备之间尽可能均匀地分配这些驱动器。 注意,给 5 GB 文件系统额外提供 1 GB 的磁盘空间,因为所需的磁盘数是上舍入得出的。
表 A-2 确定配置所需的驱动器
使用 |
数据 |
所需的磁盘存储器 |
所需的驱动器 |
---|---|---|---|
nfs1 |
5 GB |
3x2.1 GB 磁盘 * 2 (镜像) |
6 |
nfs2 |
5 GB |
3x2.1 GB 磁盘 * 2 (镜像) |
6 |
oracle1 |
5 GB |
3x2.1 GB 磁盘 * 2 (镜像) |
6 |
oracle2 |
10 GB |
5x2.1 GB 磁盘 * 2 (镜像) |
10 |
下表显示在两个磁盘集和四个数据服务之间分配驱动器。
表 A-3 磁盘集的划分
磁盘集 |
数据服务 |
磁盘 |
存储设备 1 |
存储设备 2 |
存储设备 3 |
---|---|---|---|---|---|
dg-schost-1 |
nfs1/oracle1 |
12 |
4 |
4 |
4 |
dg-schost-2 |
nfs2/oracle2 |
16 |
5 |
6 |
5 |
最初,每个存储设备上的四个磁盘(总共 12 个磁盘)分配给 dg-schost-1,而每个存储设备上的五个或六个磁盘(总共 16 个磁盘)分配给 dg-schost-2。
两个磁盘集均未分配任何热备用磁盘。 每个磁盘集的每个存储设备至少有一个热备用磁盘,就可以使一个驱动器成为热备用的(恢复完全双向镜像)。
如果已使用 SunPlex Manager 安装 Solstice DiskSuite 软件,则不要执行该过程。而应转到"镜像根磁盘"。
对群集中的每个节点执行该任务。
成为群集节点的超级用户。
如果从 CD-ROM 安装,请将 Solaris 8 Software 2 of 2 CD-ROM 插入节点的 CD-ROM 驱动器。
该步骤假定卷管理守护程序 vold(1M) 正在运行并且配置成管理 CD-ROM 设备。
安装 Solstice DiskSuite 软件包。
如果需要安装 Solstice DiskSuite 软件修补程序,则在安装 Solstice DiskSuite 软件之后不要重新引导。
以下面示例中显示的顺序安装软件包。
# cd /cdrom/sol_8_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1/sparc/Packages # pkgadd -d . SUNWmdr SUNWmdu [SUNWmdx] optional-pkgs |
SUNWmdr 和 SUNWmdu 软件包是所有 Solstice DiskSuite 安装所必需的。SUNWmdx 软件包也是 64 位 Solstice DiskSuite 安装所必需的。
有关可选软件包的信息,请参阅 Solstice DiskSuite 安装文档。
如果从 CD-ROM 安装,请弹出 CD-ROM。
安装任何 Solstice DiskSuite 修补程序。
有关修补程序的位置和安装说明,请参阅《Sun Cluster 3.0 12/01 发行说明》。
从群集中的一个节点上,手动为 Solstice DiskSuite 输入全局设备名称空间。
# scgdevs |
设置群集中的元设备名称和磁盘集的期望数目。
如果已使用 SunPlex Manager 安装 Solstice DiskSuite 软件,则不要执行该过程。而应转到"镜像根磁盘"。
此过程说明如何计算配置所需的元设备名称的数量,以及如何修改 /kernel/drv/md.conf 文件。
每个磁盘集的元设备名称的缺省数目是 128,但许多配置需要的数目要大于该缺省数目。 着手配置前请增大这个数目,以便节省今后管理的时间。
计算群集中任一磁盘集所需的元设备名称的最大数目。
每个磁盘集最多可有 8192 个元设备名称。 您需要在 nmd 字段中提供这个计算值。
计算每个磁盘集所需的元设备名称的数量。
如果使用本地元设备,需确保每个本地元设备名称在整个群集内都唯一,不与该群集内的任何设备 ID (DID) 同名。
选择专用于 DID 名称的数值范围,以及供每个节点专用于其本地元设备名称的数值范围。 例如,DID 可以使用范围在 d1 到 d1000 之间的名称;节点 1 上的本地元设备可以使用范围在 d1100 到 d1199 之间的名称;而节点 2 上的本地元设备可以使用范围在 d1200 到 d1299 之间的名称,依此类推。
确定要在任何磁盘集中使用的元设备名称的最大数目。
要设置的元设备名称的数量取决于元设备名称的值,而不是实际数量。例如,如果元设备名称范围在 d950 到 d1000 之间,则 Solstice DiskSuite 软件需要 1000 个名称,而不是 50 个。
群集中的每个磁盘集最多可以有 8192 个元设备名称。
计算群集中磁盘集的总预期数,然后为专用磁盘管理添加一个磁盘集。 群集最多可以有 32 个磁盘集。 缺省的磁盘集数为 4 个。您需要在 md_nsets 字段中提供这个计算值。
在每个节点上编辑 /kernel/drv/md.conf 文件。
所有群集节点(或群集对拓扑中的群集对)必须具有完全相同的 /kernel/drv/md.conf 文件,而不管每个节点向多少个磁盘集提供服务。不按本指南操作可能会导致严重的 Solstice DiskSuite 错误并且可能丢失数据。
在每个节点上,执行重配置后的重新引导。
# touch /reconfigure # shutdown -g0 -y -i6 |
在执行了重配置后的重新引导之后,对 /kernel/drv/md.conf 文件所作的更改方可生效。
创建本地复本。
如果已使用 SunPlex Manager 安装 Solstice DiskSuite 软件,则不要执行此过程。而应转到"镜像根磁盘"。
对群集中的每个节点执行该过程。
成为群集节点的超级用户。
使用 metadb 命令在一个或多个本地磁盘上为每个群集节点创建复本。
有关详细信息,请参阅 metadb(1M) 手册页和 Solstice DiskSuite 文档。
要为元设备状态数据提供保护(这是运行 Solstice DiskSuite 软件所必需的),则至少为每个节点创建三个复本。此外,将复本放在多个磁盘上可在其中的一个磁盘出现故障时免遭损失。
检验复本。
# metadb |
是否打算镜像根磁盘上的文件系统?
下面的示例显示了三个元设备状态数据库复本,每个都创建于不同的磁盘。
# metadb -af c0t0d0s7 c0t1d0s7 c1t0d0s7 # metadb flags first blk block count a u 16 1034 /dev/dsk/c0t0d0s7 a u 1050 1034 /dev/dsk/c0t1d0s7 a u 2084 1034 /dev/dsk/c1t0d0s7 |
镜像根磁盘可防止因系统磁盘故障而关闭群集节点。 四种类型的文件系统可驻留在根磁盘中。 文件系统类型的镜像方法各不相同。
这些镜像过程中的某些步骤可能会导致类似于下面的错误消息,这种消息不会造成损害,因而可以忽略。
metainit: dg-schost-1: d1s0: not a metadevice |
对于本地磁盘镜像,在指定磁盘名称时不要将 /dev/global 用作路径。如果为非群集文件系统的系统指定了该路径,系统将无法引导。
使用此过程来镜像根 (/) 文件系统。
成为群集中一个节点上的超级用户。
使用 metainit(1M) 命令将根盘片置于一个单盘片(单向)并置中。
使用该根盘片的物理磁盘名称 (cNtXdYsZ)。
# metainit -f submirror1 1 1 root-disk-slice |
创建第二个并置。
# metainit -f submirror2 1 1 submirror-disk-slice |
创建具有一个子镜像的单向镜像。
# metainit mirror -m submirror1 |
镜像的元设备名称在整个群集中必须是唯一的。
运行 metaroot(1M) 命令。
此命令编辑 /etc/vfstab 和 /etc/system 文件,以便可以通过元设备上的根 (/) 文件系统来引导系统。
# metaroot mirror |
运行 lockfs(1M) 命令。
该命令清理日志中的所有事务,并将这些事务写入所有已安装的 UFS 文件系统上的主文件系统中。
# lockfs -fa |
从节点中清空任何资源组或设备组。
# scswitch -S -h node |
清空所有资源组和设备组
指定要从中清空资源或设备组的节点的名称
重新引导该节点。
# shutdown -g0 -y -i6 |
使用 metattach(1M) 命令将第二个子镜像连接到镜像。
# metattach mirror submirror2 |
如果将用来镜像根磁盘的磁盘物理连接到多个节点(多端口连接),请启用用来镜像根磁盘的磁盘的原始磁盘设备组的 localonly 特性。
如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。
如果需要,可以使用 scdidadm -L 命令来显示原始磁盘设备组的完整设备 ID (DID) 伪驱动程序名称。
在下面的示例中,原始磁盘设备组名称 dsk/d2 是输出的第三列(即完整的 DID 伪驱动程序名称)的一部分。
# scdidadm -L ... 1 phys-schost-3:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 # scconf -c -D name=dsk/d2,localonly=true |
有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。
查看原始磁盘设备组的节点列表。
输出类似于以下内容,其中 N 是 DID 号。
# scconf -pvv | grep dsk/dN Device group name: dsk/dN ... (dsk/dN) Device group node list: phys-schost-1, phys-schost-3 ... |
节点列表是否包含多个节点名称?
从原始磁盘设备组的节点列表中删除所有节点,其根磁盘已镜像的节点除外。
仅在节点列表中保留其根磁盘已镜像的那个节点。
# scconf -r -D name=dsk/dN,nodelist=node |
给原始磁盘设备组指定群集范围内唯一的名称
指定要从节点列表中删除的节点的名称
使用 scconf(1M) 命令来启用 localonly 特性。
启用了 localonly 特性后,该原始磁盘设备组就由其节点列表中的节点专用。如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。
# scconf -c -D name=rawdisk-groupname,localonly=true |
指定原始磁盘设备组的名称
记录备用引导路径以供将来使用。
# ls -l /dev/rdsk/root-disk-slice |
确保镜像的每个元设备名称在整个群集中是唯一的。
是否要镜像全局名称空间 /global/.devices/node@nodeid?
如果是,则转到"如何镜像全局名称空间"。
否则转到步骤 14。
是否打算镜像无法卸装的文件系统?
如果是,则转到"如何镜像不能卸载的文件系统"。
否 则转到步骤 15。
是否打算镜像用户定义的文件系统?
如果是,则转到"如何镜像用户定义的文件系统"。
否则,转到"如何创建磁盘集"创建磁盘集。
下面的示例显示了在节点 phys-schost-1 上创建镜像 d0 的过程,该镜像由分区 c0t0d0s0 上的子镜像 d10 和分区 c2t2d0s0 上的子镜像 d20 组成。磁盘 c2t2d0 是一个多端口磁盘,所以启用了 localonly 特性。
(创建镜像) # metainit -f d10 1 1 c0t0d0s0 d11: Concat/Stripe is setup # metainit -f d20 1 1 c2t2d0s0 d12: Concat/Stripe is setup # metainit d0 -m d10 d10: Mirror is setup # metaroot d0 # lockfs -fa (重新引导节点) # scswitch -S -h phys-schost-1 # shutdown -g0 -y -i6 (连接第二个子镜像) # metattach d0 d20 d0: Submirror d20 is attached (显示镜像磁盘的原始磁盘设备组的节点列表) # scconf -pvv | grep dsk/d2 Device group name: dsk/d2 ... (dsk/d2) Device group node list: phys-schost-1, phys-schost-3 ... (从原始磁盘设备组的节点列表中删除 phys-schost-3) # scconf -r -D name=dsk/d2,nodelist=phys-schost-3 (启用已镜像磁盘的原始磁盘设备组的 localonly 特性) # scconf -c -D name=dsk/d2,localonly=true (记录备用引导路径) # ls -l /dev/rdsk/c2t2d0s0 lrwxrwxrwx 1 root root 57 Apr 25 20:11 /dev/rdsk/c2t2d0s0 -> ../../devices/node@1/pci@1f,0/pci@1/scsi@3,1/disk@2,0:a,raw |
使用此过程来镜像全局名称空间 /global/.devices/node@nodeid。
成为群集中一个节点上的超级用户。
将全局名称空间盘片置于单盘片(单向)并置中。
使用磁盘片的物理磁盘名称 (cNtXdYsZ)。
# metainit -f submirror1 1 1 diskslice |
创建第二个并置。
# metainit -f submirror2 1 1 submirror-diskslice |
创建具有一个子镜像的单向镜像。
# metainit mirror -m submirror1 |
镜像的元设备名称在整个群集中必须是唯一的。
将第二个子镜像连接到镜像中。
这一连接操作会启动子镜像的同步。
# metattach mirror submirror2 |
编辑 /global/.devices/node@nodeid 文件系统的 /etc/vfstab 文件项。
用镜像名称替换 device to mount 和 device to fsck 列中的名称。
# vi /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/md/dsk/mirror /dev/md/rdsk/mirror /global/.devices/node@nodeid ufs 2 no global |
确保镜像的每个元设备名称在整个群集中是唯一的。
等待在步骤 5中启动的镜像同步完成。
使用 metastat(1M) 命令查看镜像状态。
# metastat mirror |
如果将用来镜像全局名称空间的磁盘物理连接到多个节点(多端口连接),请启用用来镜像全局名称空间的磁盘的原始磁盘设备组的 localonly 特性。
如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。
如果需要,可以使用 scdidadm -L 命令来显示原始磁盘设备组的完整设备 ID (DID) 伪驱动程序名称。
在下面的示例中,原始磁盘设备组名称 dsk/d2 是输出的第三列(即完整的 DID 伪驱动程序名称)的一部分。
# scdidadm -L ... 1 phys-schost-3:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 # scconf -c -D name=dsk/d2,localonly=true |
有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。
查看原始磁盘设备组的节点列表。
输出类似于以下内容,其中 N 是 DID 号。
# scconf -pvv | grep dsk/dN Device group name: dsk/dN ... (dsk/dN) Device group node list: phys-schost-1, phys-schost-3 ... |
节点列表是否包含多个节点名称?
从原始磁盘设备组的节点列表中删除所有节点,其根磁盘已镜像的节点除外。
仅在节点列表中保留其根磁盘已镜像的那个节点。
# scconf -r -D name=dsk/dN,nodelist=node |
给原始磁盘设备组指定群集范围内唯一的名称
指定要从节点列表中删除的节点的名称
使用 scconf(1M) 命令来启用 localonly 特性。
启用了 localonly 特性后,该原始磁盘设备组就由其节点列表中的节点专用。如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。
# scconf -c -D name=rawdisk-groupname,localonly=true |
指定原始磁盘设备组的名称
是否打算镜像无法卸装的文件系统?
如果是,则转到"如何镜像不能卸载的文件系统"。
否则转到步骤 11。
是否打算镜像用户定义的文件系统?
如果是,则转到"如何镜像用户定义的文件系统"。
否则,转到"如何创建磁盘集"创建磁盘集。
下面的示例显示了创建镜像 d101 的过程,该镜像由分区 c0t0d0s3 上的子镜像 d111 和分区 c2t2d0s3 上的子镜像 d121 组成。/global/.devices/node@1 的 /etc/vfstab 文件项被更新为使用镜像名称 d101。磁盘 c2t2d0 是一个多端口磁盘,所以启用了 localonly 特性。
(创建镜像) # metainit -f d111 1 1 c0t0d0s3 d111: Concat/Stripe is setup # metainit -f d121 1 1 c2t2d0s3 d121: Concat/Stripe is setup # metainit d101 -m d111 d101: Mirror is setup # metattach d101 d121 d101: Submirror d121 is attached (编辑 /etc/vfstab 文件) # vi /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/md/dsk/d101 /dev/md/rdsk/d101 /global/.devices/node@1 ufs 2 no global (查看同步状态) # metastat d101 d101: Mirror Submirror 0: d111 State: Okay Submirror 1: d121 State: Resyncing Resync in progress: 15 % done ... (检验已镜像磁盘的原始磁盘设备组的 DID 名称) # scdidadm -L ... 1 phys-schost-3:/dev/rdsk/c2t2d0 /dev/did/rdsk/d2 (显示镜像磁盘的原始磁盘设备组的节点列表) # scconf -pvv | grep dsk/d2 Device group name: dsk/d2 ... (dsk/d2) Device group node list: phys-schost-1, phys-schost-3 ... (从原始磁盘设备组的节点列表中删除 phys-schost-3) # scconf -r -D name=dsk/d2,nodelist=phys-schost-3 (启用已镜像磁盘的原始磁盘设备组的 localonly 特性) # scconf -c -D name=dsk/d2,localonly=true |
使用此过程来镜像在系统正常使用期间无法卸载的文件系统,如 /usr、/opt 或 swap。
成为群集中一个节点上的超级用户。
将无法卸载的文件系统驻留所在的盘片置于单盘片(单向)并置中。
使用磁盘片的物理磁盘名称 (cNtXdYsZ)。
# metainit -f submirror1 1 1 diskslice |
创建第二个并置。
# metainit -f submirror2 1 1 submirror-diskslice |
创建具有一个子镜像的单向镜像。
# metainit mirror -m submirror1 |
镜像的元设备名称在整个群集中不必是唯一的。
在每个节点上,为已镜像的每个无法卸装的文件系统编辑 /etc/vfstab 文件项。
用镜像名称替换 device to mount 和 device to fsck 列中的名称。
# vi /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/md/dsk/mirror /dev/md/rdsk/mirror /filesystem ufs 2 no global |
从节点中清空任何资源组或设备组。
# scswitch -S -h node |
清空所有资源组和设备组
指定要从中清空资源或设备组的节点的名称
重新引导该节点。
# shutdown -g0 -y -i6 |
将第二个子镜像连接到每个镜像。
这一连接操作会启动子镜像的同步。
# metattach mirror submirror2 |
等待在步骤 9中启动的镜像同步完成。
使用 metastat(1M) 命令查看镜像状态。
# metastat mirror |
如果将用来镜像无法卸载的文件系统的磁盘物理连接到多个节点(多端口连接),请启用用来镜像无法卸装的文件系统的磁盘的原始磁盘设备组的 localonly 特性。
如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。
如果需要,可以使用 scdidadm -L 命令来显示原始磁盘设备组的完整设备 ID (DID) 伪驱动程序名称。
在下面的示例中,原始磁盘设备组名称 dsk/d2 是输出的第三列(即完整的 DID 伪驱动程序名称)的一部分。
# scdidadm -L ... 1 phys-schost-3:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 # scconf -c -D name=dsk/d2,localonly=true |
有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。
查看原始磁盘设备组的节点列表。
输出类似于以下内容,其中 N 是 DID 号。
# scconf -pvv | grep dsk/dN Device group name: dsk/dN ... (dsk/dN) Device group node list: phys-schost-1, phys-schost-3 ... |
节点列表是否包含多个节点名称?
从原始磁盘设备组的节点列表中删除所有节点,其根磁盘已镜像的节点除外。
仅在节点列表中保留其根磁盘已镜像的那个节点。
# scconf -r -D name=dsk/dN,nodelist=node |
给原始磁盘设备组指定群集范围内唯一的名称
指定要从节点列表中删除的节点的名称
使用 scconf(1M) 命令来启用 localonly 特性。
启用了 localonly 特性后,该原始磁盘设备组就由其节点列表中的节点专用。如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。
# scconf -c -D name=rawdisk-groupname,localonly=true |
指定原始磁盘设备组的名称
是否打算镜像用户定义的文件系统?
如果是,则转到"如何镜像用户定义的文件系统"。
否则,转到"如何创建磁盘集"创建磁盘集。
下面的示例显示了在节点 phys-schost-1 上创建镜像 d1来镜像驻留在 c0t0d0s1 上的 /usr 的过程。镜像 d1 由分区 c0t0d0s1 上的子镜像 d11 和分区 c2t2d0s1 上的子镜像 d21 组成。/usr 的 /etc/vfstab 文件项被更新为使用镜像名称 d1。磁盘 c2t2d0 是一个多端口磁盘,所以启用了 localonly 特性。
(创建镜像) # metainit -f d11 1 1 c0t0d0s1 d11: Concat/Stripe is setup # metainit -f d21 1 1 c2t2d0s1 d21: Concat/Stripe is setup # metainit d1 -m d11 d1: Mirror is setup (编辑 /etc/vfstab 文件) # vi /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/md/dsk/d1 /dev/md/rdsk/d1 /usr ufs 2 no global (重新引导节点) # scswitch -S -h phys-schost-1 # shutdown -g0 -y -i6 (连接第二个子镜像) # metattach d1 d21 d1: Submirror d21 is attached (查看同步状态) # metastat d1 d1: Mirror Submirror 0: d11 State: Okay Submirror 1: d21 State: Resyncing Resync in progress: 15 % done ... (检验已镜像磁盘的原始磁盘设备组的 DID 名称) # scdidadm -L ... 1 phys-schost-3:/dev/rdsk/c2t2d0 /dev/did/rdsk/d2 (显示镜像磁盘的原始磁盘设备组的节点列表) # scconf -pvv | grep dsk/d2 Device group name: dsk/d2 ... (dsk/d2) Device group node list: phys-schost-1, phys-schost-3 ... (从原始磁盘设备组的节点列表中删除 phys-schost-3) # scconf -r -D name=dsk/d2,nodelist=phys-schost-3 (启用已镜像磁盘的原始磁盘设备组的 localonly 特性) # scconf -c -D name=dsk/d2,localonly=true |
使用此过程镜像用户定义的文件系统。 在此过程中,不需要重新引导节点。
成为群集中一个节点上的超级用户。
将用户定义的文件系统所驻留的盘片置于单盘片(单向)并置中。
使用磁盘片的物理磁盘名称 (cNtXdYsZ)。
# metainit -f submirror1 1 1 diskslice |
创建第二个并置。
# metainit -f submirror2 1 1 submirror-diskslice |
创建具有一个子镜像的单向镜像。
# metainit mirror -m submirror1 |
镜像的元设备名称在整个群集中不必是唯一的。
在每个节点中,为已镜像的每个用户定义的文件系统编辑 /etc/vfstab 文件项。
用镜像名称替换 device to mount 和 device to fsck 列中的名称。
# vi /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/md/dsk/mirror /dev/md/rdsk/mirror /filesystem ufs 2 no global |
将第二个子镜像连接到镜像中。
这一连接操作会启动子镜像的同步。
# metattach mirror submirror2 |
等待在步骤 7中启动的镜像同步完成。
使用 metastat(1M) 命令查看镜像状态。
# metastat mirror |
如果将用来镜像用户定义的文件系统的磁盘物理连接到多个节点(多端口连接),则启用用来镜像用户定义的文件系统的磁盘的原始磁盘设备组的 localonly 特性。
如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。
如果需要,可以使用 scdidadm -L 命令来显示原始磁盘设备组的完整设备 ID (DID) 伪驱动程序名称。
在下面的示例中,原始磁盘设备组名称 dsk/d4 是输出的第三列(即完整的 DID 伪驱动程序名称)的一部分。
# scdidadm -L ... 1 phys-schost-3:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 # scconf -c -D name=dsk/d2,localonly=true |
有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。
查看原始磁盘设备组的节点列表。
输出类似于以下内容,其中 N 是 DID 号。
# scconf -pvv | grep dsk/dN Device group name: dsk/dN ... (dsk/dN) Device group node list: phys-schost-1, phys-schost-3 ... |
节点列表是否包含多个节点名称?
从原始磁盘设备组的节点列表中删除所有节点,其根磁盘已镜像的节点除外。
仅在节点列表中保留其根磁盘已镜像的那个节点。
# scconf -r -D name=dsk/dN,nodelist=node |
给原始磁盘设备组指定群集范围内唯一的名称
指定要从节点列表中删除的节点的名称
使用 scconf(1M) 命令来启用 localonly 特性。
启用了 localonly 特性后,该原始磁盘设备组就由其节点列表中的节点专用。如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。
# scconf -c -D name=rawdisk-groupname,localonly=true |
指定原始磁盘设备组的名称
创建磁盘集。
转到"如何创建磁盘集"。
下面的示例显示了创建镜像 d4 以镜像驻留在 c0t0d0s4 上的 /home 的过程。镜像 d4 由分区 c0t0d0s4 上的子镜像 d14 和分区 c2t2d0s4 上的子镜像 d24 组成。/home 的 /etc/vfstab 文件项被更新为使用镜像名称 d4。磁盘 c2t2d0 是一个多端口磁盘,所以启用了 localonly 特性。
(创建镜像) # metainit -f d14 1 1 c0t0d0s4 d14: Concat/Stripe is setup # metainit -f d24 1 1 c2t2d0s4 d24: Concat/Stripe is setup # metainit d4 -m d14 d4: Mirror is setup (编辑 /etc/vfstab 文件) # vi /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/md/dsk/d4 /dev/md/rdsk/d4 /home ufs 2 no global (连接第二个子镜像) # metattach d4 d24 d4: Submirror d24 is attached (查看同步状态) # metastat d4 d4: Mirror Submirror 0: d14 State: Okay Submirror 1: d24 State: Resyncing Resync in progress: 15 % done ... (检验已镜像磁盘的原始磁盘设备组的 DID 名称) # scdidadm -L ... 1 phys-schost-3:/dev/rdsk/c2t2d0 /dev/did/rdsk/d2 (显示镜像磁盘的原始磁盘设备组的节点列表) # scconf -pvv | grep dsk/d2 Device group name: dsk/d2 ... (dsk/d2) Device group node list: phys-schost-1, phys-schost-3 ... (从原始磁盘设备组的节点列表中删除 phys-schost-3) # scconf -r -D name=dsk/d2,nodelist=phys-schost-3 (启用已镜像磁盘的原始磁盘设备组的 localonly 特性) # scconf -c -D name=dsk/d2,localonly=true |
为每个创建的磁盘集执行此过程。
如果已使用 SunPlex Manager 安装 Solstice DiskSuite,则可能已经存在一至三个磁盘集。有关由 SunPlex Manager 创建的元集的信息,请参阅"使用 SunPlex Manager 安装 Sun Cluster 软件"。
确保您打算创建的磁盘集符合以下要求之一。
如果正好用两个磁盘串来进行配置,则磁盘集必须正好与两个节点连接并且正好使用两个调解器主机,这两个主机必须是用于该磁盘集那两个主机。 有关如何设置调解器的详细信息,请参阅"调解器概述"。
如果用两个以上的磁盘串来进行配置,则确保对于任何两个磁盘串 S1 和 S2,这些串的磁盘数总和超出第三个串 S3 的磁盘数目。 如果用公式表示,则该要求为 count(S1) + count(S2) > count(S3)。
确保 root 是组 14 的一个成员。
# vi /etc/group ... sysadmin::14:root ... |
确保有本地元设备状态数据库的复本。
有关说明,请参阅"如何创建元设备状态数据库复本"。
成为将主控磁盘集的群集节点的超级用户。
创建磁盘集。
该命令还将该磁盘集注册为 Sun Cluster 磁盘设备组。
# metaset -s setname -a -h node1 node2 |
指定磁盘集名称
添加(创建)磁盘集
指定将主控磁盘集的主节点的名称
指定将主控磁盘集的辅助节点的名称
检验新磁盘集的状态。
# metaset -s setname |
将驱动器添加到磁盘集内。
转到"向磁盘集添加驱动器"。
下面的命令创建两个磁盘集:dg-schost-1 和 dg-schost-2;此处的节点 phys-schost-1 和 phys-schost-2 指派为可能的主节点。
# metaset -s dg-schost-1 -a -h phys-schost-1 phys-schost-2 # metaset -s dg-schost-2 -a -h phys-schost-1 phys-schost-2 |
将磁盘驱动器添加到磁盘集时,Solstice DiskSuite 按照以下方法对它进行重新分区,以便磁盘集的元设备状态数据库可以存放到该驱动器上。
每个驱动器有一小部分保留在第 7 片中供 Solstice DiskSuite 软件使用。 每个驱动器的剩余空间放在第 0 片中。
只有在第 7 片未正确设置的情况下,才在将驱动器添加到磁盘集时对驱动器进行重新分区。
重新分区时将丢失磁盘中的所有现有数据。
如果第 7 片从 0 柱面开始,磁盘的大小又足以包含一个状态数据库复本,则不对该磁盘进行重新分区。
成为节点的超级用户。
确保已创建磁盘集。
有关说明,请参阅"如何创建磁盘集"。
列出设备 ID (DID) 映射。
# scdidadm -L |
选择将主控或可能主控磁盘集的群集节点共享的驱动器。
为磁盘集添加驱动器时,请使用完整的 DID 伪驱动程序名称。
输出的第一列是 DID 实例编号,第二列是完整路径(物理路径),第三列是完整的 DID 伪驱动程序名称(伪路径)。 对于相同的 DID 实例编号,共享驱动器具有多个项。
在下面的示例中,DID 实例编号为 2 的项指示一个由 phys-schost-1 和 phys-schost-2 共享的驱动器,完整的 DID 名称为 /dev/did/rdsk/d2。
1 phys-schost-1:/dev/rdsk/c0t0d0 /dev/did/rdsk/d1 2 phys-schost-1:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 2 phys-schost-2:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 3 phys-schost-1:/dev/rdsk/c1t2d0 /dev/did/rdsk/d3 3 phys-schost-2:/dev/rdsk/c1t2d0 /dev/did/rdsk/d3 ... |
获取磁盘集的所有权。
# metaset -s setname -t |
指定磁盘集名称
获取磁盘集的所有权
将驱动器添加到磁盘集中。
使用完整的 DID 伪驱动程序名称。
# metaset -s setname -a DIDname |
将磁盘驱动器添加到磁盘集
共享磁盘的设备 ID (DID) 名称
向磁盘集添加驱动器时,请不要使用低级别设备名称 (cNtXdY)。因为低级别设备名称是本地名称,并且在群集中不是唯一的,使用该名称可能使元集合不能切换。
检验磁盘集和驱动器的状态。
# metaset -s setname |
是否打算对驱动器进行重新分区以便在元设备中使用?
如果是,则转到"如何对磁盘集内的驱动器重新分区"。
否则,转到"如何创建 md.tab 文件"使用 md.tab 文件定义元设备。
metaset 命令将磁盘驱动器 /dev/did/dsk/d1 和 /dev/did/dsk/d2 添加到磁盘集 dg-schost-1。
# metaset -s dg-schost-1 -a /dev/did/dsk/d1 /dev/did/dsk/d2 |
使用 metaset(1M) 命令可以对磁盘集内的驱动器重新分区,以便每个驱动器都有一小部分保留在第 7 片中供 Solstice DiskSuite 软件使用。每个驱动器的剩余空间放在第 0 片中。 为了更有效地利用磁盘,请使用此过程来修改磁盘布局。如果为第 1 至 6 片分配了空间,则可在设置元设备时使用这些片。
成为群集节点的超级用户。
使用 format(1M) 命令来更改磁盘集中每个驱动器的磁盘分区。
当对驱动器重新分区时,必须满足以下条件以防止 metaset(1M) 命令对磁盘进行重新分区。
创建分区 7,该分区以柱面 0 为起点,其容量足以容纳一个状态数据库复本(大约 2 兆字节)。
将第 7 片中的 Flag 字段设置为 wu(读-写,可卸载)。不要将其设置为只读。
不允许第 7 片重叠磁盘中的任何其他片。
有关详细信息,请参见 format(1M) 手册页。
使用 md.tab 文件定义元设备。
在群集中的每个节点上创建一个 /etc/lvm/md.tab 文件。使用 md.tab 文件来为您所创建的磁盘集定义元设备。
如果使用的是本地元设备,需确保本地元设备名称不同于用于构成磁盘集的设备 ID (DID) 名称。 例如,如果在磁盘集中使用了 DID 名称 /dev/did/dsk/d3,则不要将名称 /dev/md/dsk/d3 用于本地元设备。该要求不适用于共享元设备,共享元设备使用命名惯例 /dev/md/setname/{r}dsk/d#。
为避免在群集环境中可能产生的本地元设备之间的混淆,请使用一种可以使每个本地元设备名称在群集中都唯一的命名方案。 例如,为节点 1 选择 d100-d199 之间的名称,为节点 2 使用 d200-d299 之间的名称,依次类推。
成为群集节点的超级用户。
列出创建 md.tab 文件时要引用的 DID 映射。
在 md.tab 文件中使用完整 DID 伪驱动程序名称来代替较低级别的设备名称 (cNtXdY)。
# scdidadm -L |
在下面的示例中,输出的第一列是 DID 实例编号,第二列是完整路径(物理路径),第三列是完整的 DID 伪驱动程序名称(伪路径)。
1 phys-schost-1:/dev/rdsk/c0t0d0 /dev/did/rdsk/d1 2 phys-schost-1:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 2 phys-schost-2:/dev/rdsk/c1t1d0 /dev/did/rdsk/d2 3 phys-schost-1:/dev/rdsk/c1t2d0 /dev/did/rdsk/d3 3 phys-schost-2:/dev/rdsk/c1t2d0 /dev/did/rdsk/d3 ... |
创建一个 /etc/lvm/md.tab 文件并使用您首选的文本编辑器来手动编辑该文件。
有关如何创建 md.tab 文件的详细信息,请参阅 Solstice DiskSuite 文档和 md.tab(4) 手册页。
如果磁盘上现有的一些数据将用于子镜像,则必须先备份这些数据,再设置元设备,之后还要将这些数据恢复到镜像上。
激活在 md.tab 文件中定义的元设备。
转到"如何激活元设备"。
下面的 md.tab 文件样例定义了名为 dg-schost-1 的磁盘集的元设备。md.tab 文件中各行的顺序并不重要。
dg-schost-1/d0 -t dg-schost-1/d1 dg-schost-1/d4 dg-schost-1/d1 -m dg-schost-1/d2 dg-schost-1/d2 1 1 /dev/did/rdsk/d1s4 dg-schost-1/d3 1 1 /dev/did/rdsk/d55s4 dg-schost-1/d4 -m dg-schost-1/d5 dg-schost-1/d5 1 1 /dev/did/rdsk/d3s5 dg-schost-1/d6 1 1 /dev/did/rdsk/d57s5 |
md.tab 文件样例的结构如下。
第一行将 trans 元设备 d0 定义成由一个主 (UFS) 元设备 d1 和一个日志设备 d4 组成。-t 表示这是一个 trans 元设备。主设备和日志设备是通过它们在 -t 标志之后的位置来指定的。
dg-schost-1/d0 -t dg-schost-1/d1 dg-schost-1/d4 |
第二行将主设备定义为元设备的镜像。 此定义中的 -m 指示一个镜像设备,其中一个子镜像 d2 与镜像设备 d1 相关联。
dg-schost-1/d1 -m dg-schost-1/d2 |
同样第五行将日志设备 d4 定义为元设备的镜像。
dg-schost-1/d4 -m dg-schost-1/d5 |
第三行将主设备的第一个子镜像 d2 定义为一个单向条带。
dg-schost-1/d2 1 1 /dev/did/rdsk/d1s4 |
第四行定义主设备的第二个子镜像 d3。
dg-schost-1/d3 1 1 /dev/did/rdsk/d55s4 |
最后,定义日志设备子镜像 d5 和 d6。在该示例中,为每个子镜像创建了简单的元设备。
dg-schost-1/d5 1 1 /dev/did/rdsk/d3s5 dg-schost-1/d6 1 1 /dev/did/rdsk/d57s5 |
执行此过程来激活在 md.tab 文件中定义的元设备。
成为群集节点的超级用户。
确保 md.tab 文件位于 /etc/lvm 目录中。
确保您对将要执行命令的节点上的磁盘集具有所有权。
获取磁盘集的所有权。
# metaset -s setname -t |
指定磁盘集名称
获取磁盘集的所有权
激活该磁盘集的元设备,这些元设备是在 md.tab 文件中定义的。
# metainit -s setname -a |
激活 md.tab 文件中的所有元设备
为每个主设备和日志设备连接第二个子镜像 (submirror2)。
当激活 md.tab 文件中的元设备时,只连接了主设备和日志设备的第一个子镜像 (submirror1),所以必须手动连接 submirror2。
# metattach mirror submirror2 |
如有必要,请从与磁盘连接的另一个节点运行 metainit (1M) 命令。 该步骤对于群集对拓扑是必需的,并非所有节点都能访问该拓扑中的磁盘。
检查元设备的状态。
# metastat -s setname |
有关详细信息,请参阅 metastat(1M) 手册页。
群集是否包含刚好用两个磁盘群组和两个节点配置的磁盘集?
如果是,则这些磁盘集需要调解器。 转到"调解器概述"以添加调解器主机。
否则,转到"如何添加群集文件系统"创建群集文件系统。
在下面的示例中,在 md.tab 文件中为磁盘集 dg-schost-1 定义的所有元设备均已激活。然后,主设备 dg-schost-1/d1 和日志设备 dg-schost-1/d4 的第二个子镜像也已激活。
# metainit -s dg-schost-1 -a # metattach dg-schost-1/d1 dg-schost-1/d3 # metattach dg-schost-1/d4 dg-schost-1/d6 |
调解器或调解器主机是存储调解器数据的群集节点。 调解器数据提供其他调解器的位置信息,并包含一个提交计数,该数字与存储在数据库复本中的提交计数完全相同。 该提交计数用于确认调解器数据与数据库复本中的数据是否同步。
对于正好配置有两个磁盘串和两个群集节点的所有 Solstice DiskSuite 磁盘集来说,调解器是必需的。磁盘串由一个磁盘群组、其物理磁盘、群组到节点的电缆以及接口适配卡组成。通过使用调解器,Sun Cluster 软件能够确保在双串配置中的单串失败的情况下仍能显示最当前的数据。下列规则适用于使用调解器的双串配置。
磁盘集必须正好用两个调解器主机来配置,并且这两个调解器主机必须是用于磁盘集的那两个群集节点。
磁盘集不能有两个以上的调解器主机。
不能为不满足双串和双主机标准的磁盘集配置调解器。
这些规则不要求整个群集刚好有两个节点。 而只要求这些具有两个磁盘串的磁盘集必须正好与两个节点连接。 这些规则之下允许有 N+1 群集和许多其他拓扑。
在您的配置需要调解器时执行此过程。
成为一个节点的超级用户,该节点当前主控着您要为其添加调解器主机的磁盘集。
运行 metaset(1M) 命令,将每个与磁盘集连接的节点添加为该磁盘集的调解器调解器。
# metaset -s setname -a -m mediator-host-list |
指定磁盘集名称
添加到磁盘集
指定将作为磁盘集的调解器主机添加的节点的名称
有关 metaset 命令中针对调解器的选项的详细信息,请参阅 mediator(7) 手册页。
检查调解器数据的状态。
下面的示例将节点 phys-schost-1 和 phys-schost-2 添加为磁盘集 dg-schost-1 的调解器主机。 这两个命令都从节点 phys-schost-1 运行。
# metaset -s dg-schost-1 -a -m phys-schost-1 # metaset -s dg-schost-1 -a -m phys-schost-2 |
按照"如何添加调解器主机"中的说明添加调解器调解器。
运行 medstat 命令。
# medstat -s setname |
指定磁盘集名称
有关详细信息,请参阅 medstat (1M) 手册页。
"Status" 字段中的值是否为 Bad?
如果是,转到"如何修正错误的调解器数据"以修复受影响的调解器主机。
否则,转到"如何添加群集文件系统"创建群集文件系统。
执行此过程以修复错误的调解器数据。
按照"如何检查调解器数据的状态"这个过程中的说明,确定带有错误调解器数据的调解器主机。
成为拥有受影响的磁盘集的节点的超级用户。
从所有受影响的磁盘集中删除带有错误调解器数据的调解器主机。
# metaset -s setname -d -m mediator-host-list |
指定磁盘集名称
从磁盘集中删除
指定要作为该磁盘集的调解器主机删除的节点的名称
恢复调解器主机。
# metaset -s setname -a -m mediator-host-list |
添加到磁盘集
指定将作为磁盘集的调解器主机添加的节点的名称
有关 metaset 命令中针对调解器的选项的详细信息,请参阅 mediator(7) 手册页。
创建群集文件系统。
转到"如何添加群集文件系统"。