| 跳过导航链接 | |
| 退出打印视图 | |
|
Solaris Volume Manager 管理指南 Oracle Solaris 10 1/13 Information Library (简体中文) |
4. Solaris Volume Manager for Sun Cluster(概述)
5. 配置和使用 Solaris Volume Manager(方案)
20. 维护 Solaris Volume Manager(任务)
21. Solaris Volume Manager 的最佳做法
如何使用 metassist 命令创建 RAID-1(镜像)卷
使用 metassist 命令创建命令文件(shell 脚本)
如何使用 metassist 命令创建命令文件(shell 脚本)
25. Solaris Volume Manager 故障排除(任务)
A. 重要的 Solaris Volume Manager 文件
B. Solaris Volume Manager 快速参考
使用 metassist 命令可以创建用于评估卷特征或实际创建卷的文件。
通过运行带 -c 参数的 metassist 命令,可以生成一个 Bourne shell 脚本,其中包含将用来创建卷配置的命令。通过该技术可以在实际创建卷之前检查命令,甚至可以根据具体需要稍微修改脚本。
开始之前
查看自上而下创建卷的先决条件。
如果未显式指定存储,则 Solaris Volume Manager 会识别系统上未使用的存储并根据需要使用存储。如果选择指定存储,无论是广泛地指定(例如,控制器 1 上的所有存储)还是明确地指定(例如,使用 c1t4d2,但不使用 c1t4d1),Solaris Volume Manager 都会使用指定的存储。
使用 -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) 手册页。
示例 23-6 使用 metassist 命令创建命令文件(shell 脚本)
以下示例说明如何使用 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
# 示例 23-7 使用 metassist 命令保存命令文件(shell 脚本)
以下示例说明如何使用 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 命令所创建的命令脚本在很大程度上依赖于在其上创建该脚本的系统的特定系统配置。在不同的系统上使用该脚本或者在更改系统配置之后使用该脚本可能会导致数据损坏或丢失。 |
开始之前
查看自上而下创建卷的先决条件。
# sh ./metassist-shell-script-name
# metastat -s diskset-name
示例 23-8 执行保存的 metassist 命令 shell 脚本
以下示例说明如何通过 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 都会使用指定的存储。
使用 -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) 手册页。
示例 23-9 使用 metassist 命令创建卷配置文件
以下示例说明如何使用 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> #
示例 23-10 使用 metassist 命令保存卷配置文件
以下示例说明如何使用 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