この章では、metassist コマンドを使用して行う、Solaris ボリュームマネージャのボリュームトップダウン作成に関連する作業について説明します。
この章の内容は次のとおりです。
ボリュームのトップダウン作成に関連する概念については、第 22 章「ボリュームのトップダウン作成 (概要)」を参照してください。
次の表にmetassist コマンドを使用してSolaris ボリュームマネージャのボリュームをトップダウンで作成するために必要な手順を示します。このコマンドでは、QoS (サービス品質) 特性に基づいてボリュームを指定できます。また、1 つのコマンドで、レイヤー型のボリュームセットを作成できます。
作業 |
説明 |
参照先 |
---|---|---|
ボリュームを自動作成します |
metassist コマンドを使って、1 つまたは複数の Solaris ボリュームマネージャのボリュームを作成できます。 また、ボリュームの作成過程で metassist コマンドから出力される情報量を制御します。この情報はトラブルシューティングや診断のために使用されます。 | |
コマンドファイルを作成します |
metassist コマンドを使って、ボリュームを生成するためのシェルスクリプトを作成します。 | |
シェルスクリプトによってボリュームを作成します |
前の手順において metassist コマンドで生成したシェルスクリプトを使用して、Solaris ボリュームマネージャのボリュームを作成します。 | |
ボリューム構成ファイルを作成します |
作成するボリュームの特性を定義したボリューム構成ファイルを作成します。 | |
ボリュームデフォルトファイルを変更します |
デフォルトのボリューム特性を設定して、 metassist コマンドの動作をカスタマイズします。 |
metassist コマンドを使ってボリュームやボリューム構成を自動的に作成するためには、Solaris ボリュームマネージャ構成が正常に動作していなければなりません。作業を始める前に、次の内容が必要です。
スーパーユーザーのアクセス権または役割に基づくアクセス制御 (RBAC) の同等の役割。詳細については、『Solaris のシステム管理 (基本編)』の「スーパーユーザー (root) になるか役割を引き受ける」を参照してください。
使用するシステム上に適切に分散された状態データベースの複製。状態データベースの複製の詳細については、「Solaris ボリュームマネージャの状態データベースと状態データベースの複製について」を参照してください。
ボリュームの作成に使用できるディスク。metassist コマンドではディスクセットを使用して、記憶領域を管理します。metassist コマンドで新しいボリュームを作成するには、まったく未使用のディスク (または既存のディスクセット) を使用する必要があります。ディスクの可用性については、「ボリュームのトップダウン作成に使用できるディスクの判別」を参照してください。
これらの最小要件に加えて、/etc/inetd.conf ファイルにおいて、Solaris ボリュームマネージャの RPC デーモン(rpc.metad、rpc.metamhd、および rpc.metamedd) を無効にしてはなりません。デフォルトでは、これらのデーモンは起動するように構成されています。Solaris ボリュームマネージャが共有ディスクセットを使用できるように、これらのデーモンを引き続き有効にしておく必要があります。
metassist コマンドを使用すると、QoS (サービス品質) の条件に基づいて、Solaris ボリュームマネージャのボリュームやボリュームセットを作成できます。Solaris ボリュームマネージャではこれまで、ボリュームを作成するために一連のコマンドが必要でしたが、metassist コマンドによって、1 つのコマンドでボリュームを作成できるようになりました。
metassist コマンドを使用すると、RAID-1 (ミラー) ボリュームを直接作成できます。したがって、RAID-1 (ミラー) ボリュームのコンポーネントとして使用するサブミラー (連結方式またはストライプ方式) を先に作成する必要はありません。
metassist コマンドを実行する際には、出力の詳細度を指定できます。出力が詳細になれば、それだけ問題の診断に役立ちます。たとえば、あるディスクがボリュームの作成になぜ選択されたのか、あるいは選択されなかったのかを判別したり、特定のコマンドがなぜ失敗したのかを判別したりすることが容易になります。出力の詳細度を下げれば、ユーザーに不必要な情報の出力を減らすことができます。
出力の詳細度を指定すると、metassist コマンドが何を行い、どのように決定を下すかを理解できます。この情報は、以下のような問題の解決に役立ちます。
ボリュームがなぜある方法で作成されたのか。
ボリュームがなぜ作成されなかったのか。
metassist コマンドがどのようなボリュームを作成するのか (ボリュームを実際に作成するわけではない)。
「ボリュームをトップダウン作成するための前提条件」を確認します。
ボリュームの作成に使用する記憶領域を特定します。
記憶領域を明示的に指定しなかった場合、システム上の未使用の記憶領域を Solaris ボリュームマネージャが特定し、必要に応じて使用します。記憶領域を指定すると、この記憶領域を Solaris ボリュームマネージャが使用します。記憶領域の指定は、広義に (たとえば、コントローラ 1 のすべての記憶領域) 行う場合もあれば、狭義に (たとえば、c1t4d2 は使用し、c1t4d1 は使用しない) 行う場合もあります。
作業に応じて、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-request(4) のマニュアルページを参照してください。
出力の詳細度を指定します。指定できる値の範囲は 0 (出力がほとんどない) から 2 (出力が多い) です。デフォルトレベルは 1 (中程度の出力) です。
詳細は、次の例と metassist(1M) のマニュアルページを参照してください。
ボリュームの作成後、新しいボリュームを表示します。
# metastat -s diskset-name |
次に、容量が 10M バイトの 2 面ミラーを作成する例を示します。metassist コマンドは、未使用のディスクを特定し、これらのディスクを使ってできるだけ条件の良いミラーを作成します。-s myset 引数で、myset ディスクセットにボリュームを作成することを指定します。ディスクセットは必要に応じて作成されます。
# metassist create -s myset -r 2 -S 10mb |
次に、metassist コマンドを使用して、容量が 10M バイトの 2 面ミラーとホットスペアを作成し、障害耐性を強化する例を示します。-f オプションで障害耐性を指定します。
# metassist create -s myset -f -r 2 -S 10mb |
次に、metassist コマンドを使用し、コントローラ 1 上の使用可能なディスクでストライプを作成する例を示します。 -a オプションで、使用可能なコントローラを指定します。
# metassist create -s myset -a c1 -S 10mb |
次に、metassist コマンドを使用して、容量が 10M バイトの 2 面ミラーとホットスペアを作成し、障害耐性を強化する例を示します。-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 コマンドを使用して、容量が 10M バイトの 2 面ミラーとホットスペアを作成し、障害耐性を強化する例を示します。-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 コマンドを使用すると、ボリューム特性の評価に使用するファイル、または実際にボリュームを作成するために使用するファイルを作成できます。
metassist コマンドに - c 引数を指定すると、ボリューム構成の作成に使用できるコマンドを含んだ Bourne シェルスクリプトが生成されます。この方法を使用すれば、ボリュームを実際に作成する前にコマンドを確認したり、場合によっては、必要に応じてスクリプトを微調整することができます。
「ボリュームをトップダウン作成するための前提条件」を確認します。
ボリュームの作成に使用する記憶領域を特定します。
記憶領域を明示的に指定しなかった場合、システム上の未使用の記憶領域を 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 |
metassist コマンドでシェルスクリプトを作成したら、このスクリプトを使ってボリュームを作成できます。ボリュームは、シェルスクリプトの作成時に指定したとおりに作成されます。
metassist コマンドで作成したコマンドスクリプトは、スクリプトを作成したシステムのその時点の構成に大きく依存しています。したがって、このスクリプトを別のシステムで使用したり、このスクリプトをシステム構成の変更後に使用したりすると、データが壊れたり失われたりすることがあります。
「ボリュームをトップダウン作成するための前提条件」を確認します。
シェルスクリプトの作成後にシステム構成が変更されていないことを確認します。さらに、スクリプトを実行するシステムが、このスクリプトを作成したシステムであることを確認します。
保存されたシェルスクリプトを実行します。
# sh ./metassist-shell-script-name |
新しいボリュームを表示します。
# metastat -s diskset-name |
次に、metassist コマンドでシェルスクリプトを使用してボリュームを作成する例を示します。
# 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 |
metassist コマンドに -d 引数を指定すると、XML ベースのボリューム構成ファイルが生成されます。このファイルには、ボリュームに関連するすべてのオプションや情報など、ボリュームとそのコンポーネントの詳細が含まれています。このファイルを調べることによって、metassist コマンドが推奨する構成を知ることができます。さらに、このボリューム構成ファイルを慎重に変更して構成を微調整したあと、実際のボリューム作成の際に metassist コマンドへの入力として使用することもできます。
「ボリュームをトップダウン作成するための前提条件」を確認します。
ボリュームの作成に使用する記憶領域を特定します。
記憶領域を明示的に指定しなかった場合、システム上の未使用の記憶領域を Solaris ボリュームマネージャが特定し、必要に応じて使用します。記憶領域を指定すると、この記憶領域を Solaris ボリュームマネージャが使用します。記憶領域の指定は、広義に (たとえば、コントローラ 1 のすべての記憶領域) 行う場合もあれば、狭義に (たとえば、c1t4d2 は使用し、c1t4d1 は使用しない) 行う場合もあります。
作業に応じて、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 コマンドを使用して、容量が 10M バイトの 2 面ミラーとホットスペアを作成し、障害耐性を強化する例を示します。-f オプションで障害耐性を指定します。最後の引数 (-c) で、ボリュームを実際には作成しないことを指定します。その代わりに、指定した構成を作成するために使用できるボリューム構成ファイルが、標準出力に送信されます。
# 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 コマンドを使用して、容量が 10M バイトの 2 面ミラーとホットスペアを作成し、障害耐性を強化する例を示します。-f オプションで障害耐性を指定します。最後の引数 (-c) で、ボリュームを実際には作成しないことを指定します。その代わりに、指定した構成を作成するために使用できるボリューム構成ファイルが、標準出力に送信されます。コマンドの最後の部分では、標準出力をリダイレクトして /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 の文書型定義 (DTD) で規定されています。この形式については、volume-defaults(4) のマニュアルページを参照してください。
ボリュームデフォルトファイル (/etc/defaults/metassist.xml) を編集して、metassist コマンドの動作を指定します。
ファイルを編集する際には、ファイルが文書型定義 (DTD) /usr/share/lib/xml/dtd/volume-defaults.dtd に準拠するようにしてください。XML ファイルが DTD に準拠していないと、metassist コマンドはエラーメッセージを出して異常終了します。
ボリュームを作成する前に、/etc/default/metassist.xml ファイルを編集してデフォルト設定を指定します。この設定は、metassist コマンドを使って作成するすべてのボリュームに適用されます。この例に示す metassist コマンドでは、ボリュームをコントローラ c1 上にだけ作成します。さらに、ストライプを作成する際には必ず、4 つのコンポーネントと飛び越し値 512KB からなるストライプを作成します。/etc/default/metassist.xml ファイルが再び変更されない限り、これらの制約はすべての metassist コマンドに適用されます。
# 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 コマンドによって、/etc/default/metassist.xml ファイルで指定されたとおりに、4 つのスライスと 512K バイトの飛び越し値を使用する、10G バイトのストライプが作成されます。