VINUM(8) FreeBSD システム管理者マニュアル VINUM(8)
名称
vinum − 論理ボリュームマネージャの制御プログラム |
書式
vinum [command] [−options] |
コマンド |
attach plex volume [rename]
attach subdisk plex [offset]
[rename] checkparity [−f] [−v]
plex concat [−f] [−n
name] [−v] drives create [−f] description-file debug debug flags detach [−f] [plex |
subdisk] dumpconfig [drive ...] info [−v] [−V] init [−S size]
[−w] plex | subdisk label volume l | list [−r]
[−s] [−v] [−V]
[volume | plex | subdisk] ld [−r] [−s]
[−v] [−V] [drive] ls [−r] [−s]
[−v] [−V] [subdisk] lp [−r] [−s]
[−v] [−V] [plex] lv [−r] [−s]
[−v] [−V] [volume] mirror [−f] [−n
name] [−s] [−v]
drives move | mv −f drive object
... printconfig [file] quit read disk ... rename [−r] [drive |
subdisk | plex | volume]
newname rebuildparity [−f] [−v]
[−V] plex resetconfig resetstats [−r] [volume |
plex | subdisk] rm [−f] [−r]
volume | plex | subdisk saveconfig setdaemon [value] setstate state [volume | plex
| subdisk | drive] start start [−i interval]
[−S size] [−w]
volume | plex | subdisk stop [−f] [volume |
plex | subdisk] stripe [−f] [−n
name] [−v] drives 解説 |
vinum ユーティリティは、 Vinum 論理ボリュームマネージャのカーネルコンポー ネントと通信します。対話形式と、単独のコマンドを実行する形式のいずれも実 行可能になっています。コマンドライン引数を伴わずに vinum を起動すると対話 形式になる一方、コマンドラインでコマンドを指定するとそのコマンドだけを実 行します。対話モードでは、 vinum はコマンドラインヒストリを保持します。 |
オプション
vinum のコマンドにはオプションを付加することができます。どのコマンドにも 下記オプションのどれでも指定することができますが、オプションが無視される 場合があります。例えば、 stop コマンドは −v オプションと −V オプションを 無視します。 |
−f
−f (‘‘force: 強制’’) オプションは安全性の確認を無効にします。細心 の注意を払って使用して下さい。このオプションは緊急時にのみ使用す るものです。例えば、コマンド rm -f myvolume は myvolume がオープンされていたとしても削除します。以降、このボ リュームにアクセスすると、ほぼ確実にパニックを起こします。 −i millisecs −n name −r −s −S size −v −V −w コマンドの詳細 |
vinum コマンドは以下の機能を実行します。 |
attach plex volume [rename]
attach subdisk plex [offset]
[rename] rename キーワードが指定されると、 vinum はオブジェクトの (プレッ クスの場合には下位のサブディスクの) 名前を変更してデフォルトの vinum 命名規則に合わせます。オブジェクトを他の名前に変更するに は、 rename コマンドを使用します。 サブディスク結合に際しては、いくつか考慮すべきことがあります: • サブディスクの結合対象は、通常、コンカチネート化プレックスの みです。 • ストライプ化プレックスおよび RAID-5 プレックスにおいてサブ ディスクが失われた場合 (例えばドライブの故障後など)、当該サブ ディスクを置き換えられるのは同じ大きさのサブディスクだけで す。 • ストライプ化または RAID-5 のプレックスに更にサブディスクを追 加するには、 −f (強制) オプションを使用します。これはプレック ス内のデータを破壊します。 • コンカチネート化プレックスに対しては、 offset パラメータが、 プレックスの先頭からのブロック単位のオフセットを指定します。 ストライプ化プレックスおよび RAID-5 プレックスに対しては、本 パラメータは、サブディスクの最初のブロックのオフセットを指定 します。別の表現をするなら、オフセットは、サブディスクの数値 指定による位置とストライプの大きさとの積になります。例えば、 ブロックの大きさが 271k のプレックスでは、最初のサブディスク はオフセット 0 に、2 番目のオフセットは 271k に、 3 番目は 542k に、などとなります。この計算では、RAID-5 プレックスのパ リティブロックは無視されます。 checkparity [−f] [−v]
plex −f フラグが指定されると、 checkparity はプレックスの先頭から チェックを開始します。 −v フラグが指定されると、 checkparity は進 捗報告を表示します。 concat [−f] [−n
name] [−v] drives 通常、 concat コマンドは任意の名前をボリュームと構成要素に付けま す。名前はテキスト ‘‘vinum’’ および小さな整数からなり、例えば ‘‘vinum3’’ となります。ボリュームに対して指定した名前を割り当てる −n name オプションで、上書きすることが可能です。プレックスとサブ ディスクの名前は、通常の作法で、ボリューム名からとられます。 ドライブの名前には選択の余地はありません。ドライブが既に vinum ド ライブとして初期化されていた場合、名前はそのままになります。そう でない場合、ドライブにはテキスト ‘‘vinumdrive’’ と小さな整数から 始まる名前が与えられ、例えば ‘‘vinumdrive7’’ となります。 create コマンドと同様、 −f オプションを使用して、以前の名前の上書きを指 定可能です。 −v オプションは、冗長な出力のために使用します。 このコマンドの例は、後述の 単純な設定の節を参照してください。 create [−f]
description-file vinum create 機能は加法的であることに注意してください: 複数回実行 すると、名前付けしていない全オブジェクトのコピーを、複数生成する ことになります。 通常 create は既存の vinum ドライブの名前を変更しません。これは、 誤って消去してしまうのを避けるためです。不要な vinum ドライブを破 棄する正しい方法は、 resetconfig コマンドで設定をリセットすること です。しかし、起動できない vinum ドライブ上に新規データを生成する 必要がある場合があります。この場合、 create −f を使用してくださ い。 debug debug flags DEBUG_ADDRESSES (1) DEBUG_RESID (4) DEBUG_LASTREQS (8) DEBUG_REVIVECONFLICT (16) DEBUG_EOFINFO (32) DEBUG_MEMFREE (64) DEBUG_REMOTEGDB (256) DEBUG_WARNINGS (512) detach [ ストライプ化プレックスおよび RAID-5 プレックスにおいては、 detach はサブディスク数を減らしません。その代わり、サブディスクには存在 しないという印が付けられ、後で attach コマンドを使用して交換可能 となります。 dumpconfig [drive ...] info −V オプションを付けると、 vinum ドライバが扱った最大 64 個までの 最近の I/O リクエストに関する情報を、 info は表示します。この情報 は、デバッグフラグ 8 が設定されているときのみ収集されます。書式は 次のようになります: vinum -> info -V Time Event Buf Dev Offset Bytes SD SDoff Doffset Goffset 14:40:00.637758 1VS Write 0xf2361f40 91.3 0x10 16384 Buf フィールドは、ユーザバッファヘッダのアドレスを常に含みます。 ユーザリクエストに関連付けられるリクエスト (複数可) を識別するた めに使用できますが、100% 信頼できるものというわけではありません: 理論的には、シーケンス中の 2 個のリクエストが同じバッファヘッダを 使い得ますが、これは一般的ではありません。リクエストの先頭は、イ ベント 1VS または 7VS で識別可能です。前述の 1 番目の例は、ユーザ 要求に関連するリクエストを示しています。 2 番目は、ロックを伴うサ ブディスク I/O リクエストです。前記の例では、複数のリクエストが単 一のユーザリクエストに含まれています。 Event フィールドは、リクエストチェーン中のイベントシーケンスに関 連する情報を含みます。 1 から 6 までの数字はイベントの大まかな シーケンスを示し、 2 文字の省略形は位置のニーモニックです。 |
1VS
(vinum の strategy) vinumstrategy() の入口にある、ユー ザリクエストに関する情報を表示します。デバイス番号は vinum デバイスであり、オフセットと長さはユーザパラメー タです。本ニーモニックは、常にリクエストシーケンスの先 頭になります。 2LR ここから後のリクエストでは、利用可能である場合、 Dev は関連付けら れたディスクパーティションのデバイス番号であり、 Offset はパー ティションの先頭からのオフセットであり、 SD は vinum_conf 中のサ ブディスクインデックスであり。 SDoff はサブディスクの先頭からのオ フセットであり、 Doffset は関連付けられたデータリクエストのオフ セットであり、 Goffset は関連付けられたグループリクエストのオフ セットです。 3RQ 4DN 5RD 6RP 7VS 8LR Lockwait Lock Unlock init [−S size]
[−w] plex | subdisk −S オプションでデフォルト値の 16 kB と異なるサイズの書き込みブ ロックを指定できます。 vinum は初期化が完了するとコンソールメッ セージを出力します。 label volume list [−r] [−V]
[volume | plex | subdisk] −r オプションはボリュームとプレックスに関連します。指定されると、 そのオブジェクト下位のサブディスクと (ボリュームに対しては) プ レックスの情報を再帰的に表示します。 lv, lp, ls, ld のコマンド は、それぞれボリューム、プレックス、サブディスク、そしてドライブ の情報だけを表示します。これはパラメータを指定しないで使う場合に 特に有用です。 −s オプションで vinum は装置の統計情報を出力するようになり、 −v (verbose: 饒舌な) オプションはいくらかの付加情報を出力させ、そし て −V は数多くの付加情報を出力させます。 mirror [−f] [−n
name] [−s] [−v]
drives −s オプションを指定すると、 mirror はストライプの大きさが 279 kB のストライプ化プレックスを構築します。各プレックスのサブディスク の大きさは、プレックスを構成するドライブの中で、最小の連続スト レージの大きさです。ここでもまた、プレックスの大きさは異なるかも しれません。 通常、 mirror コマンドは任意の名前をボリュームと構成要素に付けま す。名前はテキスト ‘‘vinum’’ および小さな整数からなり、例えば ‘‘vinum3’’ となります。ボリュームに対して指定した名前を割り当てる −n name オプションで、上書きすることが可能です。プレックスとサブ ディスクの名前は、通常の作法で、ボリューム名からとられます。 ドライブの名前には選択の余地はありません。ドライブが既に vinum ド ライブとして初期化されていた場合、名前はそのままになります。そう でない場合、ドライブにはテキスト ‘‘vinumdrive’’ と小さな整数から 始まる名前が与えられ、例えば ‘‘vinumdrive7’’ となります。 create コマンドと同様、 −f オプションを使用して、以前の名前の上書きを指 定可能です。 −v オプションは、冗長な出力のために使用します。 このコマンドの例は、後述の 単純な設定の節を参照してください。 mv −f drive object ... この機能は現在サブディスク中のデータを保存しないため −f オプショ ンが必要です。この付加機能は、後日追加されます。しかしながら、こ の状態でも、故障したディスクドライブを復旧させるのには十分です。 printconfig [file] quit read disk ... read コマンドは、他の vinum パーティションを持つシステム上で、 vinum 設定を選択的にロードすることを意図しています。システム上の 全パーティションを起動したい場合、 start コマンドを使用する方が簡 単です。 本コマンド実行時に vinum がエラーになると、ディスク上のコピーが壊 れないようにするため、自動的な設定更新を無効にします。これは、 ディスク上の設定が、設定エラーを示す (例えば、有効な空間指定を持 たないサブディスク) 場合にも同様です。再度更新をオンにするには、 setdaemon と saveconfig のコマンドを使用してください。デーモンオ プションマスクのビット 2 (数値なら 4) をリセットして、設定保存を 再度有効にしてください。 rebuildparity [−f] [−v]
[−V] plex −f フラグが指定されると、 rebuildparity はプレックスの先頭から再 構築を開始します。 −v フラグが指定されると、 rebuildparity はまず 既存のパリティブロックをチェックし、再構築前に、不整合情報を表示 します。 −V フラグが指定されると、 rebuildparity は進捗報告を表示 します。 rename [−r] [drive |
subdisk | plex | volume]
newname resetconfig # vinum resetconfig WARNING! This command will completely wipe out your
vinum NO FUTURE (訳注: ここから上記テキストの翻訳です) NO FUTURE メッセージが示すように、どたん場のコマンドです。既存の設定をもう 見たくもないとき以外は、このコマンドを使わないでください。 |
resetstats [−r] [volume | plex | subdisk]
vinum は各オブジェクトについて多数の統計カウンタを保持していま す。詳細はヘッダファイル <sys/dev/vinumvar.h> を参照して下さい。 これらのカウンタをリセットするためには resetstats コマンドを使っ て下さい。 −r オプションも共に指定すると、 vinum は下位のオブジェ クトのカウンタもリセットします。 rm [−f] [−r]
volume | plex | subdisk 通常、 vinum は下位にプレックスを持つボリュームや、下位にサブディ スクを持つプレックスを消去することを拒否します。 −f フラグを指定 すると、 vinum は無条件にオブジェクトを消去します。または −r (recursive: 再帰的) フラグを使うことで、同様に下位のオブジェクト を消去することができます。 −r フラグを付けてボリュームを消去する と、プレックスとそれに属するサブディスクも消去します。 saveconfig setdaemon [value] setstate state [volume | plex
| subdisk | drive] start [−i interval]
[−S size] [−w] [plex
| subdisk] オブジェクト名を指定しないと、システムが vinum ドライブであると 知っているディスクを、 vinum は走査します。その後、 read コマンド のところに書いてあるように、設定を読み込みます。 vinum ドライブに はそのドライブ中のデータについてのすべての情報を持つヘッダが入っ ており、その情報としてはプレックスとボリュームを表現するために必 要な他のドライブの名前を含んでいます。 本コマンド実行時に vinum がエラーになると、ディスク上のコピーが壊 れないようにするため、自動的な設定更新を無効にします。これは、 ディスク上の設定が、設定エラーを示す (例えば、有効な空間指定を持 たないサブディスク) 場合にも同様です。再度更新をオンにするには、 setdaemon と saveconfig のコマンドを使用してください。デーモンオ プションマスクのビット 4 をリセットして、設定保存を再度有効にして ください。 オブジェクト名が指定されると、 vinum はそれらを起動します。通常、 この操作はサブディスクに対してのみ行います。動作はオブジェクトの 現在の状態に依存します: • オブジェクトが既に up 状態の場合、 vinum はなにもしません。 • オブジェクトがサブディスクであり、 down または reborn の状態 の場合、 vinum は up 状態に変更します。 • オブジェクトがサブディスクであり、 empty 状態の場合、変更はサ ブディスクに依存します。サブディスクがプレックスの一部であり このプレックスが他のプレックスを含むボリュームの一部である場 合、 vinum はサブディスクを reviving 状態にし、データをボ リュームからコピーしようとします。操作完了時に、サブディスク は up 状態に設定されます。サブディスクがプレックスの一部であ りこのプレックスが他のプレックスを含まないボリュームの一部で ある場合、またはサブディスクがプレックスの一部ではない場合、 vinum は即時にサブディスクを up 状態にします。 • オブジェクトがサブディスクであり、 reviving 状態である場合、 vinum は再生操作をオフラインにて継続します。操作完了時に、サ ブディスクは up 状態に設定されます。 サブディスクが up 状態になると、 vinum は自動的に、サブディスクが 属す可能性のあるプレックスとボリュームの状態をチェックし、これら の状態を適切に更新します。 オブジェクトがプレックスの場合、 start は下位のサブディスクの (ボ リュームの場合にはこれに加えてプレックスの) 状態をチェックし、起 動可能なサブディスクを起動します。 マルチプレックスボリュームの中の 1 つのプレックスを起動するには、 ボリューム中の他のプレックスからデータをコピーする必要がありま す。これにはしばしば長い時間がかかるため、バックグラウンドで実行 されます。この操作が完了することを待ちたい場合 (例えば、この操作 をスクリプト中で実行している場合)、 −w オプションを使用してくださ い。 データのコピーにはたいして時間がかかりません。それは、さらに重大 な負荷をシステムにかけ得ます。 −S オプションで転送サイズを、 −i オプションで各ブロックを転送する間隔を (ミリ秒で) 指定可能です。 どちらもシステム負荷を軽減します。 stop [−f] [volume |
plex | subdisk] stop コマンドは vinum が kld としてロードされている場合のみ動作し ます。静的に構成されたドライバをアンロードすることはできないから です。 vinum が静的に構成されている場合、 vinum stop は失敗しま す。 オブジェクト名が指定されると、 stop はそのオブジェクトへのアクセ スを無効化します。オブジェクトに下位オブジェクトがある場合、それ らのサブオブジェクトは既に非活動状態 (stop また error) となってい るか、 −r と −f のオプションが指定されていることが必要です。この コマンドは、オブジェクトを設定から取り除きません。 start コマンド の後で再度アクセスができるようになります。 デフォルトでは vinum は動作中のオブジェクトは停止しません。例え ば、動作中のボリュームに結合されているプレックスは停止できない し、オープン中のボリュームは停止できません。 −f オプションは vinum にこの確認を省略して無条件に削除するよう指示します。このオ プションは大いに注意し、よく理解した上で使って下さい。もし間違っ て使うとひどいデータ破壊を起こすことがあります。 stripe [−f] [−n
name] [−v] drives 通常、 stripe コマンドは任意の名前をボリュームと構成要素に付けま す。名前はテキスト ‘‘vinum’’ および小さな整数からなり、例えば ‘‘vinum3’’ となります。ボリュームに対して指定した名前を割り当てる −n name オプションで、上書きすることが可能です。プレックスとサブ ディスクの名前は、通常の作法で、ボリューム名からとられます。 ドライブの名前には選択の余地はありません。ドライブが既に vinum ド ライブとして初期化されていた場合、名前はそのままになります。そう でない場合、ドライブにはテキスト ‘‘vinumdrive’’ と小さな整数から 始まる名前が与えられ、例えば ‘‘vinumdrive7’’ となります。 create コマンドと同様、 −f オプションを使用して、以前の名前の上書きを指 定可能です。 −v オプションは、冗長な出力のために使用します。 このコマンドの例は、後述の 単純な設定の節を参照してください。 単純な設定 |
この節では、 concat, mirror, stripe コマンドを使用する、 vinum 設定の単純 なインタフェースを説明します。これらのコマンドは、大概の通常状況では便利 な設定を作成しますが、 create コマンド程の柔軟性はありません。 コマンドの解説は前述を参照してください。ここでは例を示します。どれも同じ ディスクを使用しています。最初のドライブ /dev/da1h は他のドライブよりも小 さいことに注意してください。各サブディスクの大きさに影響があります。 次に示す例ではすべて −v オプションを使用することにより、システムに渡すコ マンドを見せ、ボリュームの構造を列挙します。 −v オプションを使用しない と、これらのコマンドは何も出力しません。 |
単一コンカチネート化プレックスのボリューム |
単一コンカチネート化プレックスのボリュームを使用し、最大のストレージ容量 を得ます。ただし、ドライブ故障への耐性はありません。 vinum -> concat -v /dev/da1h /dev/da2h /dev/da3h /dev/da4h volume vinum0 plex name vinum0.p0 org concat drive vinumdrive0 device /dev/da1h sd name vinum0.p0.s0 drive vinumdrive0 size 0 drive vinumdrive1 device /dev/da2h sd name vinum0.p0.s1 drive vinumdrive1 size 0 drive vinumdrive2 device /dev/da3h sd name vinum0.p0.s2 drive vinumdrive2 size 0 drive vinumdrive3 device /dev/da4h sd name vinum0.p0.s3 drive vinumdrive3 size 0 V vinum0 State: up Plexes: 1 Size: 2134 MB P vinum0.p0 C State: up Subdisks: 4 Size: 2134 MB S vinum0.p0.s0 State: up D: vinumdrive0 Size: 414 MB S vinum0.p0.s1 State: up D: vinumdrive1 Size: 573 MB S vinum0.p0.s2 State: up D: vinumdrive2 Size: 573 MB S vinum0.p0.s3 State: up D: vinumdrive3 Size: 573 MB この場合、4 ディスクすべての空間を使用し、ボリュームの大きさは 2134 MB に なります。 |
単一ストライプ化プレックスのボリューム |
単一ストライプ化プレックスのボリュームはコンカチネート化プレックスよりも 性能が良いかもしれません。しかし、ストライプ化プレックスの制約により、ボ リュームは小さいかもしれません。これもまたドライブ故障の耐性はありませ ん。 vinum -> stripe -v /dev/da1h /dev/da2h /dev/da3h /dev/da4h drive vinumdrive0 device /dev/da1h drive vinumdrive1 device /dev/da2h drive vinumdrive2 device /dev/da3h drive vinumdrive3 device /dev/da4h volume vinum0 plex name vinum0.p0 org striped 279k sd name vinum0.p0.s0 drive vinumdrive0 size 849825b sd name vinum0.p0.s1 drive vinumdrive1 size 849825b sd name vinum0.p0.s2 drive vinumdrive2 size 849825b sd name vinum0.p0.s3 drive vinumdrive3 size 849825b V vinum0 State: up Plexes: 1 Size: 1659 MB P vinum0.p0 S State: up Subdisks: 4 Size: 1659 MB S vinum0.p0.s0 State: up D: vinumdrive0 Size: 414 MB S vinum0.p0.s1 State: up D: vinumdrive1 Size: 414 MB S vinum0.p0.s2 State: up D: vinumdrive2 Size: 414 MB S vinum0.p0.s3 State: up D: vinumdrive3 Size: 414 MB この場合、サブディスクの大きさは利用できるディスクの最小に制限され、ボ リュームの大きさは 1659 MB になります。 |
2 つのコンカチネート化プレックスのミラー化ボリューム |
信頼性を向上するため、ミラー化およびボリューム化を使用します: vinum -> mirror -v -n mirror /dev/da1h /dev/da2h /dev/da3h /dev/da4h drive vinumdrive0 device /dev/da1h drive vinumdrive1 device /dev/da2h drive vinumdrive2 device /dev/da3h drive vinumdrive3 device /dev/da4h volume mirror setupstate plex name mirror.p0 org concat sd name mirror.p0.s0 drive vinumdrive0 size 0b sd name mirror.p0.s1 drive vinumdrive2 size 0b plex name mirror.p1 org concat sd name mirror.p1.s0 drive vinumdrive1 size 0b sd name mirror.p1.s1 drive vinumdrive3 size 0b V mirror State: up Plexes: 2 Size: 1146 MB P mirror.p0 C State: up Subdisks: 2 Size: 988 MB P mirror.p1 C State: up Subdisks: 2 Size: 1146 MB S vinum0.p0.s0 State: up D: vinumdrive0 Size: 414 MB S vinum0.p0.s2 State: up D: vinumdrive2 Size: 414 MB S vinum0.p0.s1 State: up D: vinumdrive1 Size: 414 MB S vinum0.p0.s3 State: up D: vinumdrive3 Size: 414 MB この例ではボリューム名を mirror と指定しています。 1 つのドライブの大きさ が他のドライブよりも小さいため、 2 つのプレックスの大きさは異なり、ボ リュームの最後の 158 MB には耐性がありません。このような状況で完全な信頼 性を保証するためには、 create コマンドを使用して 988 MB のボリュームを作 成します。 |
2 つのストライプ化プレックスのミラー化ボリューム |
今度は、2 つのストライプ化プレックスのミラー化ボリュームを作成するために −s オプションを使用します: vinum -> mirror -v -n raid10 -s /dev/da1h /dev/da2h /dev/da3h /dev/da4h drive vinumdrive0 device /dev/da1h drive vinumdrive1 device /dev/da2h drive vinumdrive2 device /dev/da3h drive vinumdrive3 device /dev/da4h volume raid10 setupstate plex name raid10.p0 org striped 279k sd name raid10.p0.s0 drive vinumdrive0 size 849825b sd name raid10.p0.s1 drive vinumdrive2 size 849825b plex name raid10.p1 org striped 279k sd name raid10.p1.s0 drive vinumdrive1 size 1173665b sd name raid10.p1.s1 drive vinumdrive3 size 1173665b V raid10 State: up Plexes: 2 Size: 1146 MB P raid10.p0 S State: up Subdisks: 2 Size: 829 MB P raid10.p1 S State: up Subdisks: 2 Size: 1146 MB S raid10.p0.s0 State: up PO: 0 B Size: 414 MB S raid10.p0.s1 State: up PO: 279 kB Size: 414 MB S raid10.p1.s0 State: up PO: 0 B Size: 573 MB S raid10.p1.s1 State: up PO: 279 kB Size: 573 MB この場合、使用可能なボリュームはより小さくなります。なぜなら、最小のドラ イブに適合するように、第 1 プレックスが小さくなったためです。 |
設定ファイル
vinum ユーティリティでは、 create コマンドに渡すすべての引数は設定ファイ ルに入っている必要があります。設定ファイルのエントリは、ボリュームやプ レックスやサブディスクを定義します。エントリは 1 行に 1 つということ以外 には決まった書式はありません。 |
スケールファクタ |
これらの値は、バイトで指定しても良いですし、次のスケールファクタのいずれ か 1 つを後に付けても良いです: |
s
値が 512 バイトのセクタ数であることを示します。 k m g b 例えば、16777216 バイトという値は、 16m, 16384k, 32768s のいずれの表記も 可能です。 設定ファイルには以下のエントリを記述することができます。 drive name devicename [options] device devicename hotspare volume name [options] plex plexname readpol policy setupstate RAID-5 プレックスには init を使うことが 必要な ことに注意して下さい。さもないと 1 つのサブディ スクに障害が起きた時、大きくデータが破壊されま す。 plex [options] name plexname org organization [stripesize] 最適な性能のためには、ストライプの大きさは少な くとも 128kB であるべきです。これより小さくする と、個々のリクエストが複数のディスクに対して割 り当てられることにより、 I/O のアクティビティが 非常に増加します。本マッピングによる並行転送数 増加に起因する性能向上は、レイテンシ増加に起因 する性能劣化を引き起しません。ストライプの大き さの目安は、256 kB から 512 kB の間です。 2 の 羃乗は避けるべきです。 2 の羃乗を使用すると、す べてのスーパブロックを最初のサブディスクに置く 傾向があるからです。単純なコマンドでは、ストラ イプの大きさに 279 kB を使用するため、スーパブ ロックが適度に分散されます。 ストライプ化プレックスは最低 2 つのサブディスク を持つ必要がありますし (そうでないとコンカチ ネート化プレックスになります)、それぞれは同じ大 きさである必要があります。 RAID-5 プレックスは 最低 3 つのサブディスクを持つ必要があり、それぞ れは同じ大きさである必要があります。実際には RAID-5 プレックスは最低 5 つのサブディスクから 構成されるべきです。 volume volname sd sdname offset subdisk [options] name name サブディスクの名前を指定します。これは必ずしも 指定する必要はありません。上記の オブジェクトの 命名を参照してください。サブディスクに名前をつ ける場合には name キーワードを指定する必要があ ることに注意して下さい。 plexoffset offset プレックス内のサブディスクの始点を指定します。 指定がないと、 vinum はすでにサブディスクがあれ ばその直後の領域を割り当て、なければプレックス の先頭から割り当てます。 driveoffset offsetドライブ内のサブディスクの始点を指定します。指 定がないと、 vinum はドライブ中で最初の length バイト連続の空き領域を割り当てます。 length length サブディスクの大きさを指定します。このキーワー ドは必須です。デフォルト値はありません。値 0 を 指定すると、 ‘‘ドライブ上で最大限利用可能な連続 空き領域を使用’’ という意味になります。ドライブ が空の場合、サブディスクとしてドライブ全体を使 用することを意味します。 length は len と短縮す ることもできます。 plex plex サブディスクが属すプレックスを指定します。デ フォルトでは、サブディスクは最後に記述されたプ レックスに属します。 drive drive サブディスクが乗るドライブを指定します。デフォ ルトでは最後に記述されたドライブ上に位置しま す。 retryerrors 回復不能エラーが発生しても、サブディスクがダウ ンとみなさないように指定します。通常、 vinum は、回復不能エラーが発生すると、サブディスク全 体をアクセス不能とします。 設定ファイル例 |
# vinum 設定ファイル例 # # ドライブ drive drive1 device /dev/da1h drive drive2 device /dev/da2h drive drive3 device /dev/da3h drive drive4 device /dev/da4h drive drive5 device /dev/da5h drive drive6 device /dev/da6h # 1 つのストライプ化プレックスをもつボリューム volume tinyvol plex org striped 279k sd length 64m drive drive2 sd length 64m drive drive4 volume stripe plex org striped 279k sd length 512m drive drive2 sd length 512m drive drive4 # 2 つのプレックス volume concat plex org concat sd length 100m drive drive2 sd length 50m drive drive4 plex org concat sd length 150m drive drive4 # 1 つのストライプ化プレックスと 1 つのコンカチネート化プレックスを持つ # ボリューム volume strcon plex org striped 279k sd length 100m drive drive2 sd length 100m drive drive4 plex org concat sd length 150m drive drive2 sd length 50m drive drive4 # 1 つの RAID-5 プレックスと 1 つのストライプ化プレックスを持つボリューム # RAID-5 ボリュームの方が 1 つのサブディスク分だけ大きいことに注意 volume vol5 plex org striped 491k sd length 1000m drive drive2 sd length 1000m drive drive4 plex org raid5 273k sd length 500m drive drive1 sd length 500m drive drive2 sd length 500m drive drive3 sd length 500m drive drive4 sd length 500m drive drive5 |
ドライブレイアウト上の考慮点
現在、 vinum ドライブは BSD ディスクパーティションです。それは他の用途で 使用されているデータの上書きを避けるために vinum タイプである必要がありま す。 disklabel −e を使用して、パーティションタイプ定義を編集してくださ い。次の表示は、 disklabel(8) が示す典型的なパーティションレイアウトです: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 81920 344064 4.2BSD 0 0 0 # (Cyl. 240*- 297*) b: 262144 81920 swap # (Cyl. 57*- 240*) c: 4226725 0 unused 0 0 # (Cyl. 0 - 2955*) e: 81920 0 4.2BSD 0 0 0 # (Cyl. 0 - 57*) f: 1900000 425984 4.2BSD 0 0 0 # (Cyl. 297*- 1626*) g: 1900741 2325984 vinum 0 0 0 # (Cyl. 1626*- 2955*) この例では、パーティション ‘‘g’’ を vinum パーティションとして使用可能で す。パーティション ‘‘a’’, ‘‘e’’, ‘‘f’’ は、 UFS ファイルシステムまたは ccd パーティションとして使用可能です。パーティション ‘‘b’’ はスワップパー ティションであり、パーティション ‘‘c’’ はディスク全体を表現するため他の用 途に使用できません。 vinum ユーティリティは各パーティションの先頭から 265 セクタを設定情報に使 用するため、サブディスクの最大の大きさはドライブよりも 265 セクタ小さくな ります。 |
ログファイル
vinum ユーティリティはログファイルを管理します。ログファイルは、デフォル トでは /var/log/vinum_history であり、 vinum に対して発行したコマンドの履 歴を保持します。環境変数 VINUM_HISTORY をファイルの名前に設定することによ り、このファイルの名前をオーバライド可能です。 ログファイル中のメッセージの前には日付が付きます。デフォルトの書式は "%e %b %Y %H:%M:%S" です。書式の文字列に関するさらなる詳細については strftime(3) を参照してください。これは環境変数 VINUM_DATEFORMAT でオーバ ライド可能です。 |
VINUM 設定法
本節では、 vinum システムの実装方法に関する、現実的なアドバイスを行いま す。 |
データを何処に置くか |
まず決定が必要な選択は、データを何処に置くかです。 vinum 専用のディスク パーティションが必要です。これらは、デバイスやパーティション ‘‘c’’ ではな く、パーティションであるべきです。例えば、適切な名前とは、 /dev/da0e や /dev/ad3s4a です。不適切な名前とは、パーティションではなくデバイスを表現 する /dev/da0, /dev/da0s1 や、ディスク全体を表現しタイプ unused であるべ き /dev/ad1c です。前述の、 ドライブレイアウト上の考察点下にある使用例を 参照してください。 |
ボリュームのデザイン |
vinum ボリュームの設定方法は、あなたの意図に依存します。次のように多くの 可能性があります: |
1. 多くの小さなディスクを結合して、適切な大きさのファイルシステムを作成したいと考えるかもしれません。例えば、小さなディスクを 5 個持っていて、全空間を単一ボリュームとして使用したい場合、次のような設定ファイルを書きます:
drive d1 device /dev/da2e この場合、サブディスクの長さを 0 と指定します。これは、 ‘‘ドライブ上 にある空き空間のうち、最大領域を使用する’’ ことを意味します。指定す るサブディスクが、ドライブ上の唯一のサブディスクである場合、このサブ ディスクは使用可能な空間全体を使用します。 |
2. ディスク故障に対する追加の回復力 (レジリエンス; resilience) を vinumに与えたい場合を考えます。選択肢としては、 ‘‘ミラーリング’’ とも呼ばれる RAID-1 か、 ‘‘パリティ’’ とも呼ばれる RAID-5 があります。 ミラーリングの設定のためには、単一ボリュームの中に複数のプレックスを作成する必要があります。例えば、 2 GB のミラー化ボリュームを作成するには、次のような設定ファイルを作成します:
drive d1 device /dev/da2e ミラー化ドライブを作成するときには、各プレックスからのデータが、違う 物理ディスク上にあることを保証することが重要です。これにより、単一ド ライブ故障においても、 vinum はボリュームの完全なアドレス空間にアク セス可能となります。各プレックスが、完全なボリュームと同じだけのデー タを必要とすることに注意してください: この例では、ボリュームは 2 GB の大きさですが、各プレックス (と各サブディスク) は 2 GB を必要としま すので、全体のディスクストレージ要求は 4 GB となります。 RAID-5 の設定をするには、タイプ raid5 の単一プレックスを作成します。 例えば、回復力を持つ 2 GB に相当するボリュームを作成するには、次のよ うな設定ファイルを使用します: drive d1 device /dev/da2e drive d2 device /dev/da3e drive d3 device /dev/da4e drive d4 device /dev/da5e drive d5 device /dev/da6e volume raid plex org raid5 433k sd length 512m drive d1 sd length 512m drive d2 sd length 512m drive d3 sd length 512m drive d4 sd length 512m drive d5 RAID-5 プレックスは、最低 3 個のサブディスクを必要とします。これらの うち 1 個には、パリティ情報を格納するので、データストレージとしては 使用しません。より多くのディスクを使用すると、より多くの割合のディス クストレージを、データストレージとして使用可能となります。この例で は、総ストレージ使用量は 2.5 GB です。これに対し、ミラー設定での総ス トレージ使用量は 4 GB です。最小の 3 個のディスクだけを使用する場 合、情報格納のために次のように 3 GB を必要とします: drive d1 device /dev/da2e drive d2 device /dev/da3e drive d3 device /dev/da4e volume raid plex org raid5 433k sd length 1g drive d1 sd length 1g drive d2 sd length 1g drive d3 ミラー化ドライブを作成するときには、各サブディスクからのデータが、違 う物理ディスク上にあることを保証することが重要です。これにより、単一 ドライブ故障においても、 vinum はボリュームの完全なアドレス空間にア クセス可能となります。 |
3. また、 vinum の設定により、ファイルシステムへのアクセスの並行性を増したいと考えるかもしれません。多くの場合、単一のファイルシステムへのアクセスは、ディスク速度により制限されます。ボリュームを複数のディスクに分散することにより、複数アクセス環境でのスループットを増すことが可能です。この技術は、単一アクセス環境では、ほとんど効果がないかまったく効果がありません。 vinum ユーティリティは ‘‘ストライピング’’ または RAID-0 とも呼ばれる技術を使用し、アクセスの並行性を増します。RAID-0 という名称は誤解を生じさせるものです: なぜなら、ストライピングは冗長性も更なる信頼性も提供しないからです。実際、信頼性は低下します。なぜなら、単一ディスクの故障はボリュームを使用不可とし、多くのディスクを使うほどこれらのうち 1 個が故障する確率は増加するからです。 ストライピングの実装のためには、 striped (ストライプ化) プレックスを使用します:
drive d1 device /dev/da2e ストライプ化プレックスの最低サブディスク数は 2 個です。多くのディス クを使用するほど、性能が向上します。 |
4. 両方の最良点を得ることにより、回復力と性能の両方を得ることを考えます。これは、RAID-10 (RAID-1 と RAID-0 の組み合わせ) と呼ばれることがあります。この名称もまた誤解を生じさせるものです。 vinum では、次のような設定ファイルを使用可能です:
drive d1 device /dev/da2e ここでは、プレックスはストライプ化され、性能を向上しています。そし て、このようなプレックスが 2 個あり、回復力を向上しています。この例 で、2 番目のプレックスのサブディスクの順番が、 1 番目のプレックスの 逆になっていることに注意してください。これは性能のためであり、後で議 論します。更に、ボリューム指定にキーワード setupstate を含み、全プ レックスが作成後に up となることを保証しています。 |
ボリュームの作成 |
ひとたび設定ファイルを作成した後は、 vinum を起動し、ボリュームを作成しま す。この例では、設定ファイルは configfile です: # vinum create -v configfile 1: drive d1 device /dev/da2e 2: drive d2 device /dev/da3e 3: volume mirror 4: plex org concat 5: sd length 2g drive d1 6: plex org concat 7: sd length 2g drive d2 Configuration summary Drives: 2 (4 configured) Volumes: 1 (4 configured) Plexes: 2 (8 configured) Subdisks: 2 (16 configured) Drive d1: Device /dev/da2e Created on vinum.lemis.com at Tue Mar 23 12:30:31 1999 Config last updated Tue Mar 23 14:30:32 1999 Size: 60105216000 bytes (57320 MB) Used: 2147619328 bytes (2048 MB) Available: 57957596672 bytes (55272 MB) State: up Last error: none Drive d2: Device /dev/da3e Created on vinum.lemis.com at Tue Mar 23 12:30:32 1999 Config last updated Tue Mar 23 14:30:33 1999 Size: 60105216000 bytes (57320 MB) Used: 2147619328 bytes (2048 MB) Available: 57957596672 bytes (55272 MB) State: up Last error: none Volume mirror: Size: 2147483648 bytes (2048 MB) State: up Flags: 2 plexes Read policy: round robin Plex mirror.p0: Size: 2147483648 bytes (2048 MB) Subdisks: 1 State: up Organization: concat Part of volume mirror Plex mirror.p1: Size: 2147483648 bytes (2048 MB) Subdisks: 1 State: up Organization: concat Part of volume mirror Subdisk mirror.p0.s0: Size: 2147483648 bytes (2048 MB) State: up Plex mirror.p0 at offset 0 Subdisk mirror.p1.s0: Size: 2147483648 bytes (2048 MB) State: up Plex mirror.p1 at offset 0 −v フラグは、設定に従ってファイルをリストするよう、 vinum に指示します。 その後、 list −v コマンドと同じ書式で、現在の設定をリストします。 |
より多くのボリュームを作成する |
ひとたび vinum ボリュームを作成した後は、 vinum はこれらの情報を内部の設 定ファイルにて管理します。再度作成する必要はありません。特に、 create コ マンドを再実行すると、追加のオブジェクトを作ることになります: # vinum create sampleconfig Configuration summary Drives: 2 (4 configured) Volumes: 1 (4 configured) Plexes: 4 (8 configured) Subdisks: 4 (16 configured) D d1 State: up Device /dev/da2e Avail: 53224/57320 MB (92%) D d2 State: up Device /dev/da3e Avail: 53224/57320 MB (92%) V mirror State: up Plexes: 4 Size: 2048 MB P mirror.p0 C State: up Subdisks: 1 Size: 2048 MB P mirror.p1 C State: up Subdisks: 1 Size: 2048 MB P mirror.p2 C State: up Subdisks: 1 Size: 2048 MB P mirror.p3 C State: up Subdisks: 1 Size: 2048 MB S mirror.p0.s0 State: up PO: 0 B Size: 2048 MB S mirror.p1.s0 State: up PO: 0 B Size: 2048 MB S mirror.p2.s0 State: up PO: 0 B Size: 2048 MB S mirror.p3.s0 State: up PO: 0 B Size: 2048 MB この例では (今回は −f フラグを付けています)、 create の再実行により 4 個 の新規プレックスを作成し、それぞれが新規サブディスクを持ちます。他のボ リュームを追加したい場合、これらのための新規設定ファイルを作成します。 vinum が既に知っているドライブを参照する必要はありません。例えば、ボ リューム raid を 4 個のディスク /dev/da1e, /dev/da2e, /dev/da3e, /dev/da4e 上に作成するには、他の 2 個についてのみ記述するだけで良いです: drive d3 device /dev/da1e drive d4 device /dev/da4e volume raid plex org raid5 433k sd size 2g drive d1 sd size 2g drive d2 sd size 2g drive d3 sd size 2g drive d4 この設定ファイルでは、次のようになります: # vinum create newconfig Configuration summary Drives: 4 (4 configured) Volumes: 2 (4 configured) Plexes: 5 (8 configured) Subdisks: 8 (16 configured) D d1 State: up Device /dev/da2e Avail: 51176/57320 MB (89%) D d2 State: up Device /dev/da3e Avail: 53220/57320 MB (89%) D d3 State: up Device /dev/da1e Avail: 53224/57320 MB (92%) D d4 State: up Device /dev/da4e Avail: 53224/57320 MB (92%) V mirror State: down Plexes: 4 Size: 2048 MB V raid State: down Plexes: 1 Size: 6144 MB P mirror.p0 C State: init Subdisks: 1 Size: 2048 MB P mirror.p1 C State: init Subdisks: 1 Size: 2048 MB P mirror.p2 C State: init Subdisks: 1 Size: 2048 MB P mirror.p3 C State: init Subdisks: 1 Size: 2048 MB P raid.p0 R5 State: init Subdisks: 4 Size: 6144 MB S mirror.p0.s0 State: up PO: 0 B Size: 2048 MB S mirror.p1.s0 State: up PO: 0 B Size: 2048 MB S mirror.p2.s0 State: up PO: 0 B Size: 2048 MB S mirror.p3.s0 State: up PO: 0 B Size: 2048 MB S raid.p0.s0 State: empty PO: 0 B Size: 2048 MB S raid.p0.s1 State: empty PO: 433 kB Size: 2048 MB S raid.p0.s2 State: empty PO: 866 kB Size: 2048 MB S raid.p0.s3 State: empty PO: 1299 kB Size: 2048 MB RAID-5 プレックスの大きさに注意してください: 6 GB しかありませんが、これ を構成するためにディスク空間を 8 GB 使用しています。これは、サブディスク 1 個分相当をパリティデータ格納に使用しているからです。 |
Vinum の再起動 |
システムのリブート時に、 start コマンドで vinum を起動します: |
# vinum start |
これにより、システム中の全 vinum ドライブが起動します。なんらかの理由で一 部のドライブのみを起動したい場合、 read コマンドを使用してください。 |
性能関連 |
最高性能の RAID アレイ設定に関する、多くの誤った考えが存在しています。特 に、ほとんどのシステムで使用しているストライプの大きさは、小さ過ぎます。 以降の議論は、 vinum だけでなく、全 RAID システムにあてはまります。 FreeBSD のブロック I/O システムは、.5 kB から 128 kB までの要求を発行しま す; 典型的なミックスでは、ほぼ 8 kB です。どんなストライピングシステムに おいても、ある要求が 2 個の物理要求に分割されることを避けることはできませ んし、ストライプを十分細かくするならばより多くに分割されてしまいます。こ れにより、甚大な性能劣化となります: ディスクあたりの転送時間の削減は、よ り大きなオーダで増加するレイテンシによって相殺されてしまいます。 最近のディスクの大きさと FreeBSD のブロック I/O システムでは、ストライプ の大きさを 256 kB から 512 kB にすると、適度に少数な要求に分割されること を期待できます; 正しい RAID の実装では、大きなディスクでのストライプの大 きさを 2 または 4 MB に増さない明確な理由はありません。 ストライプサイズを選択するときには、最新の UFS ファイルシステムのシリンダ グループの大きさは 32 MB であることを認識していてください。ストライプサイ ズとディスク数が共に 2 の累乗の場合、すべてのスーパブロックと inode が同 一のサブディスクに置かれる可能性があります。これは、性能に重大な影響を与 えます。代りに奇数、例えば 479 kB を選択してください。 複数アクセスシステムでの転送のインパクトを考えるためのもっとも容易な方法 は、潜在的なボトルネック、すなわちディスクサブシステムの観点から見ること です: つまり、転送に要するディスク時間の総計はいくらか?です。ほとんどす べてがキャッシュされているので、要求と完了との時間的な関係はそれほど重要 ではありません: 重要なパラメータは、要求がディスクを活動状態にする総時間 であり、この間ディスクは他の転送ができなくなります。この結果、転送が同時 に発生しても違う時に発生しても、実際には問題とはなりません。実際的には、 我々が見ている時間は、レイテンシの総和 (位置決定時間と回転遅延、言い替え るとデータがディスクヘッド下に来るまでの時間) と総転送時間です。同じ速度 のディスクへの転送においては、転送時間は転送の大きさの合計のみに依存しま す。 24 kB の典型的なニュースの記事やウェブページを考えると、これは 1 回の I/O で読み込めます。ディスクが転送レート 6 MB/s で平均位置決定時間 8 ms であ り、ファイルシステムを 4 kB ブロックであるとします。 24 kB ですから、断片 化を考慮する必要はなく、ファイルは 4 kB 境界から開始します。必要な転送回 数はブロック開始位置に依存します: 式は (S + F - 1) / S となり、 S はファ イルシステムブロック数でのストライプの大きさ、 F はファイルシステムブロッ ク数でのファイルの大きさです。 |
1. ストライプの大きさは 4 kB。転送回数は 6 回。サブシステムの負荷: レイテンシ 48 ms、転送 2 ms、合計 50 ms。
2. ストライプの大きさは 8 kB。転送回数は 3.5 回。サブシステムの負荷: レ イテンシ 28 ms、転送 2 ms、合計 30 ms。 3. ストライプの大きさは 16 kB。転送回数は 2.25 回。サブシステムの負荷: レイテンシ 18 ms、転送 2 ms、合計 20 ms。 4. ストライプの大きさは 256 kB。平均転送回数は 1.08 回。サブシステムの 負荷: レイテンシ 8.6 ms、転送 2 ms、合計 10.6 ms。 5. ストライプの大きさは 4 MB。平均転送回数は 1.0009 回。サブシステムの 負荷: レイテンシ 8.01 ms、転送 2 ms、合計 10.01 ms。 ハードウェア RAID システムによっては、大きなストライプでは問題があるもの があるようです: このようなシステムでは完全なストライプを常にディスクとの 間で転送するようで、大きなストライプは性能に逆効果となります。 vinum ユー ティリティではこの問題の被害を受けません: すべてのディスク転送を最適化 し、不要なデータを転送しないからです。 良く知られたベンチマークプログラムで真の複数アクセス状態 (100 を越える同 時ユーザ) をテストするものはないので、この主張の正しさを証明することは困 難であることに注意してください。 これらのことを考えると、次の事項が vinum ボリュームの性能に影響します: • ストライピングは、複数アクセスのみの性能を向上します。各要求が違う ディスク上にある確率が増加するからです。 • 複数ドライブにまたがるコンカチネート化 UFS ファイルシステムもまた、複 数ファイルアクセスの性能を向上します。 UFS は、ファイルシステムをシリ ンダグループに分割し、ファイルを単一のシリンダグループに置こうとする からです。一般的に、ストライピングほどは効果がありません。 • ミラーリングは、読み込み複数アクセスの性能を向上可能です。デフォルト では vinum は、連続する複数の読み込みを、連続する複数のプレックスに対 して発行するからです。 • ミラーリングは、複数アクセスか単一アクセスかに関わらず、すべての書き 込みの性能を劣化させます。両方のプレックスに対し、データを書き込む必 要があるからです。これが、前述のミラーリング設定におけるサブディスク のレイアウトの説明です: 各プレックス中の対応するサブディスクが別の物 理ディスクにある場合、書き込みコマンドは並列に発行可能です。しかし、 同じ物理ディスクにある場合、逐次的に実行されてしまいます。 • RAID-5 の読み込みは、ストライプ化の読み込みと本質的に同じ考慮すべき点 があります。ただし、ストライプ化プレックスがミラー化ボリュームの一部 である場合を除きます。この場合、ミラー化ボリュームの方が性能が良くな ります。 • RAID-5 の書き込みは、ストライプ化の書き込みの約 25% の速度です: 書き 込みを行うには、 vinum はまずデータブロックと対応するパリティブロック を読み込み、いくばくかの計算を行い、パリティブロックとデータブロック を書き戻す必要がありますので、ストライプ化プレックスに対する書き込み の 4 倍の転送回数となります。一方、これはミラーリングのコストにより相 殺されますので、単一 RAID-5 プレックスのボリュームへの書き込みは、 2 個のストライプ化プレックスからなる正しく設定されたボリュームへの書き 込み速度の半分となります。 • vinum の設定が変わると (例えば、オブジェクトの追加や削除、またはオブ ジェクトの状態変更)、 vinum は 128 kB までの更新された設定を各ドライ ブに書き込みます。ドライブ数が増加すると、この時間が長くなります。 Vinum
ボリューム上にファイルシステムを作成する # newfs -U /dev/vinum/mirror vinum の設定に関係する数個のその他のことがらがあります: • 複数のドライブを単一ディスク上に作成しても、利益はありません。各ドラ イブは 131.5 kB のデータをラベルと設定情報に使用し、設定変更時に性能 が劣化します。適切な大きさのサブディスクを使用してください。 • コンカチネート化 vinum プレックスの大きさを増すことはできますが、現在 のところストライプ化プレックスと RAID-5 プレックスでは増せません。現 在のところ既存の UFS ファイルシステムの大きさを増すこともできません。 プレックスおよびファイルシステムを拡張可能とする計画はあります。 状態管理 (STATE MANAGEMENT) |
Vinum オブジェクトは state の概念を持ちます。詳細は vinum(4) を参照して下 さい。もしそれらの状態が up なら、それらは完全にアクセス可能なだけです。 オブジェクトの状態を up に変更するには start コマンドを使います。オブジェ クトの状態を down に変更するには stop コマンドを使います。通常、他の状態 はオブジェクト間の関係によって自動的に作られます。例えば、もしあなたがボ リュームにプレックスを追加したら、プレックスのサブディスクは、ハードウェ アがアクセス可能であるけれども、サブディスク上のデータは不正であることを 示す empty 状態に設定されるでしょう。この状態の結果として、プレックスは faulty 状態に設定されるでしょう。 |
‘reviving’ 状態 |
多くの場合、あなたがサブディスクを起動する時に、システムはサブディスクに データをコピーしなければなりません。サブディスクの大きさによりますが、こ れは長い時間かかります。この間、サブディスクは reviving 状態に設定されま す。コピー操作が正しく終了すれば、それは自動的に up 状態に設定されます。 プロセスが、回復 (revive) を停止させ、そして再開させることがあります。シ ステムはサブディスクの回復の進み具合を保持し、そして start コマンドが再発 行された時、その時点からコピーを再開します。 ボリュームのプレックスが一つ以上が回復している間はボリュームの整合性を保 つために、 vinum は書き込む場所まで回復させたサブディスクに書きます。もし 読みとる領域がすでに回復しているならば、プレックスから読み出すことができ ます。 |
分かりにくい仕様 (GOTCHAS)
次の事柄はバグではありませんし、存在する理由があるのですが、混乱を引き起 こすものです。各項目は適切な節において議論されています。 |
1. vinum ドライブは UNIX ディスクパーティションであり、パーティションタイプ vinum であることが必要です。これは、パーティションタイプが4.2BSD であることを期待する ccd とは異なります。この ccd の動作は、自分の足元をすくうことになります: ccd では、容易にファイルシステムを上書きできてしまいます。 vinum ユーティリティではそのようなことは許しません。 同様の理由で、 vinum start コマンドは、パーティション ‘‘c’’ 上のドライブを受け付けません。パーティション ‘‘c’’ は、ディスク全体を表現するためにシステムが使用し、タイプ unused である必要があります。ここには明確な矛盾があるので、 ‘‘c’’ パーティションを使用しないことによりvinum は問題を解決しています。
2. 複数のプレックスからなるボリューム作成時に、 vinum はプレックスを自 動的には初期化しません。これは、内容については分からなくても、これら の間には確かに一貫性がないということを意味しています。その結果デフォ ルトでは、新規作成されたプレックスのうち最初のものを除いたすべての状 態を、 vinum は faulty (誤り) 状態に設定します。これらを最初のプレッ クスと同期させるには、これらのサブディスクを start させる必要があり ます。これにより、 up 状態のプレックスから vinum にデータをコピーさ せます。関係するサブディスクの大きさに依存して、必要な時間は長くなり 得ます。 実際上は、プレックス作成時にその内容に多大な興味を持つ人はいないの で、他のボリュームマネージャはどんなときでも up に設定して騙します。 vinum ユーティリティは、新規作成されたプレックスが up 状態であること を保証するために、2 つの方法を提供します: • プレックスを作成し、それらを vinum start で同期します。 • キーワード setupstate 付きでボリューム (プレックスではありませ ん) を作成します。このキーワードは、矛盾が存在しても無視してプ レックスの状態を up 状態にするように、 vinum に指示します。 3. 現在 vinum がサポートしているコマンドには、実際には不要なものがあり ます。私には理解できない理由があるのでしょうが、 label および resetconfig のコマンドを使おうとするユーザをしばしば見掛けます。特に resetconfig は、あらゆる種類の恐しいメッセージを表示するにもかかわら ずです。正当な理由無しに、これらのコマンドを使わないでください。 4. 状態遷移には非常に分り難いものがあります。事実、これがバグであるのか 仕様であるのかは明かではありません。 reborn サブディスクなどの、奇妙 な状態になったオブジェクトを起動できない場合には、 stop または stop −f のコマンドを使用して、まず stopped 状態に遷移させてください。これ が上手くいけば、オブジェクトを起動できるはずです。簡単な方法では上手 くいかなくて、これが唯一の回復手段である場合、その状況を報告してくだ さい。 5. カーネルモジュールを −DVINUMDEBUG オプション付きで構築した場合、 vinum もまた −DVINUMDEBUG オプション付きで構築する必要があります。な ぜなら、両方のコンポーネントで使用されるデータオブジェクトに、大きさ が本オプションに依存しているものがあるからです。前記のようにしない と、対応するエラーメッセージを表示してコマンドが失敗します。 6. vinum read コマンドの文法は、吐き気を催すものです。これが唯一の vinum 起動のためのコマンドでしたが、今の好ましい方法は vinum start です。 vinum read は整備のみに使用すべきです。文法が変更されたので、 引数が /dev/da0 のようなディスクスライスであり /dev/da0e のような パーティションではないことに注意してください。 関連ファイル |
/dev/vinum
vinum
オブジェクトのデバイスノードがあるディレクトリ 環境変数 |
VINUM_HISTORY
ログファイルの名前です。デフォルトでは /var/log/vinum_history です。 VINUM_DATEFORMAT EDITOR 関連項目 |
strftime(3), vinum(4), disklabel(8), newfs(8) http://www.vinumvm.org/vinum/, http://www.vinumvm.org/vinum/how-to-debug.html. |
作者
Greg Lehey 〈grog@lemis.com〉 |
歴史
vinum ユーティリティは FreeBSD 3.0 ではじめて登場しました。 vinum の RAID-5 コンポーネントは、 NetMAX 製品のために Cybernet Inc. (www.cybernet.com) が開発しました。 |
バグ
vinum(4) は geom(4) サブシステムを使用しませんので、 vinum(4) ボリューム は GOEM ベースの機能、例えば gbde(8) では使用できません。 vinum(4) は、ブロックサイズが DEV_BSIZE (512) ではないデバイス上では動作 しないので、スワップが背後にある md(4) デバイスでは使用できません。 FreeBSD 10.0 May 5, 2003 FreeBSD 10.0 |