通过使用本章中的过程以及规划卷管理中的规划信息为 Solstice DiskSuite 或 Solaris Volume Manager 软件安装和配置本地磁盘和多主机磁盘。有关详细信息,请参阅 Solstice DiskSuite 或 Solaris Volume Manager 文档。
DiskSuite 工具 (Solstice DiskSuite metatool) 和 Solaris 管理控制台的增强型存储模块 (Solaris Volume Manager) 与 Sun Cluster 软件不兼容。请使用命令行界面或 Sun Cluster 实用程序来配置 Solstice DiskSuite 或 Solaris Volume Manager 软件。
本章中包含以下信息和过程:
下表列出了为 Sun Cluster 配置而安装和配置 Solstice DiskSuite 或 Solaris Volume Manager 软件所需执行的任务。符合以下条件时可以跳过某些过程:
如果使用 SunPlex Installer 来安装 Solstice DiskSuite 软件 (Solaris 8),则如何安装 Solstice DiskSuite 软件过程至如何创建状态数据库复本过程已经完成。请转至镜像根磁盘或在群集中创建磁盘组。继续配置 Solstice DiskSuite 软件。
如果安装了 Solaris 9 软件,则 Solaris Volume Manager 已随之安装。您可以从如何设置元设备或卷名称以及磁盘组的数目开始进行配置。
如果要创建供 Oracle Real Application Clusters 使用的 Solaris Volume Manager for Sun Cluster 多属主磁盘组,则请勿使用如何创建磁盘组至如何激活元设备或卷中的过程来创建多属主磁盘组。
本节提供了安装和配置 Solstice DiskSuite 或 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 Installer 安装 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 Installer 安装了 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 Installer 安装了 Solstice DiskSuite 软件,则请勿执行该过程。而应该转到镜像根磁盘。
对群集中的每个节点执行该过程。
成为群集节点的超级用户。
在一个或多个本地设备上为每个群集节点创建状态数据库拷贝。
使用物理名称 (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 磁盘组。
以下示例显示了三个 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 |
如果用于镜像根磁盘的磁盘已物理连接至多个节点(多主机),则请启用 localonly 特性。
请执行以下步骤,为用于镜像根磁盘的磁盘启用原始磁盘设备组的 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,请转至如何镜像全局名称空间。
(可选的) 要镜像无法卸载的文件系统,请转至如何镜像无法卸载的根文件系统 (/) 以外的文件系统。
(可选的) 要镜像用户定义的文件系统,请转至如何镜像无法卸载的文件系统。
请转至在群集中创建磁盘组。以创建磁盘组。
以下示例显示了在节点 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 |
如果用于镜像全局名称空间的磁盘已物理连接至多个节点(多主机),请启用 localonly 特性。
请执行以下步骤为用于镜像全局名称空间的磁盘启用原始磁盘设备组的 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) 手册页。
(可选的) 要镜像根 (/) 以外的、无法卸载的文件系统,请转至如何镜像无法卸载的根文件系统 (/) 以外的文件系统。
(可选的) 要镜像用户定义的文件系统,请转至如何镜像无法卸载的文件系统
请转至在群集中创建磁盘组。以创建磁盘组。
下面的示例显示了创建镜像 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 |
如果用于镜像可卸载文件系统的磁盘已物理连接至多个节点(多主机),请启用 localonly 特性。
请执行以下步骤为用于镜像可卸载文件系统的磁盘启用原始磁盘设备组的 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 |
如果用于镜像用户定义的文件系统的磁盘已物理连接至多个节点(多主机),请启用 localonly 特性。
请执行以下步骤为用于镜像用户定义的文件系统的磁盘启用原始磁盘设备组的 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 Installer 安装了 Solstice DiskSuite,则可能已存在一个到三个磁盘组。有关 SunPlex Installer 创建的元集的信息,请参见使用 SunPlex Installer 安装 Sun Cluster 软件。
要创建供 Oracle Real Application Clusters 使用的 Solaris Volume Manager for Sun Cluster 磁盘组,请勿使用这些过程。而应执行《用于 Oracle Real Application Clusters 的 Sun Cluster 数据服务指南(适用于 Solaris OS)》的“在 Solaris Volume Manager for Sun Cluster 中为 Oracle Real Application Clusters 数据库创建多拥有者磁盘组”中的过程。
本节包含以下过程:
请执行以下过程来创建磁盘组。
确定创建新的磁盘组后群集是否将具有三个以上磁盘组。
如果群集的磁盘组不超过三个,请跳至步骤 2。
如果群集具有四个或更多磁盘组,请执行以下步骤来准备群集。
无论是首次安装磁盘组还是向已完全配置的群集添加更多磁盘组,均必须执行此任务。
在群集的任何节点上,检查 /kernel/drv/md.conf 文件中的 md_nsets 变量的值。
如果群集中磁盘组的总数大于 md_nsets 的现有值减一,请将 md_nsets 的值增加到所需的值。
磁盘组的最大许可数为 md_nsets 的配置值减一。md_nsets 可能的最大值为 32,因此可以创建的最大磁盘组数为 31。
确保 /kernel/drv/md.conf 文件在群集的每个节点上都完全相同。
不按本指南操作可能会导致严重的 Solstice DiskSuite 或 Solaris Volume Manager 错误,并且可能丢失数据。
如果更改了任一节点上的 md.conf 文件,请执行以下步骤以使这些更改生效。
在群集的每个节点上,运行 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 系统管理指南(适用于 Solaris OS)》中的“管理磁盘设备组”。
检验新磁盘组的状态。
# 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 |
将驱动器添加到磁盘组时,卷管理软件将按照以下原则对驱动器进行重新分区,以便将磁盘组的状态数据库放入驱动器。
每个驱动器有一小部分保留在第 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,该分片的大小应足以保存状态数据库拷贝。请参见 Solstice DiskSuite 或 Solaris Volume Manager 管理指南来确定您的卷管理器软件版本的状态数据库拷贝的大小。
将第 7 片中的 Flag 字段设置为 wu(读-写,可卸载)。不要将其设置为只读。
不要让分片 7 覆盖驱动器中的任何其他分片。
有关详细信息,请参阅 format(1M) 手册页。
使用 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 |
双串调解器或调解器主机是存储调解器数据的群集节点。调解器数据提供其他调解器的位置信息,并包含一个提交计数,该数字与存储在数据库复本中的提交计数完全相同。该提交计数用于确认调解器数据与数据库复本中的数据是否同步。
正好配置了两个磁盘串和两个群集节点的所有 Solstice DiskSuite 或 Solaris Volume Manager 磁盘组都需要双串调解器。磁盘串由一个磁盘附件、其物理设备、附件到节点的电缆以及接口适配卡组成。通过使用调解器,Sun Cluster 软件能够确保在双串配置中的单串失败的情况下仍能显示最当前的数据。下列规则适用于使用调解器的双串配置。
磁盘组必须正好配置了两个调解器主机。这两个调解器主机必须与用于该磁盘组的两个群集节点相同。
一个磁盘组不能有两个以上的调解器主机。
不能为不满足双串和双主机标准的磁盘组配置调解器。
这些规则不要求整个群集必须刚好有两个节点。而只要求那些包含两个磁盘串的磁盘组必须正好与两个节点相连接。这些规则之下允许有 N+1 群集和许多其他拓扑。
在您的配置需要双串调解器时执行此过程。
成为节点的超级用户,该节点当前控制着您要为其添加调解器主机的磁盘组。
运行 metaset(1M) 命令,将每个与磁盘组相连接的节点作为该磁盘组的调解器主机添加到磁盘组。
# metaset -s setname -a -m mediator-host-list |
指定磁盘组的名称
添加到磁盘组
指定将作为磁盘组的调解器主机进行添加的节点的名称
有关 metaset 命令的调解器特定的选项的详细信息,请参阅 mediator(7D) 手册页。
检查调解器数据的状态。
转到如何检查调解器数据的状态。
以下示例将节点 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) 手册页。
如果 medstat 输出的状态字段中的值为 Bad,请检修受影响的调解器主机。
请转至如何修正错误的调解器数据。
请转至如何创建群集文件系统以创建群集文件系统。
执行此过程以修复错误的调解器数据。
按照如何检查调解器数据的状态过程中的说明,确定带有错误调解器数据的所有调解器主机。
成为包含受影响磁盘组的节点的超级用户。
从所有受影响的磁盘组中删除带有错误调解器数据的所有调解器主机。
# metaset -s setname -d -m mediator-host-list |
指定磁盘组的名称。
从磁盘组中删除
指定要作为该磁盘组的调解器主机删除的节点的名称
恢复在步骤 3 中删除的各个调解器主机。
# metaset -s setname -a -m mediator-host-list |
添加到磁盘组
指定将作为磁盘组的调解器主机进行添加的节点的名称
有关 metaset 命令的调解器特定的选项的详细信息,请参阅 mediator(7D) 手册页。
创建群集文件系统。
转到如何创建群集文件系统。