本章提供与使用 metassist 命令自上而下创建 Solaris Volume Manager 卷相关联的任务。
以下是本章中信息的列表:
有关自上而下创建卷的概念性信息,请参见第 22 章,自上而下创建卷(概述)。
以下任务列表列出了使用 metassist 命令创建 Solaris Volume Manager 卷所需的过程。使用此命令可以基于服务质量特征指定卷,也可以创建多组分层卷。
|
任务 |
说明 |
参考 |
|---|---|---|
|
自动创建卷 |
允许您使用 metassist 命令创建一个或多个 Solaris Volume Manager 卷。 此外,允许您控制有关卷创建过程中的信息量,这些信息由 metassist 命令提供,以用于诊断或解决问题。 | |
|
创建命令文件 |
帮助您使用 metassist 命令来创建 shell 脚本,以生成该命令所指定的卷。 | |
|
用 shell 脚本创建卷 |
说明如何创建 metassist 命令使用其以前生成的 shell 脚本指定的 Solaris Volume Manager 卷。 | |
|
创建卷配置文件 |
帮助您创建卷配置文件,并描述要创建的卷的特征。 | |
|
更改卷缺省配置文件 |
允许您设置卷的缺省特征以自定义 metassist 命令的行为。 |
如果要使用 metassist 命令来自动创建卷和卷配置,则要求 Solaris Volume Manager 配置能够正常工作。在开始之前,应具备以下条件:
具有超级用户访问权限或者能够承担等效的基于角色的访问控制 (role-based access control, RBAC) 角色。有关更多信息,请参见《系统管理指南:基本管理》中的“成为超级用户 (root) 或承担角色”。
拥有专门针对您的系统分发的状态数据库副本。有关状态数据库副本的更多信息,请参见关于 Solaris Volume Manager 状态数据库和副本。
拥有可用来创建卷的磁盘。metassist 命令使用磁盘集来帮助管理存储。必须具有完全未使用的磁盘(或者现有的磁盘集),才能使用 metassist 命令创建新卷。有关磁盘可用性的更多信息,请参见确定可用于自上而下创建卷的磁盘。
除了上述最低要求,还要注意一点,那就是不要在 /etc/inetd.conf 文件中禁用 Solaris Volume Manager RPC 守护进程(rpc.metad、rpc.metamhd 和 rpc.metamedd)。 在缺省情况下,这些守护进程配置为自动启动。它们必须保持启用状态,以便允许 Solaris Volume Manager 使用共享的磁盘集。
使用 metassist 命令,可以基于服务质量标准创建 Solaris Volume Manager 卷或多组卷。仅使用 metassist 命令就可以创建卷,而不需要像以前在 Solaris Volume Manager 中那样使用一系列命令来创建卷。
可以使用 metassist 命令来直接创建 RAID-1(镜像)卷。因此,不必首先创建用作 RAID-1(镜像)卷组件的子镜像(串联或条带)。
在运行 metassist 命令时,可以指定输出的详细程度。详细程度高的输出有助于诊断问题,如确定磁盘为什么被(未被)选中以用于卷中,或者确定在尝试执行特定命令时为什么会失败。详细程度低的输出可减少必须检查的无关信息的量。
在指定输出的详细程度时,可以了解 metassist 命令的功能及其做出决定的方式。这些信息有助于解决下面的某些问题:
为什么以特定的方式创建某个卷
为什么没有创建某个卷
metassist 命令应创建哪些卷,但实际上却没有创建这些卷
请查看自上而下创建卷的先决条件。
标识要在其上创建卷的可用存储器。
如果没有明确指定存储器,Solaris Volume Manager 会标识系统上未使用的存储器并使用它(如果适用的话)。如果您选择指定存储器-可以广泛地指定存储器(例如,控制器 1 上的所有存储器),也可以明确地指定存储器(例如,使用 c1t4d2,而不使用 c1t4d1),则 Solaris Volume Manager 会使用您指定的存储器。
使用 metassist 命令和适用于所执行任务的选项。
要使用命令行创建卷,请使用以下形式的 metassist 命令。
# metassist create -s diskset-name -f -r redundancy -a device1, device2... -S size -v verbosity |
用于创建卷的子命令。
指定要用于卷的磁盘集的名称。
指定该卷要与热备件相关联。
指定要创建的冗余级别(数据副本的数量)。
指定要用于创建卷的设备。
指定要创建的卷所采用的单位:KB(表示千字节)、MB(表示兆字节)、GB(表示千兆字节)或 TB(兆兆字节)。
指定输出的详细程度。允许值介于 0(几乎无提示的输出)和 2(详细输出)之间。缺省详细程度是 1(中等详细程度的输出)。
如果要在创建卷时使用输入文件来指定卷的特征,请使用以下任一形式的 metassist 命令:
# metassist create [-v n] [-c] -F config_file # metassist create [-v n] [-c | -d] -F request_file |
指定输出命令脚本,该命令脚本将实现指定的或所生成的卷配置。该命令脚本将不运行,而且处理将在该阶段停止。
指定输出卷配置,该卷配置满足指定的或所生成的卷请求。 将不生成或执行命令脚本,而且处理将在该阶段停止。
指定要处理的卷请求文件或卷配置文件。如果将 config_file 或 request_file 指定为连字符 (-),系统将从标准输入中读取它。如果输入文件是卷配置文件,则不能指定 -d 选项。
卷配置文件描述要创建的卷的详细配置,而卷请求文件提供要生成的卷的特征。有关更多信息,请参见 volume-config(4)volume-config(4) 和 volume-request(4) 手册页。
指定输出的详细程度。允许值介于 0(几乎无提示的输出)和 2(详细输出)之间。缺省详细程度是 1(中等详细程度的输出)。
有关更多信息,请参见以下示例和 metassist(1M) 手册页。
在创建了卷之后,可以立即查看新卷。
# metastat -s diskset-name |
以下示例说明如何创建大小为 10 MB 的双向镜像。metassist 命令标识未使用的磁盘并使用这些磁盘创建尽可能最佳的镜像。-s myset 参数指定将在 myset 磁盘集内创建卷。如有必要,请创建该磁盘集。
# metassist create -s myset -r 2 -S 10mb |
以下示例说明如何使用 metassist 命令来创建大小为 10 MB 且具有热备件的双向镜像,热备件可提供额外的容错功能。-f 选项指定容错功能。
# metassist create -s myset -f -r 2 -S 10mb |
以下示例说明如何借助 metassist 命令使用控制器 1 上的磁盘创建条带。-a 选项指定可用的控制器。
# metassist create -s myset -a c1 -S 10mb |
以下示例说明如何使用 metassist 命令来创建大小为 10 MB 且具有热备件的双向镜像,热备件可提供额外的容错功能。-f 选项指定容错功能。最后一个参数 (-v 2) 指定详细程度为 2(最大详细程度),它将尽可能多地提供有关 metassist 命令如何工作的信息。
# metassist create -s myset -f -r 2 -S 10mb -v 2
Scanning system physical device configuration...
These HBA/Controllers are known:.
c0 /pci@1f,0/pci@1,1/ide@3
c1 /pci@1f,0/pci@1/pci@2/SUNW,isptwo@4
These disks are known:
c0t0d0 id1,dad@AST34342A=____________VGD97101
c1t1d0 id1,sd@SSEAGATE_ST39204LCSUN9.0G3BV0L88P000021097XNL
c1t2d0 id1,sd@SSEAGATE_ST39102LCSUN9.0GLJW22867000019171JDF
c1t3d0 id1,sd@SSEAGATE_ST39204LCSUN9.0G3BV0L7RV00007108TG0H
c1t4d0 id1,sd@SSEAGATE_ST39204LCSUN9.0G3BV0LDFR000021087R1T
c1t5d0 id1,sd@SSEAGATE_ST39204LCSUN9.0G3BV0L0M200002109812L
c1t6d0 id1,sd@SSEAGATE_ST39204LCSUN9.0G3BV0L8K8000021087R0Z
.
.
.
(output truncated)
|
以下示例说明如何使用 metassist 命令来创建大小为 10 MB 且具有热备件的双向镜像,热备件可提供额外的容错功能。-f 选项指定容错功能。最后一个参数 (-v 0) 指定详细程度为 0(最小详细程度),在该命令运行时,它将提供几乎无提示的输出。
# metassist create -s myset -f -r 2 -S 10mb -v 0 myset/hsp000: Hotspare pool is setup myset/hsp000: Hotspare is added myset/d2: Concat/Stripe is setup myset/d1: Concat/Stripe is setup myset/d0: Mirror is setup myset/d0: submirror myset/d1 is attached |
以下示例说明如何借助 metassist 命令使用输入文件创建卷。
# metassist create -F request.xml |
有关借助 metassist 命令使用输入文件创建卷的更多信息,请参见使用 metassist 命令处理基于文件的数据。
使用 metassist 命令,可以创建用来评估卷的特征或者实际创建卷的文件。
通过运行带有 -c 参数的 metassist 命令,可以生成一个 Bourne shell 脚本,其中包含将用来创建卷配置的命令。使用此方法,可以在实际创建卷之前检查命令,甚至可以根据具体需要稍微修改脚本。
请查看自上而下创建卷的先决条件。
标识要在其上创建卷的可用存储器。
如果没有明确指定存储器,Solaris Volume Manager 会标识系统上未使用的存储器并使用它(如果适用的话)。如果您选择指定存储器-可以广泛地指定存储器(例如,控制器 1 上的所有存储器),也可以明确地指定存储器(例如,使用 c1t4d2,而不使用 c1t4d1),则 Solaris Volume Manager 会使用您指定的存储器。
使用 metassist 命令和适用于所执行任务的选项。
使用 -c 选项指定不应实际创建卷。
# metassist create -s diskset-name -f -r redundancy -a device1, device2... \ -S size -v verbosity [-c] |
用于创建卷的子命令。
指定要用于卷的磁盘集的名称。
指定该卷要与热备件相关联。
指定要创建的冗余级别(数据副本的数量)。
指定要用于创建卷的设备。
指定要创建的卷所采用的单位:KB(表示千字节)、MB(表示兆字节)、GB(表示千兆字节)或 TB(兆兆字节)。
指定输出的详细程度。允许值介于 0(几乎无提示的输出)和 2(详细输出)之间。缺省详细程度是 1(中等详细程度的输出)。
指定不应实际创建卷,而应将可用来创建指定配置的 shell 脚本发送到标准输出中。
-c 参数所需的 shell 脚本将发送到标准输出中,metassist 命令的其余输出将转至标准错误中。您可以在进行选择时重定向输出流。
有关更多信息,请参见以下示例和 metassist(1M) 手册页。
以下示例说明如何使用 metassist 命令来创建大小为 10 MB 且具有热备件的双向镜像,热备件可提供额外的容错功能。-f 选项指定容错功能。最后一个参数 (-c) 指定不应实际创建卷,而应将可用来创建指定配置的 shell 脚本发送到标准输出中。
# metassist create -s myset -f -r 2 -S 10mb -c
(output truncated)
.
.
.
Volume request completed successfully.
#!/bin/sh
#
# Environment
#
# Amend PATH
PATH="/usr/sbin:/usr/bin:$PATH"
export PATH
# Disk set name
diskset='myset'
#
# Functions
#
# Echo (verbose) and exec given command, exit on error
execho () {
test -n "$verbose" && echo "$@"
"$@" || exit
}
# Get full /dev/rdsk path of given slice
fullpath () {
case "$1" in
/dev/dsk/*|/dev/did/dsk/*) echo "$1" | sed 's/dsk/rdsk/' ;;
/*) echo "$1" ;;
*) echo /dev/rdsk/"$1" ;;
esac
}
# Run fmthard, ignore partboot error, error if output
fmthard_special () {
ignore='Error writing partboot'
out=`fmthard "$@" 2>&1`
result=$?
echo "$out" |
case "$out" in
*"$ignore"*) grep -v "$ignore"; return 0 ;;
'') return "$result" ;;
*) cat; return 1 ;;
esac >&2
}
#
# Main
#
# Verify root
if [ "`id | sed 's/^[^(]*(\([^)]*\).*/\1/'`" != root ]
then
echo "This script must be run as root." >&2
exit 1;
fi
# Check for verbose option
case "$1" in
-v) verbose=1 ;;
*) verbose= ;;
esac
# Does the disk set exist?
if metaset -s "$diskset" >/dev/null 2>&1
then
# Take control of disk set
execho metaset -s "$diskset" -t
else
# Create the disk set
autotakeargs=
/usr/sbin/clinfo || autotakeargs='-A enable'
execho metaset -s "$diskset" $autotakeargs -a -h `uname -n | cut -f1 -d.`
fi
# Format slices
execho fmthard_special -d 7:0:0:0:0 `fullpath c1t3d0s7`
execho fmthard_special -d 7:0:0:0:0 `fullpath c1t6d0s7`
execho fmthard_special -d 7:0:0:0:0 `fullpath c1t4d0s7`
# Add disks to set
execho metaset -s "$diskset" -a c1t3d0
execho metaset -s "$diskset" -a c1t6d0
execho metaset -s "$diskset" -a c1t4d0
# Format slices
execho fmthard_special -d 0:4:0:10773:17649765 `fullpath c1t3d0s0`
execho fmthard_special -d 0:4:0:10773:17649765 `fullpath c1t6d0s0`
execho fmthard_special -d 0:4:0:10773:17649765 `fullpath c1t4d0s0`
execho fmthard_special -d 1:4:0:17660538:21546 `fullpath c1t3d0s1`
execho fmthard_special -d 1:4:0:17660538:21546 `fullpath c1t4d0s1`
execho fmthard_special -d 1:4:0:17660538:21546 `fullpath c1t6d0s1`
# Does hsp000 exist?
metahs -s "$diskset" -i hsp000 >/dev/null 2>&1 || {
# Create hsp hsp000
execho metainit -s "$diskset" hsp000
}
# Add slices to hsp000
execho metahs -s "$diskset" -a hsp000 c1t3d0s1
# Create concat d2
execho metainit -s "$diskset" d2 1 1 c1t4d0s1
# Associate concat d2 with hot spare pool hsp000
execho metaparam -s "$diskset" -h hsp000 d2
# Create concat d1
execho metainit -s "$diskset" d1 1 1 c1t6d0s1
# Associate concat d1 with hot spare pool hsp000
execho metaparam -s "$diskset" -h hsp000 d1
# Create mirror d0
execho metainit -s "$diskset" d0 -m d2 1
execho metattach -s "$diskset" d0 d1
#
|
以下示例说明如何使用 metassist 命令来创建大小为 10 MB 且具有热备件的双向镜像,热备件可提供额外的容错功能。-f 选项指定容错功能。最后一个参数 (-c) 指定不应实际创建卷,而应将可用来创建指定配置的 shell 脚本发送到标准输出中。该命令最后会重定向标准输出,以便创建 /tmp/metassist-shell-script.sh shell 脚本,该脚本以后可用来创建指定的卷。
# metassist create -s myset -f -r 2 -S 10mb -c > \ /tmp/metassist-shell-script.sh |
使用 metassist 命令创建 shell 脚本之后,可以使用该脚本来创建在创建 shell 脚本时所指定的卷。
在创建脚本时,由 metassist 命令创建的命令脚本在很大程度上依赖于在其上创建该脚本的系统的特定配置。在不同的系统上使用该脚本或者在更改系统配置之后使用该脚本可能会导致数据损坏或丢失。
请查看自上而下创建卷的先决条件。
请确保自创建 shell 脚本以来系统配置未曾进行过更改,而且是在创建脚本的系统上执行脚本。
执行保存的 shell 脚本。
# sh ./metassist-shell-script-name |
查看新卷。
# metastat -s diskset-name |
以下示例说明如何借助 metassist 命令来使用 shell 脚本创建卷。
# sh ./tmp/metassist-shell-script.sh myset/hsp000: Hotspare pool is setup myset/hsp000: Hotspare is added myset/d2: Concat/Stripe is setup myset/d1: Concat/Stripe is setup myset/d0: Mirror is setup myset/d0: submirror myset/d1 is attached |
通过运行带有 -d 参数的 metassist 命令,可以生成基于 XML 的卷配置文件,该配置文件详细指定要创建的卷及其组件,其中包括所有选项和有关这些卷的相关信息。检查该文件有助于了解 metassist 命令建议使用的配置。如果对该文件进行适当的更改,还可以微调配置。然后,将更改后的卷配置文件用作 metassist 命令的输入来实际创建卷。
请查看自上而下创建卷的先决条件。
标识要在其上创建卷的可用存储器。
如果没有明确指定存储器,Solaris Volume Manager 会标识系统上未使用的存储器并使用它(如果适用的话)。如果您选择指定存储器-可以广泛地指定存储器(例如,控制器 1 上的所有存储器),也可以明确地指定存储器(例如,使用 c1t4d2,而不使用 c1t4d1),则 Solaris Volume Manager 会使用您指定的存储器。
使用 metassist 命令和适用于所执行任务的选项。
使用 -d 选项指定不应实际创建卷,而应将基于 XML 的卷配置文件发送到标准输出中:
# metassist create -s diskset-name -f -r redundancy -a device1, device2... \ -S size -v verbosity [-d] |
用于创建卷的子命令。
指定要用于卷的磁盘集的名称。
指定该卷要与热备件相关联。
指定要创建的冗余级别(数据副本的数量)。
指定要用于创建卷的设备。
指定要创建的卷所采用的单位:KB(表示千字节)、MB(表示兆字节)、GB(表示千兆字节)或 TB(兆兆字节)。
指定输出的详细程度。允许值介于 0(几乎无提示的输出)和 2(详细输出)之间。缺省详细程度是 1(中等详细程度的输出)。
指定不应实际创建卷。
-d 参数所需的基于 XML 的卷配置文件将发送到标准输出中。但是,metassist 命令的其余输出将转至标准错误中。您可以在进行选择时重定向输出流。
有关更多信息,请参见以下示例和 metassist(1M) 手册页。
以下示例说明如何使用 metassist 命令来创建大小为 10 MB 且具有热备件的双向镜像,热备件可提供额外的容错功能。-f 选项指定容错功能。最后一个参数 (-d) 指定不应实际创建卷,而应将最终可用来创建指定配置的卷配置文件发送到标准输出中。
# metassist create -s myset -f -r 2 -S 10mb -d .(output truncated) . . Volume request completed successfully. <?xml version="1.0"?> <!DOCTYPE volume-config SYSTEM "/usr/share/lib/xml/dtd/volume-config.dtd"> <volume-config> <diskset name="myset"/> <disk name="c1t3d0"/> <disk name="c1t6d0"/> <disk name="c1t4d0"/> <slice name="c1t3d0s7" sizeinblocks="0"/> <slice name="c1t3d0s0" sizeinblocks="17649765" startsector="10773"/> <slice name="c1t6d0s7" sizeinblocks="0"/> <slice name="c1t6d0s0" sizeinblocks="17649765" startsector="10773"/> <slice name="c1t4d0s7" sizeinblocks="0"/> <slice name="c1t4d0s0" sizeinblocks="17649765" startsector="10773"/> <hsp name="hsp000"> <slice name="c1t3d0s1" sizeinblocks="21546" startsector="17660538"/> </hsp> <mirror name="d0" read="ROUNDROBIN" write="PARALLEL" passnum="1"> <concat name="d2"> <slice name="c1t4d0s1" sizeinblocks="21546" startsector="17660538"/> <hsp name="hsp000"/> </concat> <concat name="d1> <slice name="c1t6d0s1"sizeinblocks="21546" startsector="17660538"/> <hsp name="hsp000"/> </concat> </mirror> </volume-config> # |
以下示例说明如何使用 metassist 命令来创建大小为 10 MB 且具有热备件的双向镜像,热备件可提供额外的容错功能。-f 选项指定容错功能。最后一个参数 (-d) 指定不应实际创建卷,而应将最终可用来创建指定配置的卷配置文件发送到标准输出中。该命令最后会重定向标准输出,以便创建 /tmp/metassist-volume-config.xml 卷配置文件,该文件以后可用来创建指定的卷。
# metassist create -s myset -f -r 2 -S 10mb -d > \ /tmp/metassist-volume-config.xml |
可以使用卷缺省配置文件 (/etc/defaults/metassist.xml) 来更改 metassist 命令的缺省行为。通过更改缺省配置文件,可以明确地将特定磁盘或控制器排除或包括在考虑范围之内。还可以指定由 metassist 命令使用的大部分卷设置的要求。
/etc/defaults/metassist.xml 的格式由 /usr/share/lib/xml/dtd/volume-defaults.dtd 文档类型定义 (Document Type Definition, DTD) 来指定。该格式在 volume-defaults(4) 手册页中进行介绍。
编辑卷缺省配置文件 (/etc/defaults/metassist.xml) 以指定 metassist 命令的行为。
在编辑该文件时,必须确保该文件仍旧符合 /usr/share/lib/xml/dtd/volume-defaults.dtd 文档类型定义 (Document Type Definition, DTD)。如果该 XML 文件不符合 DTD,则 metassist 命令将失败,并且会出现一条错误消息。
在创建卷之前,请编辑 /etc/default/metassist.xml 文件以指定缺省设置,这些设置将应用于借助 metassist 命令创建的所有卷。在以下示例中,metassist 命令仅在控制器 c1 上创建卷,在创建条带时,仅创建恰好包含四个组件且交错值为 512KB 的条带。这些约束适用于 metassist 命令的所有应用场合,直到 /etc/default/metassist.xml 文件再次发生更改。
# cat /etc/default/metassist.xml <!DOCTYPE volume-defaults SYSTEM \ "/usr/share/lib/xml/dtd/volume-defaults.dtd"> <volume-defaults> <available name="c1" /> <stripe mincomp="4" maxcomp="4" interlace="512KB" ></stripe> </volume-defaults> # metassist create -s myset -S 10Gb |
metassist 命令会创建一个 10 GB 的条带,如 /etc/default/metassist.xml 文件中所指定,该条带将恰好使用四个片且交错值为 512 KB。