rm -f myvolume
は myvolume がオープンされていたとしても削除します。 以降、このボリュームに アクセスすると、ほぼ確実にパニックを起こします。
rename キーワードが指定されると、 はオブジェクトの (プレックスの場合には下位のサブディスクの) 名前を変更して デフォルトの 命名規則に合わせます。 オブジェクトを他の名前に変更するには、 rename コマンドを使用します。
サブディスク結合に際しては、いくつか考慮すべきことがあります:
-f フラグが指定されると、 checkparity はプレックスの先頭からチェックを開始します。 -v フラグが指定されると、 checkparity は進捗報告を表示します。
通常、 concat コマンドは任意の名前をボリュームと構成要素に付けます。 名前はテキスト ``vinum '' および小さな整数からなり、例えば ``vinum3 '' となります。 ボリュームに対して指定した名前を割り当てる -n name オプションで、上書きすることが可能です。 プレックスとサブディスクの名前は、通常の作法で、ボリューム名からとられます。
ドライブの名前には選択の余地はありません。 ドライブが既に ドライブとして初期化されていた場合、名前はそのままになります。 そうでない場合、ドライブにはテキスト ``vinumdrive '' と小さな整数から始まる名前が与えられ、例えば ``vinumdrive7 '' となります。 create コマンドと同様、 -f オプションを使用して、以前の名前の上書きを指定可能です。 -v オプションは、冗長な出力のために使用します。
このコマンドの例は、後述の Sx 単純な設定 の節を参照してください。
create 機能は加法的であることに注意してください: 複数回実行すると、名前付けしていない全オブジェクトのコピーを、 複数生成することになります。
通常 create は既存の ドライブの名前を変更しません。 これは、誤って消去してしまうのを避けるためです。 不要な ドライブを破棄する正しい方法は、 resetconfig コマンドで設定をリセットすることです。 しかし、起動できない ドライブ上に新規データを生成する必要がある場合があります。 この場合、 create -f を使用してください。
ストライプ化プレックスおよび RAID-5 プレックスにおいては、 detach はサブディスク数を減らしません。 その代わり、サブディスクには存在しないという印が付けられ、後で attach コマンドを使用して交換可能となります。
-V オプションを付けると、 ドライバが扱った最大 64 個までの最近の I/O リクエストに関する情報を、 info は表示します。 この情報は、デバッグフラグ 8 が設定されているときのみ収集されます。 書式は次のようになります:
Buf フィールドは、ユーザバッファヘッダのアドレスを常に含みます。 ユーザリクエストに関連付けられるリクエスト (複数可) を識別するために 使用できますが、100% 信頼できるものというわけではありません: 理論的には、シーケンス中の 2 個のリクエストが同じバッファヘッダを使い得ますが、 これは一般的ではありません。 リクエストの先頭は、イベント 1VS または 7VS で識別可能です。 前述の 1 番目の例は、ユーザ要求に関連するリクエストを示しています。 2 番目は、ロックを伴うサブディスク I/O リクエストです。 前記の例では、複数のリクエストが単一のユーザリクエストに含まれています。
Event フィールドは、 リクエストチェーン中のイベントシーケンスに関連する情報を含みます。 1 から 6 までの数字はイベントの大まかなシーケンスを示し、 2 文字の省略形は位置のニーモニックです。
ここから後のリクエストでは、利用可能である場合、 Dev は関連付けられたディスクパーティションのデバイス番号であり、 Offset はパーティションの先頭からのオフセットであり、 SD は vinum_conf 中のサブディスクインデックスであり。 SDoff はサブディスクの先頭からのオフセットであり、 Doffset は関連付けられたデータリクエストのオフセットであり、 Goffset は関連付けられたグループリクエストのオフセットです。
-S オプションでデフォルト値の 16 kB と異なるサイズの書き込みブロックを 指定できます。 は初期化が完了するとコンソールメッセージを出力します。
-r オプションはボリュームとプレックスに関連します。 指定されると、そのオブジェクト下位のサブディスクと (ボリュームに対しては) プレックスの情報を再帰的に表示します。 lv lp ls ld のコマンドは、それぞれボリューム、プレックス、サブディスク、そしてドライブの 情報だけを表示します。 これはパラメータを指定しないで使う場合に特に有用です。
-s オプションで は装置の統計情報を出力するようになり、 -v (verbose: 饒舌な) オプションはいくらかの付加情報を出力させ、 そして -V は数多くの付加情報を出力させます。
-s オプションを指定すると、 mirror はストライプの大きさが 279 kB のストライプ化プレックスを構築します。 各プレックスのサブディスクの大きさは、 プレックスを構成するドライブの中で、最小の連続ストレージの大きさです。 ここでもまた、プレックスの大きさは異なるかもしれません。
通常、 mirror コマンドは任意の名前をボリュームと構成要素に付けます。 名前はテキスト ``vinum '' および小さな整数からなり、例えば ``vinum3 '' となります。 ボリュームに対して指定した名前を割り当てる -n name オプションで、上書きすることが可能です。 プレックスとサブディスクの名前は、通常の作法で、ボリューム名からとられます。
ドライブの名前には選択の余地はありません。 ドライブが既に ドライブとして初期化されていた場合、名前はそのままになります。 そうでない場合、ドライブにはテキスト ``vinumdrive '' と小さな整数から始まる名前が与えられ、例えば ``vinumdrive7 '' となります。 create コマンドと同様、 -f オプションを使用して、以前の名前の上書きを指定可能です。 -v オプションは、冗長な出力のために使用します。
このコマンドの例は、後述の Sx 単純な設定 の節を参照してください。
この機能は現在サブディスク中のデータを保存しないため -f オプションが必要です。 この付加機能は、後日追加されます。 しかしながら、この状態でも、故障した ディスクドライブを復旧させるのには十分です。
read コマンドは、他の パーティションを持つシステム上で、 設定を選択的にロードすることを意図しています。 システム上の全パーティションを起動したい場合、 start コマンドを使用する方が簡単です。
本コマンド実行時に がエラーになると、 ディスク上のコピーが壊れないようにするため、自動的な設定更新を無効にします。 これは、ディスク上の設定が、設定エラーを示す (例えば、有効な空間指定を持たないサブディスク) 場合にも同様です。 再度更新をオンにするには、 setdaemon と saveconfig のコマンドを使用してください。 デーモンオプションマスクのビット 2 (数値なら 4) をリセットして、 設定保存を再度有効にしてください。
-f フラグが指定されると、 rebuildparity はプレックスの先頭から再構築を開始します。 -v フラグが指定されると、 rebuildparity はまず既存のパリティブロックをチェックし、 再構築前に、不整合情報を表示します。 -V フラグが指定されると、 rebuildparity は進捗報告を表示します。
# resetconfig- WARNING! This command will completely wipe out your vinum configuration. All data will be lost. If you really want to do this, enter the text NO FUTURE Enter text -> NO FUTURE Vinum configuration obliterated (訳注: ここから上記テキストの翻訳です) 警告! このコマンドはあなたの vinum 設定を完全に消し去ります。 全データは失われます。本当にこれを実行したい場合は、語句 NO FUTURE を入力して下さい。 入力してください -> NO FUTURE vinum の設定は削除されました。 (訳注: ここまで上記テキストの翻訳です)
メッセージが示すように、どたん場のコマンドです。 既存の設定をもう見たくもないとき以外は、このコマンドを使わないでください。
通常、 は下位にプレックスを持つボリュームや、下位にサブディスクを持つプレックスを 消去することを拒否します。 -f フラグを指定すると、 は無条件にオブジェクトを消去します。 または -r (recursive: 再帰的) フラグを使うことで、同様に下位のオブジェクトを 消去することができます。 -r フラグを付けてボリュームを消去すると、プレックスとそれに属するサブディスクも 消去します。
オブジェクト名を指定しないと、システムが ドライブであると知っているディスクを、 は走査します。 その後、 read コマンドのところに書いてあるように、設定を読み込みます。 ドライブにはそのドライブ中のデータについてのすべての情報を持つヘッダが 入っており、その情報としてはプレックスとボリュームを表現するために必要な 他のドライブの名前を含んでいます。
本コマンド実行時に がエラーになると、 ディスク上のコピーが壊れないようにするため、自動的な設定更新を無効にします。 これは、ディスク上の設定が、設定エラーを示す (例えば、有効な空間指定を持たないサブディスク) 場合にも同様です。 再度更新をオンにするには、 setdaemon と saveconfig のコマンドを使用してください。 デーモンオプションマスクのビット 4 をリセットして、 設定保存を再度有効にしてください。
オブジェクト名が指定されると、 はそれらを起動します。 通常、この操作はサブディスクに対してのみ行います。 動作はオブジェクトの現在の状態に依存します:
サブディスクが up 状態になると、 は自動的に、 サブディスクが属す可能性のあるプレックスとボリュームの状態をチェックし、 これらの状態を適切に更新します。
オブジェクトがプレックスの場合、 start は下位のサブディスクの (ボリュームの場合にはこれに加えてプレックスの) 状態を チェックし、起動可能なサブディスクを起動します。
マルチプレックスボリュームの中の 1 つのプレックスを起動するには、 ボリューム中の他のプレックスからデータをコピーする必要があります。 これにはしばしば長い時間がかかるため、バックグラウンドで実行されます。 この操作が完了することを待ちたい場合 (例えば、この操作をスクリプト中で実行している場合)、 -w オプションを使用してください。
データのコピーにはたいして時間がかかりません。 それは、さらに重大な負荷をシステムにかけ得ます。 -S オプションで転送サイズを、 -i オプションで各ブロックを転送する間隔を (ミリ秒で) 指定可能です。 どちらもシステム負荷を軽減します。
stop コマンドは が kld としてロードされている場合のみ動作します。 静的に構成されたドライバをアンロードすることはできないからです。 が静的に構成されている場合、 stop は失敗します。
オブジェクト名が指定されると、 stop はそのオブジェクトへのアクセスを無効化します。 オブジェクトに下位オブジェクトがある場合、 それらのサブオブジェクトは既に非活動状態 (stop また error) となっているか、 -r と -f のオプションが指定されていることが必要です。 このコマンドは、オブジェクトを設定から取り除きません。 start コマンドの後で再度アクセスができるようになります。
デフォルトでは は動作中のオブジェクトは停止しません。 例えば、動作中のボリュームに結合されているプレックスは 停止できないし、オープン中のボリュームは停止できません。 -f オプションは にこの確認を省略して無条件に削除するよう指示します。 このオプションは 大いに注意し、よく理解した上で使って下さい。 もし間違って使うとひどいデータ破壊を起こすことがあります。
通常、 stripe コマンドは任意の名前をボリュームと構成要素に付けます。 名前はテキスト ``vinum '' および小さな整数からなり、例えば ``vinum3 '' となります。 ボリュームに対して指定した名前を割り当てる -n name オプションで、上書きすることが可能です。 プレックスとサブディスクの名前は、通常の作法で、ボリューム名からとられます。
ドライブの名前には選択の余地はありません。 ドライブが既に ドライブとして初期化されていた場合、名前はそのままになります。 そうでない場合、ドライブにはテキスト ``vinumdrive '' と小さな整数から始まる名前が与えられ、例えば ``vinumdrive7 '' となります。 create コマンドと同様、 -f オプションを使用して、以前の名前の上書きを指定可能です。 -v オプションは、冗長な出力のために使用します。
このコマンドの例は、後述の Sx 単純な設定 の節を参照してください。
コマンドの解説は前述を参照してください。 ここでは例を示します。 どれも同じディスクを使用しています。 最初のドライブ /dev/da1h は他のドライブよりも小さいことに注意してください。 各サブディスクの大きさに影響があります。
次に示す例ではすべて -v オプションを使用することにより、システムに渡すコマンドを見せ、 ボリュームの構造を列挙します。 -v オプションを使用しないと、これらのコマンドは何も出力しません。
この場合、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 になります。
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 のボリュームを作成します。
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 プレックスが小さくなったためです。
例えば、16777216 バイトという値は、 16m 16384k 32768s のいずれの表記も可能です。
設定ファイルには以下のエントリを記述することができます。
RAID-5 プレックスには init を使うことが 必要 なことに注意して下さい。 さもないと 1 つのサブディスクに障害が起きた時、大きくデータが破壊されます。
最適な性能のためには、ストライプの大きさは少なくとも 128kB であるべきです。 これより小さくすると、 個々のリクエストが複数のディスクに対して割り当てられることにより、 I/O のアクティビティが非常に増加します。 本マッピングによる並行転送数増加に起因する性能向上は、 レイテンシ増加に起因する性能劣化を引き起しません。 ストライプの大きさの目安は、256 kB から 512 kB の間です。 2 の羃乗は避けるべきです。 2 の羃乗を使用すると、すべてのスーパブロックを 最初のサブディスクに置く傾向があるからです。 単純なコマンドでは、ストライプの大きさに 279 kB を使用するため、 スーパブロックが適度に分散されます。
ストライプ化プレックスは最低 2 つのサブディスクを持つ必要がありますし (そうでないとコンカチネート化プレックスになります)、 それぞれは同じ大きさである必要があります。 RAID-5 プレックスは最低 3 つのサブディスクを持つ必要があり、 それぞれは同じ大きさである必要があります。 実際には RAID-5 プレックスは最低 5 つのサブディスクから構成されるべきです。
# 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
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 '' を パーティションとして使用可能です。 パーティション ``a '' ``e '' ``f '' は、 UFS ファイルシステムまたは ccd パーティションとして使用可能です。 パーティション ``b '' はスワップパーティションであり、パーティション ``c '' はディスク全体を表現するため他の用途に使用できません。
ユーティリティは各パーティションの先頭から 265 セクタを設定情報に使用するため、 サブディスクの最大の大きさはドライブよりも 265 セクタ小さくなります。
ログファイル中のメッセージの前には日付が付きます。 デフォルトの書式は Qq Li %e %b %Y %H:%M:%S です。 書式の文字列に関するさらなる詳細については strftime(3) を参照してください。 これは環境変数 VINUM_DATEFORMAT でオーバライド可能です。
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 bigger plex org concat sd length 0 drive d1 sd length 0 drive d2 sd length 0 drive d3 sd length 0 drive d4 sd length 0 drive d5
この場合、サブディスクの長さを 0 と指定します。 これは、 ``ドライブ上にある空き空間のうち、最大領域を使用する'' ことを意味します。 指定するサブディスクが、ドライブ上の唯一のサブディスクである場合、 このサブディスクは使用可能な空間全体を使用します。
ミラーリングの設定のためには、 単一ボリュームの中に複数のプレックスを作成する必要があります。 例えば、 2 GB のミラー化ボリュームを作成するには、 次のような設定ファイルを作成します:
drive d1 device /dev/da2e drive d2 device /dev/da3e volume mirror plex org concat sd length 2g drive d1 plex org concat sd length 2g drive d2
ミラー化ドライブを作成するときには、 各プレックスからのデータが、 違う物理ディスク上にあることを保証することが重要です。 これにより、単一ドライブ故障においても、 はボリュームの完全なアドレス空間にアクセス可能となります。 各プレックスが、 完全なボリュームと同じだけのデータを必要とすることに注意してください: この例では、ボリュームは 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
ミラー化ドライブを作成するときには、 各サブディスクからのデータが、 違う物理ディスク上にあることを保証することが重要です。 これにより、単一ドライブ故障においても、 はボリュームの完全なアドレス空間にアクセス可能となります。
ストライピングの実装のためには、 striped (ストライプ化) プレックスを使用します:
drive d1 device /dev/da2e drive d2 device /dev/da3e drive d3 device /dev/da4e drive d4 device /dev/da5e volume raid plex org striped 433k sd length 512m drive d1 sd length 512m drive d2 sd length 512m drive d3 sd length 512m drive d4
ストライプ化プレックスの最低サブディスク数は 2 個です。 多くのディスクを使用するほど、性能が向上します。
drive d1 device /dev/da2e drive d2 device /dev/da3e drive d3 device /dev/da4e drive d4 device /dev/da5e volume raid setupstate plex org striped 433k sd length 512m drive d1 sd length 512m drive d2 sd length 512m drive d3 sd length 512m drive d4 plex org striped 433k sd length 512m drive d4 sd length 512m drive d3 sd length 512m drive d2 sd length 512m drive d1
ここでは、プレックスはストライプ化され、性能を向上しています。 そして、このようなプレックスが 2 個あり、回復力を向上しています。 この例で、2 番目のプレックスのサブディスクの順番が、 1 番目のプレックスの逆になっていることに注意してください。 これは性能のためであり、後で議論します。 更に、ボリューム指定にキーワード setupstate を含み、全プレックスが作成後に up となることを保証しています。
# 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 フラグは、設定に従ってファイルをリストするよう、 に指示します。 その後、 list -v コマンドと同じ書式で、現在の設定をリストします。
# 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 個の新規プレックスを作成し、 それぞれが新規サブディスクを持ちます。 他のボリュームを追加したい場合、これらのための新規設定ファイルを作成します。 が既に知っているドライブを参照する必要はありません。 例えば、ボリューム 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"
これにより、システム中の全 ドライブが起動します。 なんらかの理由で一部のドライブのみを起動したい場合、 read コマンドを使用してください。
Fx のブロック I/O システムは、.5 kB から 128 kB までの要求を発行します; 典型的なミックスでは、ほぼ 8 kB です。 どんなストライピングシステムにおいても、 ある要求が 2 個の物理要求に分割されることを避けることはできませんし、 ストライプを十分細かくするならばより多くに分割されてしまいます。 これにより、甚大な性能劣化となります: ディスクあたりの転送時間の削減は、 より大きなオーダで増加するレイテンシによって相殺されてしまいます。
最近のディスクの大きさと Fx のブロック 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 はファイルシステムブロック数でのファイルの大きさです。
ハードウェア RAID システムによっては、 大きなストライプでは問題があるものがあるようです: このようなシステムでは完全なストライプを常にディスクとの間で転送するようで、 大きなストライプは性能に逆効果となります。 ユーティリティではこの問題の被害を受けません: すべてのディスク転送を最適化し、不要なデータを転送しないからです。
良く知られたベンチマークプログラムで真の複数アクセス状態 (100 を越える同時ユーザ) をテストするものはないので、 この主張の正しさを証明することは困難であることに注意してください。
これらのことを考えると、次の事項が ボリュームの性能に影響します:
"# newfs -U /dev/vinum/mirror"
の設定に関係する数個のその他のことがらがあります:
ボリュームのプレックスが一つ以上が回復している間はボリュームの整合性を 保つために、 は書き込む場所まで回復させたサブディスクに書きます。 もし読みとる領域が すでに回復しているならば、プレックスから読み出すことができます。
同様の理由で、 start コマンドは、パーティション ``c '' 上のドライブを受け付けません。 パーティション ``c '' は、ディスク全体を表現するためにシステムが使用し、タイプ unused である必要があります。 ここには明確な矛盾があるので、 ``c '' パーティションを使用しないことにより は問題を解決しています。
実際上は、プレックス作成時にその内容に多大な興味を持つ人はいないので、 他のボリュームマネージャはどんなときでも up に設定して騙します。 ユーティリティは、新規作成されたプレックスが up 状態であることを保証するために、2 つの方法を提供します:
http://www.vinumvm.org/vinum/ http://www.vinumvm.org/vinum/how-to-debug.html
vinum(4) は、ブロックサイズが DEV_BSIZE (512) ではないデバイス上では動作しないので、スワップが背後にある md(4) デバイスでは使用できません。