「ボリュームをトップダウン作成するための前提条件」を確認します。
ボリュームの作成に使用する記憶領域を特定します。
記憶領域を明示的に指定しなかった場合、システム上の未使用の記憶領域を Solaris ボリュームマネージャが特定し、必要に応じて使用します。記憶領域を指定すると、この記憶領域を Solaris ボリュームマネージャが使用します。記憶領域の指定は、広義に (たとえば、コントローラ 1 のすべての記憶領域) 行う場合もあれば、狭義に (たとえば、c1t4d2 は使用し、c1t4d1 は使用しない) 行う場合もあります。
作業に応じて、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 (中程度の出力) です。
ボリュームを実際には作成しないことを意味します。その代わりに、指定した構成を作成するためのシェルスクリプトが、標準出力に送信されます。
-c 引数によって、シェルスクリプトを標準出力に送信することが必須になりますが、metassist コマンドの他の出力は標準エラーに送信されます。出力ストリームは自由にリダイレクトできます。
詳細は、次の例と metassist(1M) のマニュアルページを参照してください。
次に、metassist コマンドを使用して、容量が 10M バイトの 2 面ミラーとホットスペアを作成し、障害耐性を強化する例を示します。-f オプションで障害耐性を指定します。最後の引数 (-c) で、ボリュームを実際には作成しないことを指定します。その代わりに、指定した構成を作成するためのシェルスクリプトが、標準出力に送信されます。
# 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 コマンドを使用して、容量が 10M バイトの 2 面ミラーとホットスペアを作成し、障害耐性を強化する例を示します。-f オプションで障害耐性を指定します。最後の引数 (-c) で、ボリュームを実際には作成しないことを指定します。その代わりに、指定した構成を作成するためのシェルスクリプトが、標準出力に送信されます。コマンドの最後の部分では、標準出力をリダイレクトして /tmp/metassist-shell-script.sh シェルスクリプトを作成することを指定します。このファイルはあとで、指定したボリュームを作成するために使用できます。
# metassist create -s myset -f -r 2 -S 10mb -c > \ /tmp/metassist-shell-script.sh |