Solaris ボリュームマネージャの管理

第24章 ボリュームの自動 (トップダウン) 作成 (作業)

metassist コマンドを使用すれば、1 つのコマンドで Solaris ボリュームマネージャのトップレベルのボリューム構成を作成できます。 たとえば、ディスクをパーティションに分割し、RAID 0 ボリュームを (サブミラーとして) 作成し、ホットスペア集合やホットスペアを作成し、最後にミラーを作成する、といった処理をわざわざ手動で行う必要はありません。metassist コマンドを使用すれば、1 つのコマンドを実行してボリュームを作成するだけで、あとは Solaris ボリュームマネージャが処理してくれます。

この章の内容は次のとおりです。

ボリュームのトップダウン作成 (作業マップ)

次の作業マップは、metassist コマンドを使って Solaris ボリュームマネージャのボリュームを作成するための手順を示しています。このコマンドを実行するだけで、サービス品質特性に基づくボリュームを指定し、階層化されたボリューム群を作成することができます。

作業 

説明 

「ボリュームの自動作成」

metassist コマンドを使って、1 つまたは複数の Solaris ボリュームマネージャのボリュームを作成します。

metassist コマンドの出力詳細度の指定」

ボリュームの作成過程で metassist コマンドから出力される情報量を制御します。この情報は障害追跡や診断のために使用されます。

metassist コマンドによるコマンドファイルの作成」

metassist コマンドを使って、ボリュームを生成するためのシェルスクリプトを作成します。

metassist コマンドで作成されたシェルスクリプトによるボリュームの作成」

前の手順で作成したシェルスクリプトに指定されている Solaris ボリュームマネージャのボリュームを metassist コマンドを使って作成します。

metassist コマンドによるボリューム構成ファイルの作成」

作成するボリュームの特性を定義したボリューム構成ファイルを作成します。  

「ボリュームデフォルトファイルの変更」

デフォルトのボリューム特性を設定して、 metassist コマンドの動作をカスタマイズします。

ボリュームのトップダウン作成の概要

metassist コマンドを使用すれば、1 つのコマンドで Solaris ボリュームマネージャのトップレベルのボリューム構成を作成できます。 metassist コマンドには、ボリュームのサイズや、冗長性レベル (ボリュームにおけるデータコピーの数)、ボリュームに対するデータパスの数 (ボリュームにアクセスするコントローラの数)、ホットスペアパーティションを使用するかどうか、を指定します。この場合、ボリュームに使用するハードウェアコンポーネントを指定する必要はありません。 ボリュームの指定は、コマンド行オプションや、コマンド行に指定する入力ファイルを使って、サービス品質に基づいて行うことができます。 ボリュームの名前、サイズ、およびコンポーネントを詳細に指定したい場合は、入力ファイルを使用します。

トップダウン作成の機能

metassist コマンドでは、ボリュームの特性をサービス品質に基づいて指定できます。 指定できるサービス品質特性は次のとおりです。

ボリュームの特性 (あるいは、ボリュームの作成に適用する制約) をより詳細に定義する必要がある場合は、次の特性も指定できます。

さらに、システム管理者は、このコマンドが特定のディスクやパスを使用する (あるいは、使用できない) ように指定できます。

トップダウン作成の実装

metassist コマンドは、Solaris ボリュームマネージャのディスクセットを使って、トップダウン作成に使用するボリュームや使用可能なディスクを管理します。 トップダウン作成では、構成要素となるすべてのディスクが、ディスクセットに属しているか、ディスクセットに追加可能であることが必要です。 トップダウン処理では複数のディスクセットに複数のボリュームを作成できますが、使用可能なディスクやコンポーネントの数はディスクセットの機能に依存します。

クラスタ環境以外で metassist コマンドを使用してディスクセットを作成すると、自動取得機能がデフォルトで有効になります。 自動取得機能の詳細については、「自動取得ディスクセット」を参照してください。

トップダウン作成処理

ボリュームのトップダウン作成処理は柔軟で、完全に自動化されたエンドツーエンドの処理と、よりきめ細かでブレークポイントを持つ処理とが可能です (図 241 を参照)。前者の処理では、必要な制約を指定すれば、コマンドの終了時に必要なボリュームが作成されます。後者のブレークポイントでは、XML ベースのファイルを出力できます。

図 241 ボリュームのトップダウン作成のエンドツーエンド処理

metassist の入力には、複数のソースがあります。出力は、ボリューム仕様、コマンドファイル、あるいはボリューム作成に対して行われます。

metassist コマンドは、コマンド行またはファイルからの入力に基づくエンドツーエンドの処理と、システム管理者がファイルベースのデータを指定したりボリューム特性をチェックしたりできる部分処理との、両方をサポートします。

介入が不要な自動ボリューム作成では、コマンド行から必要なサービス品質属性を指定すれば、 metassist コマンドが必要なボリュームを作成してくれます。 次に簡単な例を示します。


# metassist create -s storagepool -S 10Gb 

このコマンドは、ディスクセット storagepool で利用可能な記憶領域を使用して、10G バイトのストライプ方式ボリュームをディスクセット storagepool に作成します。

あるいは、ボリューム要求ファイルにボリュームの特性を定義し、metassist コマンドを実行してこれを実装することもできます。

図 241 でわかるように、システム管理者は、ボリューム仕様ファイルを出力することによって、意図する実装になっているかどうかを確認したり、必要に応じてこのファイルを編集できます。 このボリューム仕様ファイルは以後、metassist コマンドへの入力として使用できます。

図 241 に示すコマンドファイルは、 metassist コマンドで指定した Solaris ボリュームマネージャのデバイス構成を実装するシェルスクリプトです。 システム管理者は、このファイルを使って同じ特性のボリュームを繰り返し作成したり、必要に応じてこのファイルを編集したりすることができます。あるいは、この手順を完全にスキップして、ボリュームを直接、作成することもできます。

始める前に

metassist コマンドを使ってボリュームやボリューム構成を自動的に作成するためには、正しい Solaris ボリュームマネージャ構成が正常に動作していなければなりません。 少なくとも、次のものが必要です。

これらの最小要件に加えて、/etc/inetd.conf ファイルにおいて、ディスクセットの RPC デーモン(rpc.metadrpc.metamhd、および rpc.metamedd) を無効にしてはなりません。 デフォルトでは、これらのデーモンは起動するように構成されています。 Solaris ボリュームマネージャがその機能を完全に使用するためには、これらのデーモンを有効にしておく必要があります。

使用可能なディスクの判別

metassist コマンドは、未使用と思われるディスクをチェックし、使用可能なディスクを慎重に判断します。 すでに使用されていると判断したディスクやスライスは、metassist コマンドが使用できないものと見なします。 コマンドでは、ディスクが次の条件に合致するかどうかがチェックされます。

これらの条件に合うスライスは、metassist コマンドで使用できません。

ボリュームの自動作成

Solaris ボリュームマネージャの metassist コマンドでは、Solaris ボリュームマネージャのボリュームを個別に作成することもできますし、サービス品質条件に基づいて一連のボリュームを同時に作成することもできます。どちらの場合も、コマンドの数は、従来の Solaris ボリュームマネージャのコマンド数よりも少なくてすみます。

ボリュームの自動作成

metassist コマンドでは、RAID 1 (ミラー) ボリュームを直接、作成できます。したがって、RAID 1 (ミラー) ボリュームの構成部分となるサブミラー (連結方式またはストライプ方式) を前もって作成する必要はありません。

Proceduremetassist コマンドを使って RAID 1 (ミラー) ボリュームを作成するには

手順
  1. ボリュームのトップダウン作成 (metassist コマンド) の実行に必要な前提条件が揃っているか確認します。

  2. ミラーの作成に使用する記憶領域を特定します。

    記憶領域を明示的に指定しないと、システムにある未使用の記憶領域を Solaris ボリュームマネージャが特定し、必要に応じて使用します。 記憶領域を指定すると、この記憶領域を Solaris ボリュームマネージャが必要に応じて使用します。記憶領域の指定は、広義に (たとえば、コントローラ 1 のすべての記憶領域) 行う場合もあれば、狭義に (たとえば、c1t4d2 は使用し、c1t4d1 は使用しない) 行う場合もあります。

  3. 次の形式の metassist コマンドを使用して 2 面ミラーを作成します。


    metassist create-s diskset-name-r redundancy -S size
    
    • create は、ボリュームの作成を指示するサブコマンドです。

    • -s diskset-name には、ボリュームの作成に使用するディスクセットの名前を指定します。

    • -r redundancy には、作成する冗長性レベル (データコピーの数) を指定します。

    • -S size には、作成するボリュームのサイズを KB (キロバイト)、MB (メガバイト)、 GB (ギガバイト)、または TB (テラバイト) 単位で指定します。

    詳細は、次の例と metassist(1M) のマニュアルページを参照してください。

  4. metastat コマンドを使って、新しいボリューム (2 つのサブミラー (ストライプ方式) と 1 つのミラー) が作成されているか確認します。


    metastat -s diskset-name
    

metassist コマンドを使って 2 面ミラーを作成する


# metassist create -s myset -r 2 -S 10mb

この例では、metassist コマンドを使って、サイズが 10M バイトの 2 面ミラーを作成します。 metassist コマンドは、未使用のディスクを特定し、これらのディスクを使ってできるだけ条件の良いミラーを作成します。 -s myset 引数は、ボリュームを myset ディスクセット上に作成することを意味します。必要ならこのディスクセットが作成されます。

metassist コマンドを使用して 2 面ミラーとホットスペアを作成する


# metassist create -s myset -f -r 2 -S 10mb
 

この例では、metassist コマンドを使って、サイズが 10M バイトの 2 面ミラーと、障害耐性を強化するホットスペアを作成します。障害耐性は -f オプションで指定します。

metassist コマンドを使用して特定のコントローラにストライプを作成する


# metassist create -s myset -a c1 -S 10mb

この例では、metassist コマンドを使って、コントローラ 1 上の使用可能なディスクからストライプを作成します。使用可能なコントローラを -a オプションで指定します。

metassist コマンドによるボリューム作成の分析

metassist コマンドでは、いくつかの手順を行うことによって、metassist コマンドの実行内容や判断理由を知ることができます。 この情報は、以下のような問題の解決に役立ちます。

metassist コマンドの出力詳細度の指定

metassist コマンドを実行する際には、出力の詳細度を指定できます。 出力が詳細になれば、それだけ問題の診断に役立ちます。たとえば、あるディスクがボリュームの作成になぜ選択されたのか、あるいは選択されなかったのかを判別したり、特定のコマンドがなぜ失敗したのかを判別したりすることが容易になります。 出力の詳細度を下げれば、ユーザーに不必要な情報の出力を減らすことができます。

Proceduremetassist コマンドに詳細出力を指定するには

手順
  1. ボリュームのトップダウン作成 (metassist コマンド) の実行に必要な前提条件が揃っているか確認します。

  2. ボリュームの作成に使用する記憶領域を特定します。

  3. 次の形式の metassist コマンドを使ってストライプを作成し、出力の詳細度を指定します。


    metassist create-s diskset-name -S size-v verbosity
    
    • create は、ボリュームの作成を指示するサブコマンドです。

    • -s diskset-name には、ボリュームの作成に使用するディスクセットの名前を指定します。

    • -S size には、作成するボリュームのサイズを KB (キロバイト)、MB (メガバイト)、 GB (ギガバイト)、または TB (テラバイト) 単位で指定します。

    • -v verbosity では、出力の詳細度を指定します。 デフォルトレベルは 1 です。指定できる値は、0 (出力がほとんどない) から 2 (出力が多い) です。

    詳細は、以下の例と metassist(1M) のマニュアルページを参照してください。

  4. metastat コマンドを使って新しいボリュームの状態を確認します。


    metastat-s diskset-name
    

metassist コマンドに詳細出力を指定する


# metassist create -s myset -f -r 2 -S 10mb -v 2
 

この例では、metassist コマンドを使用して、サイズが 10M バイトの 2 面ミラーと、障害耐性を強化するホットスペアを作成します。障害耐性は -f オプションで指定します。 最後の引数 (-v) では、出力の詳細度として最も大きな値である 2 を指定しています。これによって、metassist コマンドの実行結果が最も詳細に出力されます。

metassist コマンドに最小限の出力詳細度を指定する


# metassist create -s myset -f -r 2 -S 10mb -v 0
 

この例では、metassist コマンドを使って、サイズが 10M バイトの 2 面ミラーと、障害耐性を強化するホットスペアを作成します。障害耐性は -f オプションで指定します。 最後の引数 (-v 0) では、出力の詳細度として最も小さな値である 0 を指定しています。コマンドを実行しても、出力はほとんどありません。

metassist コマンドによるコマンドファイルの作成

metassist コマンドに - c 引数を指定すると、ボリューム構成の作成に使用できるコマンドを含んだ Bourne シェルスクリプトが生成されます。 この方法を使用すれば、ボリュームを実際に作成する前にコマンドを確認したり、場合によっては、必要に応じてスクリプトを微調整することができます。

Proceduremetassist コマンドを使用してコマンドファイルを作成するには

手順
  1. ボリュームのトップダウン作成 (metassist コマンド) の実行に必要な前提条件が揃っているか確認します。

  2. ボリュームの作成に使用する記憶領域を特定します。

  3. ストライプを作成する metassist コマンドを次の形式で使用します。このコマンドでは、このボリュームを実際には作成せず、ボリュームの作成に使用するコマンドシーケンス (シェルスクリプト) を標準出力に送信します。


    metassist create -s diskset-name-S size -c
    
    • create は、ボリュームの作成を指示するサブコマンドです。

    • -s diskset-name には、ボリュームの作成に使用するディスクセットの名前を指定します。

    • -S size には、作成するボリュームのサイズを KB (キロバイト)、MB (メガバイト)、 GB (ギガバイト)、または TB (テラバイト) 単位で指定します。

    • -c は、ボリュームを実際には作成しないことを意味します。 その代わりに、指定した構成を作成するためのシェルスクリプトが、標準出力に送信されます。

    詳細は、以下の例と metassist(1M) のマニュアルページを参照してください。

    -c 引数によって生成されるシェルスクリプトは標準出力に送信されますが、 metassist コマンドのその他の出力は標準エラーに送信されます。したがって、これらの出力ストリームの送信先は自由に変更できます。

metassist コマンドを使ってコマンドファイル (シェルスクリプト) を作成する


# metassist create -s myset -f -r 2 -S 10mb -c
 

この例では、metassist コマンドを使って、サイズが 10M バイトの 2 面ミラーと、障害耐性を強化するホットスペアを作成します。障害耐性は -f オプションで指定します。 最後の引数 (-c) は、ボリュームを実際には作成しないことを意味します。その代わりに、指定した構成を作成するためのシェルスクリプトが、標準出力に送信されます。

metassist コマンドから出力されたコマンドファイル (シェルスクリプト) を保存する


# metassist create -s myset -f -r 2 -S 10mb -c > \
 /tmp/metassist-shell-script.sh
 

この例では、metassist コマンドを使って、サイズが 10M バイトの 2 面ミラーと、障害耐性を強化するホットスペアを作成します。障害耐性は -f オプションで指定します。 最後の引数 (-c) は、ボリュームを実際には作成しないことを意味します。その代わりに、指定した構成を作成するためのシェルスクリプトが、標準出力に送信されます。 コマンドの最後の部分では、標準出力をリダイレクトして /tmp/metassist-shell-script.sh シェルスクリプトを作成することを指定します。このファイルはあとで、指定したボリュームを作成するために使用できます。

metassist コマンドで作成されたシェルスクリプトによるボリュームの作成

metassist コマンドでシェルスクリプトを作成したら、このスクリプトを使ってボリュームを作成できます。ボリュームは、シェルスクリプトの作成時に指定したとおりに作成されます。


metassist コマンドで作成したコマンドスクリプトは、スクリプトを作成したシステムのその時点の構成に大きく依存しています。 したがって、このスクリプトを別のシステムで使用したり、このスクリプトをシステム構成の変更後に使用したりすると、データが壊れたり失われたりすることがあります。


Procedure保存された metassist コマンドのシェルスクリプトを実行するには

手順
  1. ボリュームのトップダウン作成 (metassist コマンド) の実行に必要な前提条件が揃っているか確認します。

  2. シェルスクリプトの作成後にシステム構成が変更されていないことを確認します。さらに、スクリプトを実行するシステムが、このスクリプトを作成したシステムであることを確認します。

  3. 保存されたシェルスクリプトを実行します。


    sh ./metassist-shell-script-name
    
  4. metastat コマンドを使って新しいボリュームの状態を確認します。


    metastat -s diskset-name
    

metassist コマンドによるボリューム構成ファイルの作成

metassist コマンドに -d 引数を指定すると、XML ベースのボリューム構成ファイルが生成されます。このファイルには、ボリュームに関連するすべてのオプションや情報など、ボリュームとそのコンポーネントの詳細が含まれています。 このファイルを調べることによって、metassist コマンドが推奨する構成を知ることができます。 さらに、このボリューム構成ファイルを慎重に変更して構成を微調整したあと、実際のボリューム作成の際に metassist コマンドへの入力として使用することもできます。

Proceduremetassist コマンドを使ってボリューム構成ファイルを作成するには

手順
  1. ボリュームのトップダウン作成 (metassist コマンド) の実行に必要な前提条件が揃っているか確認します。

  2. ボリュームの作成に使用する記憶領域を特定します。

  3. ストライプを作成する metassist コマンドを次の形式で使用します。このコマンドでは、このボリュームを実際には作成せず、作成しようとするボリュームを定義したボリューム構成ファイルを標準出力に送信します。


    metassist create -s diskset-name-S size -d
    
    • create は、ボリュームの作成を指示するサブコマンドです。

    • -s diskset-name には、ボリュームの作成に使用するディスクセットの名前を指定します。

    • -S size には、作成するボリュームのサイズを KB (キロバイト)、MB (メガバイト)、 GB (ギガバイト)、または TB (テラバイト) 単位で指定します。

    • -d は、ボリュームを実際には作成しないことを意味します。 その代わりに、指定した構成を作成するために使用できる XML べースのボリューム構成ファイルが、標準出力に送信されます。

    詳細は、以下の例と metassist(1M) のマニュアルページを参照してください。

    -d 引数によって生成される XML ベースのボリューム構成ファイルは標準出力に送信されますが、metassist コマンドのその他の出力は標準エラーに送信されます。したがって、これらの出力ストリームの送信先は自由に変更できます。

metassist コマンドを使ってボリューム構成ファイルを作成する


# metassist create -s myset -f -r 2 -S 10mb -d 
 

この例では、metassist コマンドを使って、サイズが 10M バイトの 2 面ミラーと、障害耐性を強化するホットスペアを作成します。障害耐性は -f オプションで指定します。 最後の引数 (-d) は、ボリュームを実際には作成しないことを意味します。その代わりに、指定した構成を作成するためのボリューム構成ファイルが、標準出力に送信されます。

metassist コマンドで作成されたボリューム構成ファイルを保存する


# metassist create -s myset -f -r 2 -S 10mb -d >  \
/tmp/metassist-volume-config.xml
 

この例では、metassist コマンドを使って、サイズが 10M バイトの 2 面ミラーと、障害耐性を強化するホットスペアを作成します。障害耐性は -f オプションで指定します。 最後の引数 (-d) は、ボリュームを実際には作成しないことを意味します。その代わりに、指定した構成を作成するためのボリューム構成ファイルが、標準出力に送信されます。 コマンドの最後の部分では、標準出力をリダイレクトして /tmp/metassist-volume-config.xml シェルスクリプトを作成することを指定します。このファイルはあとで、指定したボリュームを作成するために使用できます。

metassist コマンドのデフォルト動作の変更

ボリュームデフォルトファイル (/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 コマンドの動作を指定します。


ファイルを編集する際には、ファイルが /usr/share/lib/xml/dtd/volume-defaults.dtd の文書型定義を逸脱しないように注意してください。 XML ファイルが DTD に準拠していないと、metassist コマンドはエラーメッセージを出して異常終了します。


例 変更した 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 つのスライスと 512KB の飛び越し値からなる 10G バイトのストライプが作成されます。