本节提供了安装和配置 Solstice DiskSuite/Solaris Volume Manager 软件的信息和过程。
下表列出了为 Sun Cluster 配置而安装和配置 Solstice DiskSuite/Solaris Volume Manager 软件所需执行的任务。 符合以下条件时可以跳过某些过程:
如果使用 SunPlex Manager 来安装 Solstice DiskSuite 软件 (Solaris 8),则如何安装 Solstice DiskSuite 软件 至如何创建状态数据库复本 已完成。 转到镜像根磁盘 或如何创建磁盘集 继续配置 Solstice DiskSuite 软件。
如果安装了 Solaris 9 软件,则 Solaris Volume Manager 已随之安装。 您可以从如何设置元设备或卷名称和磁盘集的数目 开始。
以下示例有助于解释确定每个磁盘集中放置的磁盘驱动器数目的过程。 本示例中使用了三个存储设备。 现有应用程序是在 NFS (大小均为 5 GB 的两个文件系统)上和两个 ORACLE 数据库(大小分别为 5 GB 和 10 GB)上运行的。
下表显示用于确定样例配置中所需磁盘驱动器数目的计算结果。 在包含三个存储设备的配置中,可能需要 28 个磁盘驱动器,这些磁盘驱动器应尽可能均匀分布在三个存储设备的每个设备中。 注意,由于所需的磁盘驱动器数是上舍入得出的,所以请为 5 GB 文件系统提供 1 GB 的附加磁盘空间。
表 3–2 确定配置所需的磁盘驱动器数
使用 |
数据 |
所需的磁盘存储器 |
所需的磁盘驱动器 |
---|---|---|---|
nfs1 |
5 GB |
3x2.1 GB 磁盘 * 2 (镜像) |
6 |
nfs2 |
5 GB |
3x2.1 GB 磁盘 * 2(镜像) |
6 |
SPARC: oracle1 |
5 GB |
3x2.1 GB 磁盘 * 2 (镜像) |
6 |
SPARC: oracle2 |
10 GB |
5x2.1 GB 磁盘 * 2 (镜像) |
10 |
下表显示在两个磁盘集和四个数据服务之间分配磁盘驱动器。
表 3–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 软件,请不要执行此过程。 而应该转到镜像根磁盘 。
如果安装了 Solaris 9 软件,则不要执行该过程。 Solaris Volume Manager 软件随 Solaris 9 软件安装。 而应该转到如何设置元设备或卷名称和磁盘集的数目 。
对群集中的每个节点执行该任务。
存储磁盘驱动器的映射。
下列完成的配置规划工作表。 有关规划指南的信息,请参阅规划卷管理 。
成为群集节点的超级用户。
如果从 CD-ROM 安装,请将 Solaris 8 Software 2 of 2 CD-ROM 放入节点的 CD-ROM 驱动器中。
该步骤假定卷管理守护程序 vold(1M) 正在运行并且配置成管理 CD-ROM 设备。
按照以下示例中显示的顺序安装 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 |
如果要安装 Solstice DiskSuite 软件修补程序,在安装 Solstice DiskSuite 软件之后不要重新引导。
所有 Solstice DiskSuite 安装都必需 SUNWmdr 和 SUNWmdu 软件包。 64 位 Solstice DiskSuite 安装还必需 SUNWmdx 软件包。
有关可选软件包的信息,请参阅 Solstice DiskSuite 安装文档。
如果从 CD-ROM 安装,请弹出 CD-ROM。
安装所有 Solstice DiskSuite 修补程序。
有关修补程序和安装说明的位置,请参阅《Sun Cluster 3.1 发行说明》中的“修补程序和所需的固件级别”。
从群集中的一个节点上,手动为 Solstice DiskSuite 输入全局设备名称空间。
# scgdevs |
设备忙,无法打开 /dev/rdsk/c0t6d0s2 检验设备 id |
如果列出的设备是 CD-ROM 设备,则可以安全地忽略该消息。
设置群集所需的元设备名称数和磁盘集数。
如果使用 SunPlex Manager 来安装 Solstice DiskSuite 软件,请不要执行此过程。 而应该转到镜像根磁盘 。
该过程介绍如何确定您的配置所需的 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷名和磁盘集的数目。 该过程还介绍如何通过修改 /kernel/drv/md.conf 文件指定这些数目。
每个磁盘集的元设备名称或卷名的缺省数目是 128,但许多配置需要的数目要大于该缺省数目。 着手配置前请增大这个数目,以便节省今后管理的时间。
同时,保持 nmd 字段和 md_nsets 字段的值尽可能低。 所有可能设备的内存结构由 nmd 和 md_nsets 确定,即使尚未创建这些设备。 为了获得最佳性能,应保持 nmd 和 md_nsets 的值仅比要使用的元设备或卷的数目略高一点。
准备好 磁盘设备组配置工作表。
确定希望群集中包含的磁盘集的总数,然后再添加一个磁盘集用于专用磁盘管理。
群集最多可以包含 32 个磁盘集,31 个磁盘集用于一般用途,外加一个磁盘集用于专用磁盘管理。 磁盘集的缺省数目为 4。 请在步骤 4 中为 md_nsets 字段输入此值。
确定对群集中任意磁盘集希望需要的最大元设备名称或卷名数目。
每个磁盘集最多可有 8192 个元设备名称或卷名。 您可以在步骤 4 中为 nmd 字段提供该值。
确定对每个磁盘集希望需要的元设备名称或卷名的数目。
如果使用本地元设备或卷,请确保每个本地元设备名称或卷名在整个群集内都唯一,不与该群集内的任何设备 ID 同名。
选择专用于设备 ID 名称的数值范围,以及供每个节点专用于其本地元设备名称或卷名的数值范围。 例如,设备 ID 名称可以使用的数值范围为 d1 到 d100。 节点 1 上的本地元设备或卷名称可以使用的数值范围为 d100 到 d199。 节点 2 上的本地元设备或卷名称可以使用的数值范围为 d200 到 d299。
确定在任意磁盘集中希望使用的元设备名称或卷名的最大值。
要设置的元设备名称或卷名的数量取决于元设备名称或卷名的值,而不是实际数量。 例如,如果元设备名称或卷名的范围在 d950 到 d1000,Solstice DiskSuite/Solaris Volume Manager 软件要求将该值设置为 1000 个名称,而不是 50 个。
在每个节点上,成为超级用户并编辑 /kernel/drv/md.conf 文件。
所有群集节点(或群集对拓扑中的群集对)必须具有相同的 /kernel/drv/md.conf 文件,无论每个节点服务的磁盘集数目有多少。 不按本指南操作可能会导致严重的 Solstice DiskSuite/Solaris Volume Manager 错误,并且可能丢失数据。
在每个节点上,执行重新配置后的重新引导。
# touch /reconfigure # shutdown -g0 -y -i6 |
对 /kernel/drv/md.conf 文件的更改将在执行重新配置后的重新引导后生效。
创建本地状态数据库复本。
转到如何创建状态数据库复本 。
如果使用 SunPlex Manager 来安装 Solstice DiskSuite 软件,请不要执行此过程。 而应该转到镜像根磁盘 。
对群集中的每个节点执行该过程。
成为群集节点的超级用户。
使用 metadb 命令在一个或多个本地磁盘上为每个群集节点创建状态数据库复本。
使用物理名称 (cNtXdYsZ),而不是设备 ID 名称 (dN) 来指定要使用的盘片。
# metadb -af slice-1 slice-2 slice-3 |
要为状态数据提供保护(这是运行 Solstice DiskSuite/Solaris Volume Manager 软件所必需的),则至少为每个节点创建三个复本。 此外,将复本放在多个磁盘上可在其中的一个磁盘出现故障时免遭损失。
有关详细信息,请参阅 metadb(1M) 手册页和 Solstice DiskSuite/Solaris Volume Manager 文档。
检验复本。
# metadb |
metadb 命令显示复本列表。
是否打算镜像根磁盘上的文件系统?
以下示例显示了三个 Solstice DiskSuite 状态数据库复本。 每个复本分别创建在不同的磁盘上。 对于 Solaris Volume Manager,复本的大小会更大。
# metadb -af c0t0d0s7 c0t1d0s7 c1t0d0s7 # metadb flags first blk block count a u 16 1034 /dev/dsk/c0t0d0s7 a u 16 1034 /dev/dsk/c0t1d0s7 a u 16 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 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 from-node |
清空所有资源组和设备组
指定从中清空资源组或设备组的节点的名称
重新引导该节点。
此命令重新装载新镜像的根 (/) 文件系统。
# shutdown -g0 -y -i6 |
使用 metattach(1M) 命令将第二个子镜像连接到镜像。
# metattach mirror submirror2 |
如果不是,请继续执行步骤 11。
如果是,请执行以下步骤,为用于镜像无法安装的文件系统的磁盘启用原始设备组的 localonly 特性。 如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。
如果需要,可以使用 scdidadm(1M) -L 命令来显示原始磁盘设备组的完整设备 ID 路径名称。
在以下示例中,原始磁盘设备组名称 dsk/d2 是输出的第三列(即完整的设备 ID 路径名称)的一部分。
# scdidadm -L … 1 phys-schost-3:/dev/rdsk/c1t1d0 /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 … |
节点列表是否包含多个节点名称?
从原始磁盘设备组的节点列表中删除所有节点,已镜像根磁盘的节点除外。
在节点列表中仅保留已镜像根磁盘的那个节点。
# scconf -r -D name=dsk/dN,nodelist=node |
指定原始磁盘设备组在群集范围内唯一的名称
指定要从节点列表中删除的节点的名称
使用 scconf(1M) 命令可以启用 localonly 特性。
启用 localonly 特性之后,该原始磁盘设备组将由节点列表中的节点专用。 如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。
# scconf -c -D name=rawdisk-groupname,localonly=true |
指定原始磁盘设备组的名称
有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。
如果主引导设备出现故障,可以通过这个备选引导设备引导。 有关备选引导设备的详细信息,请参阅 Solstice DiskSuite 4.2.1 User's Guide 中的 “Troubleshooting the System” 或 Solaris Volume Manager Administration Guide 中的 “Mirroring root (/) Special Considerations”。
# 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 d20 1 1 c2t2d0s0 d12: Concat/Stripe is setup # metainit d0 -m d10 d10: Mirror is setup # metaroot d0 # lockfs -fa (从 phys-schost-1 中清空资源组和设备组) # 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 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 |
用于镜像全局名称空间的磁盘是否物理连接到多个节点(多端口连接)?
如果不是,请继续执行步骤 10。
如果是,请执行以下步骤以启用用于镜像全局名称空间的磁盘的原始设备组的 localonly 特性。 如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。
如果需要,可以使用 scdidadm(1M) 命令来显示原始磁盘设备组的完整设备 ID 路径名称。
在以下示例中,原始磁盘设备组名称 dsk/d2 是输出的第三列(即完整的设备 ID 路径名称)的一部分。
# scdidadm -L … 1 phys-schost-3:/dev/rdsk/c1t1d0 /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 … |
节点列表是否包含多个节点名称?
从原始磁盘设备组的节点列表中删除所有节点,其磁盘已镜像的节点除外。
在节点列表中仅保留已镜像磁盘的那个节点。
# scconf -r -D name=dsk/dN,nodelist=node |
指定原始磁盘设备组在群集范围内唯一的名称
指定要从节点列表中删除的节点的名称
使用 scconf(1M) 命令可以启用 localonly 特性。
启用 localonly 特性之后,该原始磁盘设备组将由节点列表中的节点专用。 如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。
# scconf -c -D name=rawdisk-groupname,localonly=true |
指定原始磁盘设备组的名称
有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。
是否要镜像无法卸载的根文件系统 (/) 以外的文件系统?
如果是,请转到如何镜像无法卸载的根文件系统 (/) 以外的文件系统。
如果不是,请继续执行步骤 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 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 … (标识已镜像磁盘的原始磁盘设备组的设备 ID 名称) # 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 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 from-node |
清空所有资源组和设备组
指定要从中清空资源组或设备组的节点的名称
重新引导该节点。
# shutdown -g0 -y -i6 |
将第二个子镜像连接到每个镜像。
这一连接操作会启动子镜像的同步。
# metattach mirror submirror2 |
等待步骤 9 中启动的镜像同步完成。
使用 metastat(1M) 命令查看镜像状态以及检验镜像同步是否完成。
# metastat mirror |
用于镜像无法卸载的文件系统的磁盘是否物理连接到多个节点(多端口连接)?
如果不是,请继续执行步骤 12。
如果是,请执行以下步骤,为用于镜像无法安装的文件系统的磁盘启用原始设备组的 localonly 特性。 如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。
如果必要,使用 scdidadm -L 命令显示原始磁盘设备组的完整设备 ID 路径名称。
在下面的示例中,原始磁盘设备组名称 dsk/d2 是输出的第三列(即完整的磁盘 ID 路径名称)的一部分。
# scdidadm -L … 1 phys-schost-3:/dev/rdsk/c1t1d0 /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 … |
节点列表是否包含多个节点名称?
从原始磁盘设备组的节点列表中删除所有节点,其根磁盘已镜像的节点除外。
在节点列表中仅保留已镜像根磁盘的那个节点。
# scconf -r -D name=dsk/dN,nodelist=node |
指定原始磁盘设备组在群集范围内唯一的名称
指定要从节点列表中删除的节点的名称
使用 scconf(1M) 命令启用 localonly 属性。
启用 localonly 特性之后,该原始磁盘设备组将由节点列表中的节点专用。 如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。
# scconf -c -D name=rawdisk-groupname,localonly=true |
指定原始磁盘设备组的名称
有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。
是否打算镜像用户定义的文件系统?
如果是,则转到如何镜像无法卸载的文件系统。
否则转到如何创建磁盘集 以创建磁盘集。
下面的示例显示了在节点 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 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 (从 phys-schost-1 中清空资源组和设备组) # 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 … (标识已镜像磁盘的原始磁盘设备组的设备 ID 名称) # 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 |
使用该过程可以镜像无法卸载的用户定义文件系统。 在此过程中,不需要重新引导节点。
成为群集中一个节点上的超级用户。
卸载要镜像的文件系统。
确保文件系统中没有正在运行的进程。
# umount /mount-point |
有关详细信息,请参阅 umount(1M) 手册页和《System Administration Guide: Basic Administration》中的“Mounting and Unmounting File Systems”。
使可以卸载的用户定义文件系统所在的盘片处于单片(单向)并置状态。
指定磁盘片的物理磁盘名称 (cNtXdYsZ)。
# metainit -f submirror1 1 1 diskslice |
创建第二个并置。
# metainit 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 |
等待步骤 8 中启动的镜像同步完成。
使用 metastat(1M) 命令查看镜像状态。
# metastat mirror |
用于镜像用户定义文件系统的磁盘是否物理连接到多个节点(多端口连接)?
如果不是,请继续执行步骤 12。
如果是,则执行以下步骤, 为用于镜像用户定义的文件系统的磁盘启用原始设备组的 localonly 特性。 如果引导设备与多个节点连接,则必须启用 localonly 特性以防止意外地将节点与其引导设备隔开。
如果需要,可以使用 scdidadm -L 命令来显示原始磁盘设备组的完整设备 ID 路径名称。
在下面的示例中,原始磁盘设备组名称 dsk/d4 是输出的第三列(即完整的磁盘 ID 路径名称)的一部分。
# scdidadm -L … 1 phys-schost-3:/dev/rdsk/c1t1d0 /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 … |
节点列表是否包含多个节点名称?
从原始磁盘设备组的节点列表中删除所有节点,其根磁盘已镜像的节点除外。
节点列表中只应保留已镜像根磁盘的节点。
# scconf -r -D name=dsk/dN,nodelist=node |
指定原始磁盘设备组在群集范围内唯一的名称
指定要从节点列表中删除的节点的名称
使用 scconf(1M) 命令启用 localonly 属性。
启用 localonly 特性后,该原始磁盘设备组就由其节点列表中的节点专用。 如果引导设备与多个节点连接,则启用该特性可以防止意外地将节点与其引导设备隔开。
# scconf -c -D name=rawdisk-groupname,localonly=true |
指定原始磁盘设备组的名称
有关 localonly 特性的详细信息,请参阅 scconf_dg_rawdisk(1M) 手册页。
安装已镜像的文件系统。
# mount /mount-point |
有关详细信息,请参阅 mount(1M) 手册页和《System Administration Guide: Basic Administration》中的“Mounting and Unmounting File Systems”。
创建磁盘集。
转到如何创建磁盘集 。
下面的示例显示了创建镜像 d4 以镜像驻留在 c0t0d0s4 上的 /export 的过程。 镜像 d4 由分区 c0t0d0s4 上的子镜像 d14 和分区 c2t2d0s4 上的子镜像 d24 组成。 /export 的 /etc/vfstab 文件条目被更新为使用镜像名称 d4。 磁盘 c2t2d0 是一个多端口磁盘,所以启用了 localonly 特性。
(卸载文件系统) # umount /export (创建镜像) # metainit -f d14 1 1 c0t0d0s4 d14: Concat/Stripe is setup # metainit 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 /export 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 … (标识已镜像磁盘的院使磁盘设备组的设备 ID 名称) # 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 (装载文件系统) # mount /export |
为每个创建的磁盘集执行此过程。
如果使用 SunPlex Manager 来安装 Solstice DiskSuite,可能已经存在一个到三个磁盘集。 有关由 SunPlex Manager 创建的元集的信息,请参阅使用 SunPlex Manager 安装 Sun Cluster 软件 。
是否要在群集中创建三个以上的磁盘集?
确保将 md_nsets 变量的值设置得足够高,可以满足要在群集中创建的磁盘集的总数。
在群集的任何节点上,检查 /kernel/drv/md.conf 文件中的 md_nsets 变量的值。
如果群集中磁盘集的总数大于 md_nsets 的现有值减一,则在每个节点上将 md_nsets 的值增加到所需的值。
磁盘集的最大许可数为 md_nsets 的配置值减一。 md_nsets 可能的最大值是 32。
确保 /kernel/drv/md.conf 文件在群集的每个节点上都完全相同。
不按本指南操作可能会导致严重的 Solstice DiskSuite/Solaris Volume Manager 错误,并且可能丢失数据。
从一个节点,关闭群集。
# scshutdown -g0 -y |
重新引导群集的每个节点。
ok> boot |
在群集的每个节点上,运行 devfsadm(1M) 命令。
您可以同时在群集的所有节点上运行此命令。
从群集的一个节点,运行 scgdevs(1M) 命令更新全局设备名称空间。
在每个节点上,在尝试创建任何磁盘集之前,检验 scgdevs 命令是否已完成处理。
scgdevs 命令在所有节点上远程调用其自身,即使仅从一个节点运行该命令也是如此。 要确定 scgdevs 命令是否已完成处理过程,请在群集的每个节点上运行以下命令。
% ps -ef | grep scgdevs |
确保您打算创建的磁盘集符合以下要求之一。
如果正好用两个磁盘串配置磁盘集,则磁盘集必须正好与两个节点连接并且正好使用两个调解器主机,这两个主机必须是用于该磁盘集的那两个主机。 有关如何配置双串调解器的详细信息,请参阅配置双串调解器 。
如果用两个以上磁盘串配置磁盘集,确保对于任何两个磁盘串 S1 和 S2,这些串上的磁盘驱动器的数目总和超过第三串 S3 上的磁盘驱动器数目。用公式表达此要求即为 count(S1) + count(S2) > count(S3)。
确保有本地状态数据库的复本。
有关说明,请参阅如何创建状态数据库复本 。
成为将主控磁盘集的群集节点的超级用户。
创建磁盘集。
以下命令用于创建磁盘集并将其注册为 Sun Cluster 磁盘设备组。
# metaset -s setname -a -h node1 node2 |
指定磁盘集名称
添加(创建)磁盘集
指定将主控磁盘集的主节点的名称
指定将主控磁盘集的辅助节点的名称
运行 metaset 命令配置群集上的 Solstice DiskSuite/Solaris Volume Manager 设备组时,该命令缺省指定一个辅助节点。 可以在设备组创建后,使用 scsetup(1M) 公用程序更改设备组中所需的辅助节点数目。 有关如何更改 numsecondaries 特性的详细信息,请参阅 Sun Cluster System Administration Guide for Solaris OS 中的 “Administering Disk Device Groups”。
检验新磁盘集的状态。
# 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/Solaris Volume Manager 按照以下方法对磁盘驱动器进行重新分区,以便磁盘集的状态数据库可以存放到该磁盘驱动器上。
每个磁盘驱动器有一小部分保留在第 7 片中供 Solstice DiskSuite/Solaris Volume Manager 软件使用。 每个磁盘驱动器的剩余空间放在第 0 片中。
只有在第 7 片未正确配置的情况下,才在将磁盘驱动器添加到磁盘集时对驱动器进行重新分区。
重新分区时磁盘驱动器中的所有现有数据将丢失。
如果第 7 片从 0 柱面开始,磁盘驱动器分区的大小又足以包含一个状态数据库复本,则不对该磁盘驱动器进行重新分区。
成为节点的超级用户。
确保已创建磁盘集。
有关说明,请参阅如何创建磁盘集 。
列出 DID 映射。
# scdidadm -L |
选择将主控或可能主控磁盘集的群集节点共享的磁盘驱动器。
将磁盘驱动器添加到磁盘集时,请使用完整的设备 ID 路径名称。
输出的第一列是 DID 实例编号,第二列是完整路径(物理路径),第三列是完整的设备 ID 路径名称(伪路径)。 对于相同的 DID 实例编号,共享磁盘驱动器具有多个项。
在下面的示例中,DID 实例编号为 2 的项指示一个由 phys-schost-1 和 phys-schost-2 共享的磁盘驱动器,完整的设备 ID 路径名称为 /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 |
指定磁盘集名称
获取磁盘集的所有权
将磁盘驱动器添加到磁盘集。
使用完整的设备 ID 路径名称。
# metaset -s setname -a drivename |
将磁盘驱动器添加到磁盘集
共享磁盘驱动器的完整设备 ID 路径名称
将磁盘驱动器添加到磁盘集时,请不要使用低级别设备名称 (cNtXdY)。 因为低级别设备名称是本地名称,并且在群集中不是唯一的,使用该名称可能使元集合不能切换。
检验磁盘集和磁盘驱动器的状态。
# metaset -s setname |
是否打算对磁盘驱动器进行重新分区以便在元设备或卷中使用?
如果是,则转到如何对磁盘集内的磁盘驱动器重新分区 。
如果不是,请转到如何创建 md.tab 文件 ,使用 md.tab 文件定义元设备或卷。
metaset 命令将磁盘驱动器 /dev/did/rdsk/d1 和 /dev/did/rdsk/d2 添加到磁盘集 dg-schost-1。
# metaset -s dg-schost-1 -a /dev/did/rdsk/d1 /dev/did/rdsk/d2 |
使用 metaset(1M) 命令可以对磁盘集内的磁盘驱动器重新分区,以便每个磁盘驱动器都有一小部分保留在第 7 片中供 Solstice DiskSuite/Solaris Volume Manager 软件使用。 每个磁盘驱动器的剩余空间都放在盘片 0 中。要更有效地使用磁盘驱动器,请使用此过程修改磁盘的布局。 如果为盘片 1 到 6 分配了空间,可以在设置 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷时使用这些盘片。
成为群集节点的超级用户。
使用 format 命令更改磁盘集中每个磁盘驱动器的磁盘分区。
当对驱动器重新分区时,必须满足以下条件以防止 metaset(1M) 命令对磁盘驱动器进行重新分区。
从柱面 0开始创建盘片 7 使其大小足以容纳一个状态数据库复本(大约 2 兆字节)。
将第 7 片中的 Flag 字段设置为 wu(读-写,可卸载)。 不要将其设置为只读。
不允许第 7 片重叠磁盘驱动器中的任何其它片。
有关详细信息,请参阅 format(1M) 手册页。
使用 md.tab 文件定义元设备或卷。
转到如何创建 md.tab 文件 。
在群集中的每个节点上创建一个 /etc/lvm/md.tab 文件。 使用 md.tab 文件为所创建的磁盘集定义 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷。
如果使用的是本地元设备或卷,需确保本地元设备名称或卷名称不同于用于构成磁盘集的设备 ID 名称。 例如,如果在磁盘集中使用了设备 ID 名称 /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 文件中使用完整的设备 ID 路径名称代替较低级别的设备名称 (cNtXdY)。
# scdidadm -L |
在下面的示例中,输出的第一列是 DID 实例编号,第二列是完整路径(物理路径),第三列是完整的设备 ID 路径名称(伪路径)。
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/Solaris Volume Manager 文档和 md.tab(4) 手册页。
如果在将用于子镜像的磁盘驱动器上具有现有数据,则必须在设置元设备或卷之前备份此数据。 然后将数据恢复到镜像上。
激活在 md.tab 文件中定义的元设备或卷。
转到如何激活元设备或卷 。
以下样例 md.tab 文件定义了名为 dg-schost-1 的磁盘集。 md.tab 文件中各行的顺序并不重要。
dg-schost-1/d0 -m dg-schost-1/d10 dg-schost-1/d20 dg-schost-1/d10 1 1 /dev/did/rdsk/d1s0 dg-schost-1/d20 1 1 /dev/did/rdsk/d2s0 |
以下示例使用 Solstice DiskSuite 术语。 对于 Solaris Volume Manager,trans 元设备称为事务卷,元设备称为卷。 另外,以下过程对两个卷管理器均有效。
md.tab 文件样例的结构如下。
第一行将设备 d0 定义为元设备 d10 和 d20 的镜像。 -m 表示该设备为镜像设备。
dg-schost-1/d0 -m dg-schost-1/d0 dg-schost-1/d20 |
第二行将元设备 d10(d0 的第一个子镜像)定义为单向条。
dg-schost-1/d10 1 1 /dev/did/rdsk/d1s0 |
第三行将元设备 d20(d0 的第二个子镜像)定义为单向条。
dg-schost-1/d20 1 1 /dev/did/rdsk/d2s0 |
执行以下过程激活在 md.tab 文件中定义的 Solstice DiskSuite 元设备或 Solaris Volume Manager 卷。
成为群集节点的超级用户。
确保 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 |