diff --git a/ja/man/man8/vinum.8 b/ja/man/man8/vinum.8 index 396ebb7f0c..c97be1ca23 100644 --- a/ja/man/man8/vinum.8 +++ b/ja/man/man8/vinum.8 @@ -1,2214 +1,2236 @@ .\" Hey, Emacs, edit this file in -*- nroff-fill -*- mode .\"- .\" Copyright (c) 1997, 1998 .\" Nan Yang Computer Services Limited. All rights reserved. .\" .\" This software is distributed under the so-called ``Berkeley .\" License'': .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by Nan Yang Computer .\" Services Limited. .\" 4. Neither the name of the Company nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" This software is provided ``as is'', and any express or implied .\" warranties, including, but not limited to, the implied warranties of .\" merchantability and fitness for a particular purpose are disclaimed. .\" In no event shall the company or contributors be liable for any .\" direct, indirect, incidental, special, exemplary, or consequential .\" damages (including, but not limited to, procurement of substitute .\" goods or services; loss of use, data, or profits; or business .\" interruption) however caused and on any theory of liability, whether .\" in contract, strict liability, or tort (including negligence or .\" otherwise) arising in any way out of the use of this software, even if .\" advised of the possibility of such damage. .\" -.\" %Id: vinum.8,v 1.5.2.4 1999/05/05 05:13:09 grog Exp % +.\" %Id: vinum.8,v 1.5.2.5 1999/05/10 08:28:05 grog Exp % .\" .\" jpman %Id: vinum.8,v 1.3 1999/01/05 15:15:53 horikawa Stab % .\" WORD: attach 結合 (する) .Dd 28 March 1999 .Dt vinum 8 .Sh 名称 .Nm vinum .Nd 論理ボリュームマネージャの制御プログラム .Sh 書式 .Nm .Op command .Op Fl options .Sh コマンド .Cd create Op Fl f Ar description-file .in +1i .Ar description-file の記述に従ってボリュームを作成します。 .in .\" XXX remove this .Cd attach Ar plex Ar volume .Op Nm rename .Cd attach Ar subdisk Ar plex Ar [offset] .Op Nm rename .in +1i プレックスをボリュームに、またはサブディスクをプレックスに結合します。 .in .\" XXX remove this .Cd debug .in +1i ボリュームマネージャをカーネルデバッガに移行させます。 .in .Cd debug .Ar flags .in +1i デバッグフラグを設定します。 .in .Cd detach .Op Ar plex | subdisk .in +1i 結合されていたボリュームやプレックスから、プレックスやサブディスクを分離します。 .in .Cd info .Op Fl v .in +1i ボリュームマネージャの状態を表示します。 .in .Cd init .Op Fl v .Op Fl w .Ar plex .in +1i .\" XXX 下位の全サブディスクに 0 を書き込んでそのプレックスを初期化します。 .in .Cd label .Ar volume .in +1i ボリュームラベルを作成します。 .in .Cd list .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume | plex | subdisk .in +1i 指定したオブジェクトの情報を表示します。 .in .Cd l .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume | plex | subdisk .in +1i 指定したオブジェクトの情報を表示します ( .Cd list コマンドの別形式)。 .in .Cd ld .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume .in +1i ドライブの情報を表示します。 .in .Cd ls .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op subdisk .in +1i サブディスクの情報を表示します。 .in .Cd lp .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op plex .in +1i プレックスの情報を表示します。 .in .Cd lv .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume .in +1i ボリュームの情報を表示します。 .in .Cd printconfig .Op Pa file .in +1i 現在の設定のコピーを .Pa file へ書き込みます。 .in .Cd makedev .in +1i .Ar /dev/vinum にデバイスノードを再作成します。 .in .Cd quit .in +1i 対話モード時に、 .Nm プログラムを終了します。通常 .Ar EOF 文字を入力することにより実現できます。 .in .Cd read .Ar disk Op disk... .in +1i 指定したディスクから .Nm の設定を読み出します。 .in .Cd rename Op Fl r .Ar [ drive | subdisk | plex | volume ] .Ar newname .in +1i 指定したオブジェクトの名前を変更します。 .ig .XXX .in .Cd replace .Ar [ subdisk | plex ] .Ar newobject .in +1i オブジェクトを同一の他のオブジェクトと入れ換えます。XXX まだ実装されていません。 .. .in .Cd resetconfig .in +1i すべての .Nm の設定をリセットします。 .in .Cd resetstats .Op Fl r .Op volume | plex | subdisk .in +1i 指定したオブジェクトの統計情報をリセットします。指定がない場合はすべての オブジェクトが対象です。 .in .Cd rm .Op Fl f .Op Fl r .Ar volume | plex | subdisk .in +1i オブジェクトを削除します。 .in .Cd saveconfig .in +1i .Nm の設定をディスクへ保存します。 .in .ig XXX .Cd set .Op Fl f .Ar state .Ar volume | plex | subdisk | disk .in +1i オブジェクトの状態を \fIstate\fP\| に設定します。 .in .. .Cd setdaemon .Op value .in +1i デーモンの設定を与えます。 .in .Cd start .in +1i 全 vinum ドライブから設定を読み込みます。 .in .Cd start .Op volume | plex | subdisk .in +1i システムがオブジェクトへアクセスできるようにします。 .in .Cd stop .Op Fl f .Op volume | plex | subdisk .in +1i オブジェクトへのアクセスを終了させます。 パラメータを指定しないと、 .Nm を停止させます。 .in .Sh 解説 .Nm は \fBVinum\fP\| 論理ボリュームマネージャと通信するための ユーティリティプログラムです。 ボリュームマネージャの詳細については .Xr vinum 4 を参照してください。 .Xr vinum 8 は対話形式と、単独のコマンドを実行する形式のいずれも実行可能になっています。 コマンドを伴わずに .Nm を起動すると対話形式になる一方、引数としてコマンドを指定するとそのコマンド だけを実行します。 対話モードでは、 .Nm はコマンドラインヒストリを保持します。 .Ss オプション .Nm のコマンドにはオプションを付加することができます。どのコマンドにも 下記オプションのどれでも指定することができますが、指定しても変化がない場合も あります。 その場合にはそのオプションは無視されます。例えば、 .Nm stop コマンドは .Fl v オプションと .Fl V オプションを無視します。 .Bl -hang .Nm Fl f .Fl f .if t (``force: 強制'') .if n ("force: 強制") オプションは安全性の確認を無効にします。細心の注意を払って 使用して下さい。 このオプションは緊急時にのみ使用するものです。例えば、 コマンド .Bd -unfilled -offset indent rm -f myvolume .Ed .Pp は .Ar myvolume がオープンされていたとしても削除します。以降、このボリュームに アクセスすると、ほぼ確実にパニックを起こします。 .It Fl -r .Fl r .if t (``recursive: 再帰的'') .if n ("recursive: 再帰的") オプションは表示系のコマンドで使い、 指示したオブジェクト だけでなく、下位のオブジェクトの情報も表示します。 例えば、 .Nm lv コマンドとともに使われる場合、 .Fl r オプションは対象のボリュームに属するプレックスとサブディスクの情報も表示します。 .It Fl s .Fl s .if t (``statistics: 統計'') .if n ("statistics: 統計") オプションは表示系のコマンドで統計情報を表示するために使います。 .It Fl v .Fl v .if t (``verbose: 冗長'') .if n ("verbose: 冗長") オプションは、 任意のコマンドにおいて、さらに詳細な情報を要求するために使用します。 .It Fl V The .Fl V .if t (``Very verbose: とても冗長'') .if n ("Very verbose: とても冗長") オプションは、 任意のコマンドにおいて、 .Fl v オプションが提供するものよりもさらに詳細な情報を要求するために使用します。 .It Fl w .Fl w .if t (``wait: 待ち'') .if n ("wait: 待ち") オプションは、 .Nm init のように通常はバックグラウンドで実行するコマンドの完了を、 .Nm に待たせます。 .El .Pp .Ss コマンドの詳細 .Pp .Nm コマンドは以下の機能を実行します。 .Bl -hang .It Nm attach Ar plex Ar volume .Op Nm rename .if n .sp -1v .if t .sp -.6v .It Nm attach Ar subdisk Ar plex Ar [offset] .Op Nm rename .sp .Nm .Ar attach は指定されたプレックスやサブディスクをそれぞれボリュームやプレックスに 組み込みます。サブディスクに ついては、プレックス中の始点 (オフセット) を指定することができます。 指定がない場合、 サブディスクは有効な最初の位置に結合されます。空でないボリュームにプレックスが 結合されると、 .Nm はそのプレックスを再統合します。 .Pp .Nm rename キーワードが指定されると、 .Nm はオブジェクトの (プレックスの場合には下位のサブディスクの) 名前を変更して デフォルトの .Nm 命名規則に合わせます。 .Pp サブディスク結合に際しては、いくつか考慮すべきことがあります: .Bl -bullet .It サブディスクの結合対象は、通常、コンカチネート化プレックスのみです。 .It ストライプ化プレックスおよび RAID-5 プレックスにおいて サブディスクが失われた場合 (例えばドライブの故障後など)、 当該サブディスクを置き換えられるのは同じ大きさのサブディスクだけです。 別のサブディスクを結合することは、現在許されていません。 .It コンカチネート化プレックスに対しては、 .Ar offset パラメータが、プレックスの先頭からのブロック単位のオフセットを指定します。 ストライプ化プレックスおよび RAID-5 プレックスに対しては、 本パラメータは、サブディスクの最初のブロックのオフセットを指定します。 別の表現をするなら、オフセットは、 サブディスクの数値指定による位置とストライプの大きさとの積になります。 例えば、ブロックの大きさが 256k のプレックスでは、 最初のサブディスクはオフセット 0 に、2 番目のオフセットは 256k に、 3 番目は 512k に、などとなります。 この計算では、RAID-5 プレックスのパリティブロックは無視されます。 .El .It Nm create Op Fl f Ar description-file .sp .Nm .Ar create はどのオブジェクトの作成にも使われます。相互の関連性が比較的複雑で .Nm オブジェクトの作成には潜在的に危険があることを考慮して、この機能には対話的な インタフェースはありません。 ファイル名を指定しないと、 .Nm は一時ファイルに対してエディタを起動します。 環境変数 .Ev EDITOR が設定されている場合、 .Nm はこのエディタを起動します。設定されていない場合のデフォルトは .Nm vi です。 詳細は後述の設定ファイルの節を参照して下さい。 .Pp .Nm の .Ar create 機能は加法的であることに注意してください: 複数回実行すると、名前付けしていない全オブジェクトのコピーを、 複数生成することになります。 .Pp 通常 .Nm create は既存の .Nm ドライブの名前を変更しません。これは、誤って消去してしまうのを避けるためです。 不要な .Nm ドライブを破棄する正しい方法は、 .Nm resetconfig コマンドで設定をリセットすることです。 しかし、起動できない .Nm ドライブ上に新規データを生成する必要がある場合があります。 この場合、 .Nm create Fl f を使用してください。 .It Nm debug .Pp .Nm .Ar debug はリモートカーネルデバッガに入るために使用します。これは .Nm が .Ar VINUMDEBUG オプション付きで作成されている場合にのみ実行可能です。 このオプションはカーネルデバッガから抜け出るまでオペレーティング システムの実行を停止させます。 リモートデバッグが設定されており、 カーネルデバッガへのリモートコネクションがないと、 デバッガから抜け出るためにはシステムをリセットしてリブート することが必要になります。 .It Nm debug .Ar flags .Pp 内部デバッグフラグのビットマスクを設定します。 本製品が改良されるにつれ、このビットマスクは警告無しに変更されるでしょう。 確認のために、ヘッダファイル .Pa sys/dev/vinumvar.h を見てください。 ビットマスクは次の値から構成されます: .Bl -hang .It DEBUG_ADDRESSES (1) .br リクエスト中のバッファ情報を表示します。 .It DEBUG_NUMOUTPUT (2) .br .Dv vp->v_numoutput の値を表示します。 .It DEBUG_RESID (4) .br .Fd complete_rqe においてデバッガに移行します。 .It DEBUG_LASTREQS (8) .br 最新のリクエストのリングバッファを保存します。 .It DEBUG_REVIVECONFLICT (16) .br 再生における衝突に関する情報を表示します。 .It DEBUG_EOFINFO (32) .br ストライププレックスで EOF を返すとき、内部状態の情報を表示します。 .It DEBUG_MEMFREE (64) .br 最後にメモリアロケータが解放したメモリ領域に関する循環リストを管理します。 .It DEBUG_REMOTEGDB (256) .br .Nm debug コマンドが発行されたときに、リモート .Ic gdb に移行します。 .El .It Nm detach Op Fl f .Ar plex .if n .sp -1v .if t .sp -.6v .It Nm detach Op Fl f .Ar subdisk .sp .Nm .Ar detach は指定されたプレックスやサブディスクを、 結合されているボリュームやプレックスから 分離します。分離するとボリュームのデータが欠ける可能性のある 場合、この操作は .Fl f オプションを指定しない限り実行されません。 オブジェクトが上位のオブジェクトに従った名前になっている場合 (例えば、プレックス vol1.p7 に結合されているサブディスク vol1.p7.s0 の場合)、 その名前は頭に .if t ``ex-'' .if n "ex-" がついたものに変更されます (例えば ex-vol1.p7.s0 に変更されます)。 その後の処理で必要であれば、その名前から頭の部分が外されます。 .Pp ストライプ化プレックスおよび RAID-5 プレックスにおいては、 .Nm detach はサブディスク数を減らしません。 その代わり、サブディスクには存在しないという印が付けられ、後で .Nm attach コマンドを使用して交換可能となります。 .It Nm info .br .Nm .Ar info は .Nm のメモリ使用に関する情報を表示します。これは主にデバッグのためのものです。 .Fl v オプションを付けると、使用中のメモリ領域についての詳細な情報を表示します。 .Pp .Fl V オプションを付けると、 .Nm ドライバが扱った最大 64 個までの最近の I/O リクエストに関する情報を、 .Ar info は表示します。 この情報は、デバッグフラグ 8 が設定されているときのみ収集されます。 書式は次のようになります: .Pp .Bd -literal vinum -> info -V Flags: 0x200 1 opens Total of 38 blocks malloced, total memory: 16460 Maximum allocs: 56, malloc table at 0xf0f72dbc Time Event Buf Dev Offset Bytes SD SDoff Doffset Goffset 14:40:00.637758 1VS Write 0xf2361f40 0x5b03 0x10 16384 14:40:00.639280 2LR Write 0xf2361f40 0x5b03 0x10 16384 14:40:00.639294 3RQ Read 0xf2361f40 0x427 0x104109 8192 19 0 0 0 14:40:00.639455 3RQ Read 0xf2361f40 0x417 0xd2109 8192 17 0 0 0 14:40:00.639529 3RQ Read 0xf2361f40 0x40f 0x6e109 8192 16 0 0 0 14:40:00.652978 4DN Read 0xf2361f40 0x427 0x104109 8192 19 0 0 0 14:40:00.667040 4DN Read 0xf2361f40 0x40f 0x6e109 8192 16 0 0 0 14:40:00.668556 4DN Read 0xf2361f40 0x417 0xd2109 8192 17 0 0 0 14:40:00.669777 6RP Write 0xf2361f40 0x427 0x104109 8192 19 0 0 0 14:40:00.685547 4DN Write 0xf2361f40 0x427 0x104109 8192 19 0 0 0 .Ed .Pp .Ar Buf フィールドは、ユーザバッファヘッダのアドレスを常に含みます。 ユーザリクエストに関連付けられるリクエスト (複数可) を識別するために 使用できますが、100% 信頼できるものというわけではありません: 理論的には、シーケンス中の 2 個のリクエストが同じバッファヘッダを使い得ますが、 これは一般的ではありません。 リクエストの先頭は、イベント .Ar 1VS で識別可能です。 前記の例では、複数のリクエストが単一のユーザリクエストに含まれています。 .Pp .Ar Event フィールドは、 リクエストチェーン中のイベントシーケンスに関連する情報を含みます。 .Ar 1 から .Ar 6 までの数字はイベントの大まかなシーケンスを示し、 2 文字の省略形は位置のニーモニックです。 .Bl -hang .It 1VS (vinum の strategy) .Fd vinumstrategy の入口にある、ユーザリクエストに関する情報を表示します。 デバイス番号は .Nm デバイスであり、オフセットと長さはユーザパラメータです。 本ニーモニックは、常にリクエストシーケンスの先頭になります。 .It 2LR (リクエスト発行) 関数 .Fd launch_requests において低レベル .Nm リクエストを発行する直前の、ユーザリクエストを表示します。 パラメータは .Ar 1VS の情報と同じはずです。 .Pp ここから後のリクエストでは、利用可能である場合、 .Ar Dev は関連付けられたディスクパーティションのデバイス番号であり、 .Ar Offset はパーティションの先頭からのオフセットであり、 .Ar SD は .Dv vinum_conf 中のサブディスクインデックスであり。 .Ar SDoff はサブディスクの先頭からのオフセットであり、 .Ar Doffset は関連付けられたデータリクエストのオフセットであり、 .Ar Goffset は関連付けられたグループリクエストのオフセットです。 .It 3RQ (リクエスト) 高レベルのリクエストを満たすために発行される、 いくつかありうる低レベル .Nm リクエストのうちのひとつを表示します。 この情報は、 .Fd launch_requests においても記録されます。 .It 4DN (完了) .Fd complete_rqe から呼ばれ、リクエストの完了を表示します。 この完了は、ステージ .Ar 4DN において .Fd launch_requests から発行されたリクエストか、またはステージ .Ar 5RD か .Ar 6RP の .Fd complete_raid5_write から発行されたリクエストにマッチするはずです。 .It 5RD (RAID-5 データ) .Fd complete_raid5_write から呼ばれ、 パリティ計算後に RAID-5 データストライプへ書き込まれたデータを表現します。 .It 6RP (RAID-5 パリティ) .Fd complete_raid5_write から呼ばれ、 パリティ計算後に RAID-5 パリティストライプへ書き込まれたデータを表現します。 .El .\" XXX .It Nm init Op Fl w .Ar plex .Pp .Nm .Ar init は指定したプレックスのすべてのサブディスクに 0 を書き込んでプレックスを初期化 します。これはプレックス中のデータに矛盾のないことを確実にする唯一の方法です。 RAID-5 プレックスの使用前には、この初期化が必要です。 他の新規プレックスに対しても、この初期化を推奨します。 .Nm はプレックス中のすべてのサブディスクを並行して初期化します。 この操作には長い時間が かかるため、通常バックグラウンドで実行されます。 このコマンドの完了を待ちたい場合、 .Fl w (待ち) オプションを使用してください。 .Nm は初期化が完了するとコンソールメッセージを出力します。 .It Nm label .Ar volume .Pp .Nm label コマンドは、ボリュームに .Ar ufs 形式のボリュームラベルを書き込みます。これは適切に .Ar disklabel を呼び出すことに対しての、単純な代替方法です。 いくつかの .Ar ufs コマンドはラベルを入手するために正規の .Ar ioctl コールを使わず、依然としてラベルを捜してディスクの読み込みを行う ため、このコマンドは必要になります。 .Nm はボリュームのデータとは別にボリュームラベルを保持しているため、この コマンドは .Ar newfs 用には必要ありません。 このコマンドの価値は低下しています。 .Pp .It Nm list .Op Fl r .Op Fl V .Op volume | plex | subdisk .if n .sp -1v .if t .sp -.6v .It Nm l .Op Fl r .Op Fl V .Op volume | plex | subdisk .if n .sp -1v .if t .sp -.6v .It Nm ld .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume .if n .sp -1v .if t .sp -.6v .It Nm ls .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op subdisk .if n .sp -1v .if t .sp -.6v .It Nm lp .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op plex .if n .sp -1v .if t .sp -.6v .It Nm lv .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume .Pp .Ar list は指定したオブジェクトの情報を表示するために使われます。引数が省略されると .Nm が認識しているすべてのオブジェクトについての情報が表示されます。 .Ar l コマンドは .Ar list と同じものです。 .Pp .Fl r オプションはボリュームとプレックスに関連します。 指定されると、そのオブジェクト下位のサブディスクと (ボリュームに対しては) プレックスの情報を再帰的に表示します。 .Ar lv , .Ar lp , .Ar ls , .Ar ld のコマンドは、それぞれボリューム、プレックス、サブディスク、そしてドライブの 情報だけを表示します。これはパラメータを指定しないで使う場合に特に有用です。 .Pp .Fl s オプションで .Nm は装置の統計情報を出力するようになり、 .Op Fl v (verbose: 饒舌な) オプションはいくらかの付加情報を出力させ、 そして .Op Fl V は数多くの付加情報を出力させます。 .It Nm makedev .br .Nm makedev コマンドは、ディレクトリ /dev/vinum を除去した上で、 現在の設定を反映するようなデバイスノードと共にこのディレクトリを再作成します。 本コマンドは、通常の場合に使用されることを意図していません。 非常時にのみ使用するために提供しています。 .Pp .It Nm quit 対話モードで実行中のときに、 .Nm プログラムを終了します。通常は、文字 .Ar EOF を入力することで実現できます。 .It Nm printconfig Op Pa file 現在の設定のコピーを、 .Nm 設定を再生成可能な書式で、 .Pa file に書き込みます。 ディスク上に保存された設定とは違い、ドライブの定義を含みます。 .Pa file を指定しないと、 .Nm は一覧を .Pa stdout へ書き込みます。 .It Nm read .Ar disk Op disk... .Pp .Nm read コマンドは、指定したディスクを走査し、作成済の設定情報を含む .Nm パーティションを探します。 そして、最近更新されたものから過去に更新されたものの順番で、 設定を読み込みます。 .Nm は最新のすべての設定情報を各ディスクパーティションに保持しています。 このコマンドの パラメータとして、設定の中の全スライスを指定する必要があります。 .Pp .Nm read コマンドは、他の .Nm パーティションを持つシステム上で、 .Nm 設定を選択的にロードすることを意図しています。 システム上の全パーティションを起動したい場合、 .Nm start コマンドを使用する方が簡単です。 .Pp 本コマンド実行時に .Nm がエラーになると、 ディスク上のコピーが壊れないようにするため、自動的な設定更新を無効にします。 これは、ディスク上の設定が、設定エラーを示す (例えば、有効な空間指定を持たないサブディスク) 場合にも同様です。 再度更新をオンにするには、 .Nm setdaemon と .Nm saveconfig のコマンドを使用してください。 デーモンオプションマスクのビット 4 をリセットして、 設定保存を再度有効にしてください。 .It Nm rename .Op Fl r .Ar [ drive | subdisk | plex | volume ] .Ar newname .Pp 指定したオブジェクトの名前を変更します。 .Fl r オプションが指定されると、下位のオブジェクトがデフォルトの規則に従って命名され ます。プレックスの名前はボリューム名に .p\f(BInumber\fP を付加して作られ、 サブディスクの名前はプレックス名に .s\f(BInumber\fP を付加して作られます。 .It Nm replace .Ar [ subdisk | plex ] .Ar newobject .Pp 指定したオブジェクトを同一の他のオブジェクトで置き換えます。このコマンドはまだ 実装されていません。 .It Nm resetconfig .Pp .Nm resetconfig コマンドはシステム内の .Nm 設定を完全に削除します。設定を完全に消去したい場合にだけ使って下さい。 .Nm は確認を求めます。NO FUTURE (前途なし) という語句を以下の通りに入力する必要が あります。 .Bd -unfilled -offset indent # \f(CBvinum resetconfig\f(CW 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 -> \f(BINO FUTURE\fP Vinum configuration obliterated (訳注: ここから上記テキストの翻訳です) 警告! このコマンドはあなたの vinum 設定を完全に消し去ります。 全データは失われます。本当にこれを実行したい場合は、語句 NO FUTURE を入力して下さい。 入力してください -> \f(BINO FUTURE\fP vinum の設定は削除されました。 (訳注: ここまで上記テキストの翻訳です) .Ed .ft R .Pp メッセージが示すように、どたん場のコマンドです。 既存の設定をもう見たくもないとき以外は、このコマンドを使わないでください。 .It Nm resetstats .Op Fl r .Op volume | plex | subdisk .Pp .Nm は各オブジェクトについて多数の統計カウンタを保持しています。詳細は ヘッダファイル .Fi vinumvar.h を参照して下さい。 .\" XXX 仕上がったらここに入れる これらのカウンタをリセットするためには .Nm resetstats コマンドを使って下さい。 .Fl r オプションも共に指定すると、 .Nm は下位のオブジェクトのカウンタもリセットします。 .It Nm rm .Op Fl f .Op Fl r .Ar volume | plex | subdisk .Pp .Nm rm はオブジェクトを .Nm 設定から消去します。ひとたびオブジェクトが消去されるとそれを復旧する方法は ありません。通常 .Nm はオブジェクトを消去する前に数多くの一貫性確認を行います。 .Fl f オプションを指定すると、 .Nm はこの確認を省略し、オブジェクトを無条件に消去します。このオプションは細心の 注意を払って使用して下さい。ボリューム上のすべてのデータを失うことも あり得ます。 .Pp 通常、 .Nm は下位にプレックスを持つボリュームや、下位にサブディスクを持つプレックスを 消去することを拒否します。 .Fl f フラグを指定すると、 .Nm は無条件にオブジェクトを消去します。または .Fl r (recursive: 再帰的) フラグを使うことで、同様に下位のオブジェクトを 消去することができます。 .Fl r フラグを付けてボリュームを消去すると、プレックスとそれに属するサブディスクも 消去します。 .It Nm saveconfig .Pp 現在の設定をディスクに保存します。 本コマンドの第一義は整備用です。 例えば、起動時にエラーが発生した場合、更新は無効化されます。 再度有効化しても、設定は自動的にはディスクへ保存されません。 このコマンドを使用して設定を保存してください。 .ig .It Nm set .Op Fl f .Ar state .Ar volume | plex | subdisk | disk .Nm set は指定したオブジェクトに、妥当な状態 (下記「オブジェクト状態」参照) のひとつを セットします。 通常、 .Nm は変更を加える前に非常に多くの一貫性の調査を実行します。 .Fl f オプションを指定すると、 .Nm はこの調査を省略し、無条件に変更を行います。このオプションは大いに注意して 使って下さい。ボリューム上のすべてのデータを失うこともあり得ます。 .\"XXX .Nm このコマンドはまだ実装されていません。 .. .It Nm setdaemon .Op value .Pp .Nm setdaemon は .Nm デーモンの変数ビットマスクを設定します。 本コマンドは一時的なものであり、将来置き換えられます。 現在、ビットマスクにはビット 1 (全アクションを syslog へ記録する) と ビット 4 (設定を更新しない) があります。 オプションビット 4 はエラー回復時に有用かもしれません。 .It Nm start .Op volume | plex | subdisk .Pp .Nm start は 1 つまたはそれ以上の .Nm オブジェクトを起動します ( .Ar up 状態に移行させます)。 .Pp オブジェクト名を指定しないと、システムが .Nm ドライブであると知っているディスクを、 .Nm は走査します。その後、 .Nm read コマンドのところに書いてあるように、設定を読み込みます。 .Nm ドライブにはそのドライブ中のデータについてのすべての情報を持つヘッダが 入っており、その情報としてはプレックスとボリュームを表現するために必要な 他のドライブの名前を含んでいます。 .Pp 本コマンド実行時に .Nm がエラーになると、 ディスク上のコピーが壊れないようにするため、自動的な設定更新を無効にします。 これは、ディスク上の設定が、設定エラーを示す (例えば、有効な空間指定を持たないサブディスク) 場合にも同様です。 再度更新をオンにするには、 .Nm setdaemon と .Nm saveconfig のコマンドを使用してください。 デーモンオプションマスクのビット 4 をリセットして、 設定保存を再度有効にしてください。 .Pp オブジェクト名が指定されると、 .Nm はそれらを起動します。 通常、この操作はサブディスクに対してのみ行います。 動作はオブジェクトの現在の状態に依存します: .Bl -bullet .It オブジェクトが既に .Ar up 状態の場合、 .Nm はなにもしません。 .It オブジェクトがサブディスクであり、 .Ar down または .Ar reborn の状態の場合、 .Nm は .Ar up 状態に変更します。 .It オブジェクトがサブディスクであり、 .Ar empty 状態の場合、変更はサブディスクに依存します。 サブディスクがプレックスの一部であり このプレックスが他のプレックスを含むボリュームの一部である場合、 .Nm はサブディスクを .Ar reviving 状態にし、データをボリュームからコピーしようとします。 操作完了時に、サブディスクは .Ar up 状態に設定されます。 サブディスクがプレックスの一部であり このプレックスが他のプレックスを含まないボリュームの一部である場合、 またはサブディスクがプレックスの一部ではない場合、 .Nm は即時にサブディスクを .Ar up 状態にします。 .It オブジェクトがサブディスクであり、 .Ar reviving 状態である場合、 .Nm は .Ar revive 操作をオフラインにて継続します。 操作完了時に、サブディスクは .Ar up 状態に設定されます。 .El .Pp サブディスクが .Ar up 状態になると、 .Nm は自動的に、 サブディスクが属す可能性のあるプレックスとボリュームの状態をチェックし、 これらの状態を適切に更新します。 .Pp オブジェクトがボリュームまたはプレックスの場合、 .Nm start は現在のところ効果がありません: 下位のサブディスクの (ボリュームの場合にはこれに加えてプレックスの) 状態を チェックし、これに従ってオブジェクトの状態を設定します。 将来のバージョンでは、本操作はサブディスクに影響を与えるようになります。 .Pp マルチプレックスボリュームの中の 1 つのプレックスを起動するには、 ボリューム中の他のプレックスからデータをコピーする必要があります。 これにはしばしば長い時間がかかるため、バックグラウンドで実行されます。 .It Nm stop .Op Fl f .Op volume | plex | subdisk .Pp パラメータを指定しないと、 .Nm stop は .Nm kld を削除し、 .Xr vinum 8 を停止します。 活動状態のオブジェクトが存在しない場合のみ、行うことが可能です。 特に、 .Fl f フラグはこの要求に優先しません。 このコマンドが動作するのは、 .Nm が kld としてロードされている場合のみです。 静的に構成されたドライバをアンロードすることはできないからです。 .Nm が静的に構成されている場合、 .Nm .Nm stop は失敗します。 .Pp オブジェクト名が指定されると、 .Nm stop はそのオブジェクトへのアクセスを無効化します。 オブジェクトに下位オブジェクトがある場合、 それらのサブオブジェクトは既に非活動状態 (stop また error) となっているか、 .Fl r と .Fl f のフラグが指定されていることが必要です。 このコマンドは、オブジェクトを設定から取り除きません。 .Nm start コマンドの後で再度アクセスができるようになります。 .Pp デフォルトでは .Nm は動作中のオブジェクトは停止しません。例えば、動作中のボリュームに結合 されているプレックスは停止できないし、オープン中のボリュームは停止できません。 .Fl f オプションは .Nm にこの確認を省略して無条件に削除するよう指示します。このオプションは 大いに注意し、よく理解した上で使って下さい。もし間違って使うとひどい データ破壊を起こすことがあります。 .El .Ss 設定ファイル .Nm では、 .Nm create コマンドに渡すすべての引数は設定ファイルに入っている必要があります。 設定ファイルのエントリは、ボリュームやプレックスやサブディスクを定義します。 エントリは 1 行に 1 つということ以外には決まった書式はありません。 .Pp 設定ファイルのいくつかの引数では、大きさ (長さ、ストライプ長) を指定します。 これらの長さは、バイト単位でも、512バイトのセクタ数 (\f(CWs\fRを後ろにつける) でも、キロバイト単位 (\f(CWk\fRをつける) でも、メガバイト単位(\f(CWm\fRを つける)でも、またはギガバイト単位 (\f(CWg\fRをつける) でも指定することが できます。これらの数はそれぞれ 2**10、2**20、2**30を表しています。例えば、 \f(CW16777216\fR バイトという値は \f(CW16m\fR とも \f(CW16384k\fR とも \f(CW32768b\fR とも記述することができます。 .Pp 互換性のために、 文字 \f(CWb\fP (ブロック) を \f(CWs\fP (セクタ) と同じものとして受け付けます。 ブロックサイズは文脈に強く依存しますので、この短縮形の価値は低下しています。 .Pp 設定ファイルには以下のエントリを記述することができます。 .Pp .Bl -hang -width 4n +.It Nm drive Ar name option +.Pp +ドライブを定義します。オプションは次のようになっている必要があります: +.Pp +.Bl -hang -width 18n +.It Nm device Ar devicename +ドライブが乗るデバイスを指定します。 +.Ar devicename +は、例えば +.Pa /dev/da1e +や +.Pa /dev/wd3h +といったディスク互換パーティションである必要があり、タイプ +.Nm vinum +である必要があります。 +.Nm c +パーティションを使用してはなりません。 +これはディスク全体のために予約されており、タイプ +.Nm unused +であるべきだからです。 +現在、 +例えば +.Pa /dev/da0s1 +や +.Pa /dev/da0s1e +といった他のディスクデバイス上にドライブを作成可能ですが、 +これらのドライブはリブート後に起動できません。 +.El .It Nm volume .Ar name .Op options .Pp .Ar name という名前でボリュームを定義します。 .Pp オプションには次のものがあります。 .Pp .Bl -hang -width 18n .It Nm plex Ar plexname 指定したプレックスをボリュームに追加します。 .Ar plexname が .Ar * として指定されると、 .Nm は設定ファイル中のボリューム定義の後で、次の妥当なエントリとなり得るプレックス の定義を捜します。 .It Nm readpol Ar policy ボリュームの .Ar read policy (読み込み方針) を定義します。 .Ar policy は .Nm round か .Nm prefer Ar plexname のどちらかです。 .Nm は読み込み要求を、ただ 1 つのプレックスによって満たします。 .Ar round 読み込み方針は、読み込みを別々のプレックスから \fIラウンドロビン\fR\| 方式で 行うように指定します。 .Ar prefer 読み込み方針では、指定したプレックスから毎回読み込みを行います。 .It Nm setupstate .Pp マルチプレックスボリュームを作成する際に、すべてのプレックスの内容に一貫性が あると仮定します。通常こうなることはないため、正式には .Nm init コマンドを使って、最初に一貫性のある状態にする必要があります。しかし ストライプ化プレックスとコンカチネート化プレックスの場合には、普通は一貫性が ないままでも問題にはなりません。ボリュームをファイルシステムや スワップパーティションとして使う場合にはディスク上の以前の内容は どうでもよいため、それは無視されます。この危険を受け入れる場合には、 このキーワードを使って下さい。 設定ファイル中でボリュームの直後で定義されるプレックスに対してのみ 適用されます。 後でプレックスをボリュームに追加する場合には、 これらのプレックスを統合する必要があります。 .Pp RAID-5 プレックスには .Nm init を使うことが \fI必要\fP\| なことに注意して下さい。さもないと 1 つのサブディスクに障害が起きた時、大きくデータが破壊されます。 .fi .El .It Nm plex Op options .Pp プレックスを定義します。ボリュームとは違い、名前は不要です。 オプションには次のものを指定可能です: .Pp .Bl -hang -width 18n .It Nm name Ar plexname プレックスの名前を指定します。プレックスやサブディスクに名前をつける場合には .Ar name キーワードが必要になることに注意して下さい。 .sp .It Nm org Ar organization Op stripesize .Pp プレックスの編成を指定します。 .Ar organization は .Ar concat か .Ar striped か .Ar raid5 のいずれかです。 .Ar striped と .Ar raid5 のプレックスに対しては .Ar stripesize 引数を指定する必要がありますが、 .Ar concat のプレックスに対しては省略する必要があります。 .Ar striped タイプについては各ストライプの幅を指定します。 .Ar raid5 については、グループの大きさを指定します。 グループとはプレックスの一部分であり、 同じサブディスクに入っているすべてのデータのパリティが入っています。 それはプレックスの大きさの約数である必要があり (つまり、プレックスの大きさをストライプの大きさで割ったものは 整数である必要があり)、 ディスクセクタ長 (512バイト) の倍数である必要があります。 .sp 最適な性能のためには、ストライプの大きさは少なくとも 128kB であるべきです。 これより小さくすると、 個々のリクエストが複数のディスクに対して割り当てられることにより、 I/O のアクティビティが非常に増加します。 本マッピングによる並行転送数増加に起因する性能向上は、 レイテンシ増加に起因する性能劣化を引き起しません。 ストライプの大きさの目安は、256 kB から 512 kB の間です。 .Pp ストライプ化プレックスは最低 2 つのサブディスクを持つ必要がありますし (そうでないとコンカチネート化プレックスになります)、 それぞれは同じ大きさである必要があります。 RAID-5 プレックスは最低 3 つのサブディスクを持つ必要があり、 それぞれは同じ大きさである必要があります。 実際には RAID-5 プレックスは最低 5 つのサブディスクから構成されるべきです。 .Pp .It Nm volume Ar volume プレックスを、指定したボリュームに追加します。 .Nm volume キーワードが指定されないと、プレックスは設定ファイル中の最後に記述された ボリュームに追加されます。 .sp .It Nm sd Ar sdname Ar offset 指定したサブディスクをプレックスの .Ar offset の位置に追加します。 .br .fi .El .It Nm subdisk Op options .Pp サブディスクを定義します。オプションには次のものを指定可能です: .Pp .Bl -hang -width 18n .nf .sp .It Nm name Ar name サブディスクの名前を指定します。これは必ずしも指定する必要は ありません\(em 上記の「オブジェクトの命名」を参照してください。 サブディスクに名前をつける場合には .Ar name キーワードを指定する必要があることに注意して下さい。 .sp .It Nm plexoffset Ar offset プレックス内のサブディスクの始点を指定します。指定がないと、 .Nm はすでにサブディスクがあればその直後の領域を割り当て、なければ プレックスの先頭から割り当てます。 .sp .It Nm driveoffset Ar offset ドライブ内のサブディスクの始点を指定します。指定がないと、 .Nm はドライブ中で最初の .Ar length バイト連続の空き領域を割り当てます。 .sp .It Nm length Ar length サブディスクの大きさを指定します。このキーワードは必須です。 デフォルト値はありません。 値 0 を指定すると、 .if t ``ドライブ上で最大限利用可能な連続空き領域を使用'' .if n "ドライブ上で最大限利用可能な連続空き領域を使用" という意味になります。 ドライブが空の場合、サブディスクとしてドライブ全体を使用することを意味します。 .Nm length は .Nm len と短縮することもできます。 .sp .It Nm plex Ar plex サブディスクが属すプレックスを指定します。デフォルトでは、サブディスクは 最後に記述されたプレックスに属します。 .sp .It Nm drive Ar drive サブディスクが乗るドライブを指定します。デフォルトでは最後に記述された ドライブ上に位置します。 .br .fi .El -.It Nm drive Ar name Op options -.Pp -ドライブを定義します。オプションには次のものを指定可能です: -.Pp -.Bl -hang -width 18n -.It Nm device Ar devicename -ドライブが乗るデバイスを指定します。 -.El .El .Sh 設定ファイル例 .Bd -literal # 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 512b sd length 64m drive drive2 sd length 64m drive drive4 volume stripe plex org striped 512b 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 512b 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 64k sd length 1000m drive drive2 sd length 1000m drive drive4 plex org raid5 32k 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 .Ed .Ss ドライブレイアウト上の考慮点 現在、 .Nm ドライブは BSD ディスクパーティションです。それは ファイルシステムの上書きを避けるために .Ar vinum タイプである必要があります。 互換性のために、現在の .Nm はパーティションタイプ .Ar unused を受け付けますが、次のリリースではこの種類のパーティションは許しません。 タイプ .Ar unused であるパーティションから設定を読み出すと、 .Nm は警告メッセージを表示します。 .Nm disklabel .Ar -e を使用して、パーティションタイプ定義を編集してください。 次の表示は、 .Nm disklabel が示す典型的なパーティションレイアウトです: .Bd -literal 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*) .Ed .sp この例では、パーティション .Nm g を .Nm パーティションとして使用可能です。パーティション .Nm a , .Nm e , .Nm f は、 .Nm UFS ファイルシステムまたは .Nm ccd パーティションとして使用可能です。パーティション .Nm b はスワップパーティションであり、パーティション .Nm c はディスク全体を表現するため他の用途に使用できません。 .Pp .Nm は各パーティションの先頭から 265 セクタを設定情報に使用するため、 サブディスクの最大の大きさはドライブよりも 265 セクタ小さくなります。 .Sh ログファイル .Nm はログファイルを管理します。 ログファイルは、デフォルトでは .Pa /var/tmp/vinum.history であり、 .Nm vinum に対して発行したコマンドの履歴を保持します。 環境変数 .Ev VINUM_HISTORY をファイルの名前に設定することにより、 このファイルの名前をオーバライド可能です。 .Pp ログファイル中のメッセージの前には日付が付きます。 デフォルトの書式は .Li %e %b %Y %H:%M:%S です。書式の文字列に関するさらなる詳細については .Xr strftime 3 を参照してください。 これは環境変数 .Ev VINUM_DATEFORMAT でオーバライド可能です。 .Sh VINUM 設定法 本節では、 .Nm システムの実装方法に関する、現実的なアドバイスを行います。 .Ss データを何処に置くか まず決定が必要な選択は、データを何処に置くかです。 .Nm 専用のディスクパーティションが必要です。 -前述した、ドライブレイアウト上の考慮点にある使用例を参照してください。 -.Xr disklabel 8 -がパーティションタイプ -.Nm -を理解しないバージョンである場合を除き、パーティションタイプ -.Nm -を選択してください。 -.Xr disklabel 8 -が理解しない場合には、これを更新するまで、パーティションタイプ +これらは、デバイスやパーティション +.Nm c +やスライスではなく、互換パーティションであるべきでです。 +例えば、適切な名前とは、 +.Pa /dev/da0e +や +.Pa /dev/wd3a +です。 +不適切な名前とは、パーティションではなくデバイスを表現する +.Pa /dev/da0 , +.Pa /dev/da0s1 +や、ディスク全体を表現しタイプ .Nm unused -を使用する必要があります。 -真のパーティション名 (例えば -.Pa /dev/da0s1g ) -ではなく、互換パーティション名 (例えば -.Pa /dev/da0g ) -を使用してください。 -現在のところ、 -.Nm start -コマンドには互換パーティションのみを +であるべき +.Pa /dev/wd1c +や、互換パーティションではない +.Pa /dev/da3s0e +です。 .Nm -は使用しますので、問題を避けることが可能となっています。 +は現在これらの名前のドライブの作成を許しますが、 +.Nm start +コマンドはこのようなドライブを発見しません。 +前述した、ドライブレイアウト上の考慮点にある使用例を参照してください。 .Ss ボリュームのデザイン .Nm ボリュームの設定方法は、あなたの意図に依存します。 次のように多くの可能性があります: .Bl -enum .It 多くの小さなディスクを結合して、 適切な大きさのファイルシステムを作成したいと考えるかもしれません。 例えば、小さなディスクを 5 個持っていて、 全空間を単一ボリュームとして使用したい場合、次のような設定ファイルを書きます: .Bd -literal -offset 4n 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 .Ed .Pp この場合、サブディスクの長さを 0 と指定します。 これは、 .if t ``ドライブ上にある空き空間のうち、最大領域を使用する'' .if n "ドライブ上にある空き空間のうち、最大領域を使用する" ことを意味します。 指定するサブディスクが、ドライブ上の唯一のサブディスクである場合、 このサブディスクは使用可能な空間全体を使用します。 .It ディスク故障に対する追加の回復力 (レジリエンス; resilience) を .Nm に与えたい場合を考えます。 選択肢としては、 .if t ``ミラーリング'' .if n "ミラーリング" とも呼ばれる RAID-1 か、 .if t ``パリティ'' .if n "パリティ" とも呼ばれる RAID-5 があります。 .Pp ミラーリングの設定のためには、 単一ボリュームの中に複数のプレックスを作成する必要があります。 例えば、 2 GB のミラー化ボリュームを作成するには、 次のような設定ファイルを作成します: .Bd -literal -offset 4n 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 .Ed .Pp ミラー化ドライブを作成するときには、 各プレックスからのデータが、 違う物理ディスク上にあることを保証することが重要です。 これにより、単一ドライブ故障においても、 .Nm はボリュームの完全なアドレス空間にアクセス可能となります。 各プレックスが、 完全なボリュームと同じだけのデータを必要とすることに注意してください: この例では、ボリュームは 2 GB の大きさですが、各プレックス (と各サブディスク) は 2 GB を必要としますので、全体のディスクストレージ要求は 4 GB となります。 .Pp RAID-5 の設定をするには、タイプ .Ar raid5 の単一プレックスを作成します。 例えば、回復力を持つ 2 GB に相当するボリュームを作成するには、 次のような設定ファイルを使用します: .Bd -literal -offset 4n 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 512k 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 .Ed .Pp RAID-5 プレックスは、最低 3 個のサブディスクを必要とします。 これらのうち 1 個には、パリティ情報を格納するので、 データストレージとしては使用しません。 より多くのディスクを使用すると、 より多くの割合のディスクストレージを、 データストレージとして使用可能となります。 この例では、総ストレージ使用量は 2.5 GB です。 これに対し、ミラー設定での総ストレージ使用量は 4 GB です。 最小の 3 個のディスクだけを使用する場合、 情報格納のために次のように 3 GB を必要とします: .Bd -literal -offset 4n drive d1 device /dev/da2e drive d2 device /dev/da3e drive d3 device /dev/da4e volume raid plex org raid5 512k sd length 1g drive d1 sd length 1g drive d2 sd length 1g drive d3 .Ed .Pp ミラー化ドライブを作成するときには、 各サブディスクからのデータが、 違う物理ディスク上にあることを保証することが重要です。 これにより、単一ドライブ故障においても、 .Nm はボリュームの完全なアドレス空間にアクセス可能となります。 .It また、 .Nm の設定により、 ファイルシステムへのアクセスの並行性を増したいと考えるかもしれません。 多くの場合、単一のファイルシステムへのアクセスは、 ディスク速度により制限されます。 ボリュームを複数のディスクに分散することにより、 複数アクセス環境でのスループットを増すことが可能です。 この技術は、単一アクセス環境では、 ほとんど効果がないかまったく効果がありません。 .Nm は .if t ``ストライピング'' .if n "ストライピング" または RAID-0 とも呼ばれる技術を使用し、アクセスの並行性を増します。 RAID-0 という名称は誤解を生じさせるものです: なぜなら、ストライピングは冗長性も更なる信頼性も提供しないからです。 実際、信頼性は低下します。 なぜなら、単一ディスクの故障はボリュームを使用不可とし、 多くのディスクを使うほどこれらのうち 1 個が故障する確率は増加するからです。 .Pp ストライピングの実装のためには、 .Ar striped (ストライプ化) プレックスを使用します: .Bd -literal -offset 4n 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 512k sd length 512m drive d1 sd length 512m drive d2 sd length 512m drive d3 sd length 512m drive d4 .Ed .Pp ストライプ化プレックスの最低サブディスク数は 2 個です。 多くのディスクを使用するほど、性能が向上します。 .It 両方の最良点を得ることにより、回復力と性能の両方を得ることを考えます。 これは、RAID-10 (RAID-1 と RAID-0 の組み合わせ) と呼ばれることがあります。 この名称もまた誤解を生じさせるものです。 .Nm では、次のような設定ファイルを使用可能です: .Bd -literal -offset 4n 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 512k sd length 512m drive d1 sd length 512m drive d2 sd length 512m drive d3 sd length 512m drive d4 plex org striped 512k sd length 512m drive d4 sd length 512m drive d3 sd length 512m drive d2 sd length 512m drive d1 .Ed .Pp ここでは、プレックスはストライプ化され、性能を向上しています。 そして、このようなプレックスが 2 個あり、回復力を向上しています。 この例で、2 番目のプレックスのサブディスクの順番が、 1 番目のプレックスの逆になっていることに注意してください。 これは性能のためであり、後で議論します。 .El .Ss ボリュームの作成 ひとたび設定ファイルを作成した後は、 .Nm を起動し、ボリュームを作成します。 この例では、設定ファイルは .Pa configfile です: .Bd -literal # 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 .Ed .Pp .Fl v フラグは、設定に従ってファイルをリストするよう、 .Nm に指示します。その後、 .Nm list Fl v コマンドと同じ書式で、現在の設定をリストします。 .Ss より多くのボリュームを作成する ひとたび .Nm ボリュームを作成した後は、 .Nm はこれらの情報を内部の設定ファイルにて管理します。 再度作成する必要はありません。 特に、 .Nm create コマンドを再実行すると、追加のオブジェクトを作ることになります: .Bd -literal .if t .ps -2 # 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 .if t .ps .Ed .Pp この例では (今回は .Fl f フラグを付けています)、 .Nm create の再実行により 4 個の新規プレックスを作成し、 それぞれが新規サブディスクを持ちます。 他のボリュームを追加したい場合、これらのための新規設定ファイルを作成します。 .Nm が既に知っているドライブを参照する必要はありません。 例えば、ボリューム .Pa raid を 4 個のディスク .Pa /dev/da1e , .Pa /dev/da2e , .Pa /dev/da3e , .Pa /dev/da4e 上に作成するには、他の 2 個についてのみ記述するだけで良いです: .Bd -literal drive d3 device /dev/da1e drive d4 device /dev/da4e volume raid plex org raid5 512k sd size 2g drive d1 sd size 2g drive d2 sd size 2g drive d3 sd size 2g drive d4 .Ed .Pp この設定ファイルでは、次のようになります: .Bd -literal # 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: 512 kB Size: 2048 MB S raid.p0.s2 State: empty PO: 1024 kB Size: 2048 MB S raid.p0.s3 State: empty PO: 1536 kB Size: 2048 MB .Ed .Pp RAID-5 プレックスの大きさに注意してください: 6 GB しかありませんが、 これを構成するためにディスク空間を 8 GB 使用しています。 これは、サブディスク 1 個分相当をパリティデータ格納に使用しているからです。 .Ss Vinum の再起動 システムのリブート時に、 .Nm start コマンドで .Nm を起動します: .Bd -literal # vinum start .Ed .Pp これにより、システム中の全 .Nm ドライブが起動します。 なんらかの理由で一部のドライブのみを起動したい場合、 .Nm read コマンドを使用してください。 .Ss 性能関連 最高性能の RAID アレイ設定に関する、多くの誤った考えが存在しています。 特に、ほとんどのシステムで使用しているストライプの大きさは、小さ過ぎます。 以降の議論は、 .Nm vinum だけでなく、全 RAID システムにあてはまります。 .Pp FreeBSD のブロック I/O システムは、.5 kB から 60 kB までの要求を発行します; .\" mix = workload mix ? 典型的なミックスでは、ほぼ 8 kB です。 どんなストライピングシステムにおいても、 ある要求が 2 個の物理要求に分割されることを避けることはできませんし、 より悪くするならばより多くに分割されてしまいます。 これにより、甚大な性能劣化となります: ディスクあたりの転送時間の削減は、 より大きなオーダで増加するレイテンシによって相殺されてしまいます。 .Pp 最近のディスクの大きさと FreeBSD のブロック I/O システムでは、 ストライプの大きさを 256 kB から 512 kB にすると、 適度に少数な要求に分割されることを期待できます; 正しい RAID の実装では、 大きなディスクでのストライプの大きさを 2 または 4 MB に増さない 明確な理由はありません。 .Pp 複数アクセスシステムでの転送のインパクトを考えるためのもっとも容易な方法は、 潜在的なボトルネック、すなわちディスクサブシステムの観点から見ることです: つまり、転送に要するディスク時間の総計はいくらか?です。 ほとんどすべてがキャッシュされているので、 要求と完了との時間的な関係はそれほど重要ではありません: 重要なパラメータは、要求がディスクを活動状態にする総時間であり、 この間ディスクは他の転送ができなくなります。 この結果、転送が同時に発生しても違う時に発生しても、 実際には問題とはなりません。 実際的には、我々が見ている時間は、レイテンシの総和 (位置決定時間と回転遅延、 言い替えるとデータがディスクヘッド下に来るまでの時間) と総転送時間です。 同じ速度のディスクへの転送においては、 転送時間は転送の大きさの合計のみに依存します。 .Pp 24 kB の典型的なニュースの記事やウェブページを考えると、 これは 1 回の I/O で読み込めます。 ディスクが転送レート 6 MB/s で平均位置決定時間 8 ms であり、 ファイルシステムを 4 kB ブロックであるとします。 24 kB ですから、断片化を考慮する必要はなく、 ファイルは 4 kB 境界から開始します。 必要な転送回数はブロック開始位置に依存します: 式は (S + F - 1) / S となり、 S はファイルシステムブロック数でのストライプの大きさ、 F はファイルシステムブロック数でのファイルの大きさです。 .Pp .Bl -enum .It ストライプの大きさは 4 kB。転送回数は 6 回。 サブシステムの負荷: レイテンシ 48 ms、転送 2 ms、合計 50 ms。 .It ストライプの大きさは 8 kB。転送回数は 3.5 回。 サブシステムの負荷: レイテンシ 28 ms、転送 2 ms、合計 30 ms。 .It ストライプの大きさは 16 kB。転送回数は 2.25 回。 サブシステムの負荷: レイテンシ 18 ms、転送 2 ms、合計 20 ms。 .It ストライプの大きさは 256 kB。平均転送回数は 1.08 回。 サブシステムの負荷: レイテンシ 8.6 ms、転送 2 ms、合計 10.6 ms。 .It ストライプの大きさは 4 MB。平均転送回数は 1.0009 回。 サブシステムの負荷: レイテンシ 8.01 ms、転送 2 ms、合計 10.01 ms。 .El .Pp ハードウェア RAID システムによっては、 大きなストライプでは問題があるものがあるようです: このようなシステムでは完全なストライプを常にディスクとの間で転送するようで、 大きなストライプは性能に逆効果となります。 .Nm ではこの問題の被害を受けません: すべてのディスク転送を最適化し、不要なデータを転送しないからです。 .Pp 良く知られたベンチマークプログラムで真の複数アクセス状態 (100 を越える同時ユーザ) をテストするものはないので、 この主張の正しさを証明することは困難であることに注意してください。 .Pp これらのことを考えると、次の事項が .Nm ボリュームの性能に影響します: .Bl -bullet .It ストライピングは、複数アクセスのみの性能を向上します。 各要求が違うディスク上にある確率が増加するからです。 .It 複数ドライブにまたがるコンカチネート化 UFS ファイルシステムもまた、 複数ファイルアクセスの性能を向上します。 UFS は、ファイルシステムをシリンダグループに分割し、 ファイルを単一のシリンダグループに置こうとするからです。 一般的に、ストライピングほどは効果がありません。 .It ミラーリングは、読み込み複数アクセスの性能を向上可能です。 デフォルトでは .Nm は、連続する複数の読み込みを、 連続する複数のプレックスに対して発行するからです。 .It ミラーリングは、複数アクセスか単一アクセスかに関わらず、 すべての書き込みの性能を劣化させます。 両方のプレックスに対し、データを書き込む必要があるからです。 これが、前述のミラーリング設定におけるサブディスクのレイアウトの説明です: 各プレックス中の対応するサブディスクが別の物理ディスクにある場合、 書き込みコマンドは並列に発行可能です。 しかし、同じ物理ディスクにある場合、逐次的に実行されてしまいます。 .It RAID-5 の読み込みは、 ストライプ化の読み込みと本質的に同じ考慮すべき点があります。 ただし、ストライプ化プレックスがミラー化ボリュームの一部である場合を除きます。 この場合、ミラー化ボリュームの方が性能が良くなります。 .It RAID-5 の書き込みは、ストライプ化の書き込みの約 25% の速度です: 書き込みを行うには、 .Nm はまずデータブロックと対応するパリティブロックを読み込み、 いくばくかの計算を行い、 パリティブロックとデータブロックを書き戻す必要がありますので、 ストライプ化プレックスに対する書き込みの 4 倍の転送回数となります。 一方、これはミラーリングのコストにより相殺されますので、 単一 RAID-5 プレックスのボリュームへの書き込みは、 2 個のストライプ化プレックスからなる正しく設定されたボリュームへの 書き込み速度の半分となります。 .It .Nm の設定が変わると (例えば、オブジェクトの追加や削除、またはオブジェクトの状態変更)、 .Nm は 128 kB までの更新された設定を各ドライブに書き込みます。 ドライブ数が増加すると、この時間が長くなります。 .El .Ss Vinum ボリューム上にファイルシステムを作成する .Nm ボリューム上にファイルシステムを作成する前に .Nm disklabel を実行する必要はありません。 raw デバイスに対して .Nm newfs だけを実行してください。 .Fl v オプションを使用して、 デバイスがパーティションに分割されないようにしてください。 例えば、ボリューム .Pa mirror 上にファイルシステムを作成するには、次のコマンドを入力します: .Bd -literal -offset 4n # newfs -v /dev/vinum/rmirror .Ed .Pp .Pa rmirror という名前が raw デバイスを参照していることに注意してください。 .Sh その他のことがら .Nm の設定に関係する数個のその他のことがらがあります: .Bl -bullet .It 複数のドライブを単一ディスク上に作成しても、利益はありません。 各ドライブは 131.5 kB のデータをラベルと設定情報に使用し、 設定変更時に性能が劣化します。 適切な大きさのサブディスクを使用してください。 .It コンカチネート化 .Nm プレックスの大きさを増すことはできますが、 現在のところストライプ化プレックスと RAID-5 プレックスでは増せません。 現在のところ既存の UFS ファイルシステムの大きさを増すこともできません。 プレックスおよびファイルシステムを拡張可能とする計画はあります。 .El .Sh 分かりにくい仕様 (GOTCHAS) 次の事柄はバグではありませんし、存在する理由があるのですが、 混乱を引き起こすものです。 各項目は適切な節において議論されています。 .Bl -enum .It .Nm はデバイスを UFS パーティション上には作成するよう要求されると、 ``wrong partition type'' というエラーメッセージを返します。 パーティションタイプは、現在のところ、``unused'' である必要があります。 .It 複数のプレックスからなるボリューム作成時に、 .Nm はプレックスを自動的には初期化しません。 これは、内容については分からなくても、 これらの間には確かに一貫性がないということを意味しています。 その結果デフォルトでは、 新規作成されたプレックスのうち最初のものを除いたすべての状態を、 .Nm は .Ar 古い (stale) 状態に設定します。 .sp 実際上は、プレックス作成時にその内容に多大な興味を持つ人はいないので、 他のボリュームマネージャはどんなときでも .Ar 起動 (up) に設定して騙します。 .Nm は、新規作成されたプレックスが .Ar 起動 (up) 状態であることを保証するために、2 つの方法を提供します: .Bl -bullet .It プレックスを作成し、それらを .Nm vinum start で同期します。 .It キーワード .Ar setupstate 付きでボリューム (プレックスではありません) を作成します。 このキーワードは、矛盾が存在しても無視してプレックスの状態を .Ar 起動 (up) 状態にするように、 .Nm に指示します。 .El .It 現在 .Nm がサポートしているコマンドには、実際には不要なものがあります。 私には理解できない理由があるのでしょうが、 .Nm label および .Nm resetconfig のコマンドを使おうとするユーザをしばしば見掛けます。特に .Nm resetconfig は、あらゆる種類の恐しいメッセージを表示するにもかかわらずです。 正当な理由無しに、これらのコマンドを使わないでください。 .It 状態遷移には非常に分り難いものがあります。 事実、これがバグであるのか仕様であるのかは明かではありません。 .Ar reborn サブディスクなどの、奇妙な状態になったオブジェクトを起動できない場合には、 .Nm stop または .Nm stop Ar -f のコマンドを使用して、まず .Ar stopped 状態に遷移させてください。 これが上手くいけば、オブジェクトを起動できるはずです。 簡単な方法では上手くいかなくて、これが唯一の回復手段である場合、 その状況を報告してください。 .It カーネルモジュールを .Ar -DVINUMDEBUG オプション付きで構築した場合、 .Nm vinum(8) もまた .Ar -DVINUMDEBUG オプション付きで構築する必要があります。 なぜなら、両方のコンポーネントで使用されるデータオブジェクトに、 大きさが本オプションに依存しているものがあるからです。 前記のようにしないと、 .Ar Invalid argument というメッセージを表示してコマンドは失敗し、 次のようなコンソールメッセージが記録されます: .Pp .Bd -literal vinumioctl: invalid ioctl from process 247 (vinum): c0e44642 .Ed .Pp 古いバージョンの kld やユーザランドプログラムを使うと、 このエラーが発生することがあります。 .It .Nm ドライブは UNIX ディスクパーティションであり、パーティションタイプ .Ar vinum を使用します。 これは、パーティションタイプが .Ar 4.2BSD となる .Nm ccd とは違います。 この ccd の動作は、自分の足元をすくうことになります: .Nm ccd では、容易にファイルシステムを上書きできてしまいます。 .Nm ではそのようなことは許しません。 .Pp 同様の理由で、 .Nm vinum Ar start コマンドは、パーティション .Ar c 上のドライブを受け付けません。 パーティション .Ar c は、ディスク全体を表現するためにシステムが使用し、タイプ .Ar unused である必要があります。 ここには明確な矛盾があるので、 .Ar c パーティションを使用しないことにより .Nm は問題を解決しています。 .It .Nm vinum Ar read コマンドの文法は、吐き気を催すものです。 これが唯一の .Nm vinum 起動のためのコマンドでしたが、今の好ましい方法は .Nm vinum Ar start です。 .Nm vinum Ar read は整備のみに使用すべきです。 文法が変更されたので、引き数が .Pa /dev/da0 のようなディスクスライスであり .Pa /dev/da0e のようなパーティションではないことに注意してください。 .El .\"XXX.Sh BUGS .Sh 関連ファイル .Ar /dev/vinum - .Nm オブジェクトのデバイスノードがあるディレクトリ .br .Ar /dev/vinum/control - .Nm vinum の制御デバイスがあるディレクトリ .br .Ar /dev/vinum/plex - .Nm プレックスのデバイスノードがあるディレクトリ .br .Ar /dev/vinum/sd - .Nm サブディスクのデバイスノードがあるディレクトリ .Sh 環境変数 .Bl -hang .It VINUM_HISTORY ログファイルの名前です。デフォルトでは /var/log/vinum_history です。 .It VINUM_DATEFORMAT ログファイル中の日付の書式です。デフォルトは %e %b %Y %H:%M:%S です。 .It EDITOR 設定ファイルの編集に使用するエディタの名前です。デフォルトは .Nm vi です。 .El .Sh 関連項目 .Xr vinum 4 , .Xr disklabel 8 , .Xr newfs 8 , .Xr strftime 3 , .Pa http://www.lemis.com/vinum.html , .Pa http://www.lemis.com/vinum-debugging.html . .Sh 作者 Greg Lehey .Pa .Sh 歴史 .Nm コマンドは FreeBSD 3.0 から登場しました。 diff --git a/ja_JP.eucJP/man/man8/vinum.8 b/ja_JP.eucJP/man/man8/vinum.8 index 396ebb7f0c..c97be1ca23 100644 --- a/ja_JP.eucJP/man/man8/vinum.8 +++ b/ja_JP.eucJP/man/man8/vinum.8 @@ -1,2214 +1,2236 @@ .\" Hey, Emacs, edit this file in -*- nroff-fill -*- mode .\"- .\" Copyright (c) 1997, 1998 .\" Nan Yang Computer Services Limited. All rights reserved. .\" .\" This software is distributed under the so-called ``Berkeley .\" License'': .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by Nan Yang Computer .\" Services Limited. .\" 4. Neither the name of the Company nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" This software is provided ``as is'', and any express or implied .\" warranties, including, but not limited to, the implied warranties of .\" merchantability and fitness for a particular purpose are disclaimed. .\" In no event shall the company or contributors be liable for any .\" direct, indirect, incidental, special, exemplary, or consequential .\" damages (including, but not limited to, procurement of substitute .\" goods or services; loss of use, data, or profits; or business .\" interruption) however caused and on any theory of liability, whether .\" in contract, strict liability, or tort (including negligence or .\" otherwise) arising in any way out of the use of this software, even if .\" advised of the possibility of such damage. .\" -.\" %Id: vinum.8,v 1.5.2.4 1999/05/05 05:13:09 grog Exp % +.\" %Id: vinum.8,v 1.5.2.5 1999/05/10 08:28:05 grog Exp % .\" .\" jpman %Id: vinum.8,v 1.3 1999/01/05 15:15:53 horikawa Stab % .\" WORD: attach 結合 (する) .Dd 28 March 1999 .Dt vinum 8 .Sh 名称 .Nm vinum .Nd 論理ボリュームマネージャの制御プログラム .Sh 書式 .Nm .Op command .Op Fl options .Sh コマンド .Cd create Op Fl f Ar description-file .in +1i .Ar description-file の記述に従ってボリュームを作成します。 .in .\" XXX remove this .Cd attach Ar plex Ar volume .Op Nm rename .Cd attach Ar subdisk Ar plex Ar [offset] .Op Nm rename .in +1i プレックスをボリュームに、またはサブディスクをプレックスに結合します。 .in .\" XXX remove this .Cd debug .in +1i ボリュームマネージャをカーネルデバッガに移行させます。 .in .Cd debug .Ar flags .in +1i デバッグフラグを設定します。 .in .Cd detach .Op Ar plex | subdisk .in +1i 結合されていたボリュームやプレックスから、プレックスやサブディスクを分離します。 .in .Cd info .Op Fl v .in +1i ボリュームマネージャの状態を表示します。 .in .Cd init .Op Fl v .Op Fl w .Ar plex .in +1i .\" XXX 下位の全サブディスクに 0 を書き込んでそのプレックスを初期化します。 .in .Cd label .Ar volume .in +1i ボリュームラベルを作成します。 .in .Cd list .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume | plex | subdisk .in +1i 指定したオブジェクトの情報を表示します。 .in .Cd l .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume | plex | subdisk .in +1i 指定したオブジェクトの情報を表示します ( .Cd list コマンドの別形式)。 .in .Cd ld .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume .in +1i ドライブの情報を表示します。 .in .Cd ls .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op subdisk .in +1i サブディスクの情報を表示します。 .in .Cd lp .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op plex .in +1i プレックスの情報を表示します。 .in .Cd lv .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume .in +1i ボリュームの情報を表示します。 .in .Cd printconfig .Op Pa file .in +1i 現在の設定のコピーを .Pa file へ書き込みます。 .in .Cd makedev .in +1i .Ar /dev/vinum にデバイスノードを再作成します。 .in .Cd quit .in +1i 対話モード時に、 .Nm プログラムを終了します。通常 .Ar EOF 文字を入力することにより実現できます。 .in .Cd read .Ar disk Op disk... .in +1i 指定したディスクから .Nm の設定を読み出します。 .in .Cd rename Op Fl r .Ar [ drive | subdisk | plex | volume ] .Ar newname .in +1i 指定したオブジェクトの名前を変更します。 .ig .XXX .in .Cd replace .Ar [ subdisk | plex ] .Ar newobject .in +1i オブジェクトを同一の他のオブジェクトと入れ換えます。XXX まだ実装されていません。 .. .in .Cd resetconfig .in +1i すべての .Nm の設定をリセットします。 .in .Cd resetstats .Op Fl r .Op volume | plex | subdisk .in +1i 指定したオブジェクトの統計情報をリセットします。指定がない場合はすべての オブジェクトが対象です。 .in .Cd rm .Op Fl f .Op Fl r .Ar volume | plex | subdisk .in +1i オブジェクトを削除します。 .in .Cd saveconfig .in +1i .Nm の設定をディスクへ保存します。 .in .ig XXX .Cd set .Op Fl f .Ar state .Ar volume | plex | subdisk | disk .in +1i オブジェクトの状態を \fIstate\fP\| に設定します。 .in .. .Cd setdaemon .Op value .in +1i デーモンの設定を与えます。 .in .Cd start .in +1i 全 vinum ドライブから設定を読み込みます。 .in .Cd start .Op volume | plex | subdisk .in +1i システムがオブジェクトへアクセスできるようにします。 .in .Cd stop .Op Fl f .Op volume | plex | subdisk .in +1i オブジェクトへのアクセスを終了させます。 パラメータを指定しないと、 .Nm を停止させます。 .in .Sh 解説 .Nm は \fBVinum\fP\| 論理ボリュームマネージャと通信するための ユーティリティプログラムです。 ボリュームマネージャの詳細については .Xr vinum 4 を参照してください。 .Xr vinum 8 は対話形式と、単独のコマンドを実行する形式のいずれも実行可能になっています。 コマンドを伴わずに .Nm を起動すると対話形式になる一方、引数としてコマンドを指定するとそのコマンド だけを実行します。 対話モードでは、 .Nm はコマンドラインヒストリを保持します。 .Ss オプション .Nm のコマンドにはオプションを付加することができます。どのコマンドにも 下記オプションのどれでも指定することができますが、指定しても変化がない場合も あります。 その場合にはそのオプションは無視されます。例えば、 .Nm stop コマンドは .Fl v オプションと .Fl V オプションを無視します。 .Bl -hang .Nm Fl f .Fl f .if t (``force: 強制'') .if n ("force: 強制") オプションは安全性の確認を無効にします。細心の注意を払って 使用して下さい。 このオプションは緊急時にのみ使用するものです。例えば、 コマンド .Bd -unfilled -offset indent rm -f myvolume .Ed .Pp は .Ar myvolume がオープンされていたとしても削除します。以降、このボリュームに アクセスすると、ほぼ確実にパニックを起こします。 .It Fl -r .Fl r .if t (``recursive: 再帰的'') .if n ("recursive: 再帰的") オプションは表示系のコマンドで使い、 指示したオブジェクト だけでなく、下位のオブジェクトの情報も表示します。 例えば、 .Nm lv コマンドとともに使われる場合、 .Fl r オプションは対象のボリュームに属するプレックスとサブディスクの情報も表示します。 .It Fl s .Fl s .if t (``statistics: 統計'') .if n ("statistics: 統計") オプションは表示系のコマンドで統計情報を表示するために使います。 .It Fl v .Fl v .if t (``verbose: 冗長'') .if n ("verbose: 冗長") オプションは、 任意のコマンドにおいて、さらに詳細な情報を要求するために使用します。 .It Fl V The .Fl V .if t (``Very verbose: とても冗長'') .if n ("Very verbose: とても冗長") オプションは、 任意のコマンドにおいて、 .Fl v オプションが提供するものよりもさらに詳細な情報を要求するために使用します。 .It Fl w .Fl w .if t (``wait: 待ち'') .if n ("wait: 待ち") オプションは、 .Nm init のように通常はバックグラウンドで実行するコマンドの完了を、 .Nm に待たせます。 .El .Pp .Ss コマンドの詳細 .Pp .Nm コマンドは以下の機能を実行します。 .Bl -hang .It Nm attach Ar plex Ar volume .Op Nm rename .if n .sp -1v .if t .sp -.6v .It Nm attach Ar subdisk Ar plex Ar [offset] .Op Nm rename .sp .Nm .Ar attach は指定されたプレックスやサブディスクをそれぞれボリュームやプレックスに 組み込みます。サブディスクに ついては、プレックス中の始点 (オフセット) を指定することができます。 指定がない場合、 サブディスクは有効な最初の位置に結合されます。空でないボリュームにプレックスが 結合されると、 .Nm はそのプレックスを再統合します。 .Pp .Nm rename キーワードが指定されると、 .Nm はオブジェクトの (プレックスの場合には下位のサブディスクの) 名前を変更して デフォルトの .Nm 命名規則に合わせます。 .Pp サブディスク結合に際しては、いくつか考慮すべきことがあります: .Bl -bullet .It サブディスクの結合対象は、通常、コンカチネート化プレックスのみです。 .It ストライプ化プレックスおよび RAID-5 プレックスにおいて サブディスクが失われた場合 (例えばドライブの故障後など)、 当該サブディスクを置き換えられるのは同じ大きさのサブディスクだけです。 別のサブディスクを結合することは、現在許されていません。 .It コンカチネート化プレックスに対しては、 .Ar offset パラメータが、プレックスの先頭からのブロック単位のオフセットを指定します。 ストライプ化プレックスおよび RAID-5 プレックスに対しては、 本パラメータは、サブディスクの最初のブロックのオフセットを指定します。 別の表現をするなら、オフセットは、 サブディスクの数値指定による位置とストライプの大きさとの積になります。 例えば、ブロックの大きさが 256k のプレックスでは、 最初のサブディスクはオフセット 0 に、2 番目のオフセットは 256k に、 3 番目は 512k に、などとなります。 この計算では、RAID-5 プレックスのパリティブロックは無視されます。 .El .It Nm create Op Fl f Ar description-file .sp .Nm .Ar create はどのオブジェクトの作成にも使われます。相互の関連性が比較的複雑で .Nm オブジェクトの作成には潜在的に危険があることを考慮して、この機能には対話的な インタフェースはありません。 ファイル名を指定しないと、 .Nm は一時ファイルに対してエディタを起動します。 環境変数 .Ev EDITOR が設定されている場合、 .Nm はこのエディタを起動します。設定されていない場合のデフォルトは .Nm vi です。 詳細は後述の設定ファイルの節を参照して下さい。 .Pp .Nm の .Ar create 機能は加法的であることに注意してください: 複数回実行すると、名前付けしていない全オブジェクトのコピーを、 複数生成することになります。 .Pp 通常 .Nm create は既存の .Nm ドライブの名前を変更しません。これは、誤って消去してしまうのを避けるためです。 不要な .Nm ドライブを破棄する正しい方法は、 .Nm resetconfig コマンドで設定をリセットすることです。 しかし、起動できない .Nm ドライブ上に新規データを生成する必要がある場合があります。 この場合、 .Nm create Fl f を使用してください。 .It Nm debug .Pp .Nm .Ar debug はリモートカーネルデバッガに入るために使用します。これは .Nm が .Ar VINUMDEBUG オプション付きで作成されている場合にのみ実行可能です。 このオプションはカーネルデバッガから抜け出るまでオペレーティング システムの実行を停止させます。 リモートデバッグが設定されており、 カーネルデバッガへのリモートコネクションがないと、 デバッガから抜け出るためにはシステムをリセットしてリブート することが必要になります。 .It Nm debug .Ar flags .Pp 内部デバッグフラグのビットマスクを設定します。 本製品が改良されるにつれ、このビットマスクは警告無しに変更されるでしょう。 確認のために、ヘッダファイル .Pa sys/dev/vinumvar.h を見てください。 ビットマスクは次の値から構成されます: .Bl -hang .It DEBUG_ADDRESSES (1) .br リクエスト中のバッファ情報を表示します。 .It DEBUG_NUMOUTPUT (2) .br .Dv vp->v_numoutput の値を表示します。 .It DEBUG_RESID (4) .br .Fd complete_rqe においてデバッガに移行します。 .It DEBUG_LASTREQS (8) .br 最新のリクエストのリングバッファを保存します。 .It DEBUG_REVIVECONFLICT (16) .br 再生における衝突に関する情報を表示します。 .It DEBUG_EOFINFO (32) .br ストライププレックスで EOF を返すとき、内部状態の情報を表示します。 .It DEBUG_MEMFREE (64) .br 最後にメモリアロケータが解放したメモリ領域に関する循環リストを管理します。 .It DEBUG_REMOTEGDB (256) .br .Nm debug コマンドが発行されたときに、リモート .Ic gdb に移行します。 .El .It Nm detach Op Fl f .Ar plex .if n .sp -1v .if t .sp -.6v .It Nm detach Op Fl f .Ar subdisk .sp .Nm .Ar detach は指定されたプレックスやサブディスクを、 結合されているボリュームやプレックスから 分離します。分離するとボリュームのデータが欠ける可能性のある 場合、この操作は .Fl f オプションを指定しない限り実行されません。 オブジェクトが上位のオブジェクトに従った名前になっている場合 (例えば、プレックス vol1.p7 に結合されているサブディスク vol1.p7.s0 の場合)、 その名前は頭に .if t ``ex-'' .if n "ex-" がついたものに変更されます (例えば ex-vol1.p7.s0 に変更されます)。 その後の処理で必要であれば、その名前から頭の部分が外されます。 .Pp ストライプ化プレックスおよび RAID-5 プレックスにおいては、 .Nm detach はサブディスク数を減らしません。 その代わり、サブディスクには存在しないという印が付けられ、後で .Nm attach コマンドを使用して交換可能となります。 .It Nm info .br .Nm .Ar info は .Nm のメモリ使用に関する情報を表示します。これは主にデバッグのためのものです。 .Fl v オプションを付けると、使用中のメモリ領域についての詳細な情報を表示します。 .Pp .Fl V オプションを付けると、 .Nm ドライバが扱った最大 64 個までの最近の I/O リクエストに関する情報を、 .Ar info は表示します。 この情報は、デバッグフラグ 8 が設定されているときのみ収集されます。 書式は次のようになります: .Pp .Bd -literal vinum -> info -V Flags: 0x200 1 opens Total of 38 blocks malloced, total memory: 16460 Maximum allocs: 56, malloc table at 0xf0f72dbc Time Event Buf Dev Offset Bytes SD SDoff Doffset Goffset 14:40:00.637758 1VS Write 0xf2361f40 0x5b03 0x10 16384 14:40:00.639280 2LR Write 0xf2361f40 0x5b03 0x10 16384 14:40:00.639294 3RQ Read 0xf2361f40 0x427 0x104109 8192 19 0 0 0 14:40:00.639455 3RQ Read 0xf2361f40 0x417 0xd2109 8192 17 0 0 0 14:40:00.639529 3RQ Read 0xf2361f40 0x40f 0x6e109 8192 16 0 0 0 14:40:00.652978 4DN Read 0xf2361f40 0x427 0x104109 8192 19 0 0 0 14:40:00.667040 4DN Read 0xf2361f40 0x40f 0x6e109 8192 16 0 0 0 14:40:00.668556 4DN Read 0xf2361f40 0x417 0xd2109 8192 17 0 0 0 14:40:00.669777 6RP Write 0xf2361f40 0x427 0x104109 8192 19 0 0 0 14:40:00.685547 4DN Write 0xf2361f40 0x427 0x104109 8192 19 0 0 0 .Ed .Pp .Ar Buf フィールドは、ユーザバッファヘッダのアドレスを常に含みます。 ユーザリクエストに関連付けられるリクエスト (複数可) を識別するために 使用できますが、100% 信頼できるものというわけではありません: 理論的には、シーケンス中の 2 個のリクエストが同じバッファヘッダを使い得ますが、 これは一般的ではありません。 リクエストの先頭は、イベント .Ar 1VS で識別可能です。 前記の例では、複数のリクエストが単一のユーザリクエストに含まれています。 .Pp .Ar Event フィールドは、 リクエストチェーン中のイベントシーケンスに関連する情報を含みます。 .Ar 1 から .Ar 6 までの数字はイベントの大まかなシーケンスを示し、 2 文字の省略形は位置のニーモニックです。 .Bl -hang .It 1VS (vinum の strategy) .Fd vinumstrategy の入口にある、ユーザリクエストに関する情報を表示します。 デバイス番号は .Nm デバイスであり、オフセットと長さはユーザパラメータです。 本ニーモニックは、常にリクエストシーケンスの先頭になります。 .It 2LR (リクエスト発行) 関数 .Fd launch_requests において低レベル .Nm リクエストを発行する直前の、ユーザリクエストを表示します。 パラメータは .Ar 1VS の情報と同じはずです。 .Pp ここから後のリクエストでは、利用可能である場合、 .Ar Dev は関連付けられたディスクパーティションのデバイス番号であり、 .Ar Offset はパーティションの先頭からのオフセットであり、 .Ar SD は .Dv vinum_conf 中のサブディスクインデックスであり。 .Ar SDoff はサブディスクの先頭からのオフセットであり、 .Ar Doffset は関連付けられたデータリクエストのオフセットであり、 .Ar Goffset は関連付けられたグループリクエストのオフセットです。 .It 3RQ (リクエスト) 高レベルのリクエストを満たすために発行される、 いくつかありうる低レベル .Nm リクエストのうちのひとつを表示します。 この情報は、 .Fd launch_requests においても記録されます。 .It 4DN (完了) .Fd complete_rqe から呼ばれ、リクエストの完了を表示します。 この完了は、ステージ .Ar 4DN において .Fd launch_requests から発行されたリクエストか、またはステージ .Ar 5RD か .Ar 6RP の .Fd complete_raid5_write から発行されたリクエストにマッチするはずです。 .It 5RD (RAID-5 データ) .Fd complete_raid5_write から呼ばれ、 パリティ計算後に RAID-5 データストライプへ書き込まれたデータを表現します。 .It 6RP (RAID-5 パリティ) .Fd complete_raid5_write から呼ばれ、 パリティ計算後に RAID-5 パリティストライプへ書き込まれたデータを表現します。 .El .\" XXX .It Nm init Op Fl w .Ar plex .Pp .Nm .Ar init は指定したプレックスのすべてのサブディスクに 0 を書き込んでプレックスを初期化 します。これはプレックス中のデータに矛盾のないことを確実にする唯一の方法です。 RAID-5 プレックスの使用前には、この初期化が必要です。 他の新規プレックスに対しても、この初期化を推奨します。 .Nm はプレックス中のすべてのサブディスクを並行して初期化します。 この操作には長い時間が かかるため、通常バックグラウンドで実行されます。 このコマンドの完了を待ちたい場合、 .Fl w (待ち) オプションを使用してください。 .Nm は初期化が完了するとコンソールメッセージを出力します。 .It Nm label .Ar volume .Pp .Nm label コマンドは、ボリュームに .Ar ufs 形式のボリュームラベルを書き込みます。これは適切に .Ar disklabel を呼び出すことに対しての、単純な代替方法です。 いくつかの .Ar ufs コマンドはラベルを入手するために正規の .Ar ioctl コールを使わず、依然としてラベルを捜してディスクの読み込みを行う ため、このコマンドは必要になります。 .Nm はボリュームのデータとは別にボリュームラベルを保持しているため、この コマンドは .Ar newfs 用には必要ありません。 このコマンドの価値は低下しています。 .Pp .It Nm list .Op Fl r .Op Fl V .Op volume | plex | subdisk .if n .sp -1v .if t .sp -.6v .It Nm l .Op Fl r .Op Fl V .Op volume | plex | subdisk .if n .sp -1v .if t .sp -.6v .It Nm ld .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume .if n .sp -1v .if t .sp -.6v .It Nm ls .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op subdisk .if n .sp -1v .if t .sp -.6v .It Nm lp .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op plex .if n .sp -1v .if t .sp -.6v .It Nm lv .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op volume .Pp .Ar list は指定したオブジェクトの情報を表示するために使われます。引数が省略されると .Nm が認識しているすべてのオブジェクトについての情報が表示されます。 .Ar l コマンドは .Ar list と同じものです。 .Pp .Fl r オプションはボリュームとプレックスに関連します。 指定されると、そのオブジェクト下位のサブディスクと (ボリュームに対しては) プレックスの情報を再帰的に表示します。 .Ar lv , .Ar lp , .Ar ls , .Ar ld のコマンドは、それぞれボリューム、プレックス、サブディスク、そしてドライブの 情報だけを表示します。これはパラメータを指定しないで使う場合に特に有用です。 .Pp .Fl s オプションで .Nm は装置の統計情報を出力するようになり、 .Op Fl v (verbose: 饒舌な) オプションはいくらかの付加情報を出力させ、 そして .Op Fl V は数多くの付加情報を出力させます。 .It Nm makedev .br .Nm makedev コマンドは、ディレクトリ /dev/vinum を除去した上で、 現在の設定を反映するようなデバイスノードと共にこのディレクトリを再作成します。 本コマンドは、通常の場合に使用されることを意図していません。 非常時にのみ使用するために提供しています。 .Pp .It Nm quit 対話モードで実行中のときに、 .Nm プログラムを終了します。通常は、文字 .Ar EOF を入力することで実現できます。 .It Nm printconfig Op Pa file 現在の設定のコピーを、 .Nm 設定を再生成可能な書式で、 .Pa file に書き込みます。 ディスク上に保存された設定とは違い、ドライブの定義を含みます。 .Pa file を指定しないと、 .Nm は一覧を .Pa stdout へ書き込みます。 .It Nm read .Ar disk Op disk... .Pp .Nm read コマンドは、指定したディスクを走査し、作成済の設定情報を含む .Nm パーティションを探します。 そして、最近更新されたものから過去に更新されたものの順番で、 設定を読み込みます。 .Nm は最新のすべての設定情報を各ディスクパーティションに保持しています。 このコマンドの パラメータとして、設定の中の全スライスを指定する必要があります。 .Pp .Nm read コマンドは、他の .Nm パーティションを持つシステム上で、 .Nm 設定を選択的にロードすることを意図しています。 システム上の全パーティションを起動したい場合、 .Nm start コマンドを使用する方が簡単です。 .Pp 本コマンド実行時に .Nm がエラーになると、 ディスク上のコピーが壊れないようにするため、自動的な設定更新を無効にします。 これは、ディスク上の設定が、設定エラーを示す (例えば、有効な空間指定を持たないサブディスク) 場合にも同様です。 再度更新をオンにするには、 .Nm setdaemon と .Nm saveconfig のコマンドを使用してください。 デーモンオプションマスクのビット 4 をリセットして、 設定保存を再度有効にしてください。 .It Nm rename .Op Fl r .Ar [ drive | subdisk | plex | volume ] .Ar newname .Pp 指定したオブジェクトの名前を変更します。 .Fl r オプションが指定されると、下位のオブジェクトがデフォルトの規則に従って命名され ます。プレックスの名前はボリューム名に .p\f(BInumber\fP を付加して作られ、 サブディスクの名前はプレックス名に .s\f(BInumber\fP を付加して作られます。 .It Nm replace .Ar [ subdisk | plex ] .Ar newobject .Pp 指定したオブジェクトを同一の他のオブジェクトで置き換えます。このコマンドはまだ 実装されていません。 .It Nm resetconfig .Pp .Nm resetconfig コマンドはシステム内の .Nm 設定を完全に削除します。設定を完全に消去したい場合にだけ使って下さい。 .Nm は確認を求めます。NO FUTURE (前途なし) という語句を以下の通りに入力する必要が あります。 .Bd -unfilled -offset indent # \f(CBvinum resetconfig\f(CW 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 -> \f(BINO FUTURE\fP Vinum configuration obliterated (訳注: ここから上記テキストの翻訳です) 警告! このコマンドはあなたの vinum 設定を完全に消し去ります。 全データは失われます。本当にこれを実行したい場合は、語句 NO FUTURE を入力して下さい。 入力してください -> \f(BINO FUTURE\fP vinum の設定は削除されました。 (訳注: ここまで上記テキストの翻訳です) .Ed .ft R .Pp メッセージが示すように、どたん場のコマンドです。 既存の設定をもう見たくもないとき以外は、このコマンドを使わないでください。 .It Nm resetstats .Op Fl r .Op volume | plex | subdisk .Pp .Nm は各オブジェクトについて多数の統計カウンタを保持しています。詳細は ヘッダファイル .Fi vinumvar.h を参照して下さい。 .\" XXX 仕上がったらここに入れる これらのカウンタをリセットするためには .Nm resetstats コマンドを使って下さい。 .Fl r オプションも共に指定すると、 .Nm は下位のオブジェクトのカウンタもリセットします。 .It Nm rm .Op Fl f .Op Fl r .Ar volume | plex | subdisk .Pp .Nm rm はオブジェクトを .Nm 設定から消去します。ひとたびオブジェクトが消去されるとそれを復旧する方法は ありません。通常 .Nm はオブジェクトを消去する前に数多くの一貫性確認を行います。 .Fl f オプションを指定すると、 .Nm はこの確認を省略し、オブジェクトを無条件に消去します。このオプションは細心の 注意を払って使用して下さい。ボリューム上のすべてのデータを失うことも あり得ます。 .Pp 通常、 .Nm は下位にプレックスを持つボリュームや、下位にサブディスクを持つプレックスを 消去することを拒否します。 .Fl f フラグを指定すると、 .Nm は無条件にオブジェクトを消去します。または .Fl r (recursive: 再帰的) フラグを使うことで、同様に下位のオブジェクトを 消去することができます。 .Fl r フラグを付けてボリュームを消去すると、プレックスとそれに属するサブディスクも 消去します。 .It Nm saveconfig .Pp 現在の設定をディスクに保存します。 本コマンドの第一義は整備用です。 例えば、起動時にエラーが発生した場合、更新は無効化されます。 再度有効化しても、設定は自動的にはディスクへ保存されません。 このコマンドを使用して設定を保存してください。 .ig .It Nm set .Op Fl f .Ar state .Ar volume | plex | subdisk | disk .Nm set は指定したオブジェクトに、妥当な状態 (下記「オブジェクト状態」参照) のひとつを セットします。 通常、 .Nm は変更を加える前に非常に多くの一貫性の調査を実行します。 .Fl f オプションを指定すると、 .Nm はこの調査を省略し、無条件に変更を行います。このオプションは大いに注意して 使って下さい。ボリューム上のすべてのデータを失うこともあり得ます。 .\"XXX .Nm このコマンドはまだ実装されていません。 .. .It Nm setdaemon .Op value .Pp .Nm setdaemon は .Nm デーモンの変数ビットマスクを設定します。 本コマンドは一時的なものであり、将来置き換えられます。 現在、ビットマスクにはビット 1 (全アクションを syslog へ記録する) と ビット 4 (設定を更新しない) があります。 オプションビット 4 はエラー回復時に有用かもしれません。 .It Nm start .Op volume | plex | subdisk .Pp .Nm start は 1 つまたはそれ以上の .Nm オブジェクトを起動します ( .Ar up 状態に移行させます)。 .Pp オブジェクト名を指定しないと、システムが .Nm ドライブであると知っているディスクを、 .Nm は走査します。その後、 .Nm read コマンドのところに書いてあるように、設定を読み込みます。 .Nm ドライブにはそのドライブ中のデータについてのすべての情報を持つヘッダが 入っており、その情報としてはプレックスとボリュームを表現するために必要な 他のドライブの名前を含んでいます。 .Pp 本コマンド実行時に .Nm がエラーになると、 ディスク上のコピーが壊れないようにするため、自動的な設定更新を無効にします。 これは、ディスク上の設定が、設定エラーを示す (例えば、有効な空間指定を持たないサブディスク) 場合にも同様です。 再度更新をオンにするには、 .Nm setdaemon と .Nm saveconfig のコマンドを使用してください。 デーモンオプションマスクのビット 4 をリセットして、 設定保存を再度有効にしてください。 .Pp オブジェクト名が指定されると、 .Nm はそれらを起動します。 通常、この操作はサブディスクに対してのみ行います。 動作はオブジェクトの現在の状態に依存します: .Bl -bullet .It オブジェクトが既に .Ar up 状態の場合、 .Nm はなにもしません。 .It オブジェクトがサブディスクであり、 .Ar down または .Ar reborn の状態の場合、 .Nm は .Ar up 状態に変更します。 .It オブジェクトがサブディスクであり、 .Ar empty 状態の場合、変更はサブディスクに依存します。 サブディスクがプレックスの一部であり このプレックスが他のプレックスを含むボリュームの一部である場合、 .Nm はサブディスクを .Ar reviving 状態にし、データをボリュームからコピーしようとします。 操作完了時に、サブディスクは .Ar up 状態に設定されます。 サブディスクがプレックスの一部であり このプレックスが他のプレックスを含まないボリュームの一部である場合、 またはサブディスクがプレックスの一部ではない場合、 .Nm は即時にサブディスクを .Ar up 状態にします。 .It オブジェクトがサブディスクであり、 .Ar reviving 状態である場合、 .Nm は .Ar revive 操作をオフラインにて継続します。 操作完了時に、サブディスクは .Ar up 状態に設定されます。 .El .Pp サブディスクが .Ar up 状態になると、 .Nm は自動的に、 サブディスクが属す可能性のあるプレックスとボリュームの状態をチェックし、 これらの状態を適切に更新します。 .Pp オブジェクトがボリュームまたはプレックスの場合、 .Nm start は現在のところ効果がありません: 下位のサブディスクの (ボリュームの場合にはこれに加えてプレックスの) 状態を チェックし、これに従ってオブジェクトの状態を設定します。 将来のバージョンでは、本操作はサブディスクに影響を与えるようになります。 .Pp マルチプレックスボリュームの中の 1 つのプレックスを起動するには、 ボリューム中の他のプレックスからデータをコピーする必要があります。 これにはしばしば長い時間がかかるため、バックグラウンドで実行されます。 .It Nm stop .Op Fl f .Op volume | plex | subdisk .Pp パラメータを指定しないと、 .Nm stop は .Nm kld を削除し、 .Xr vinum 8 を停止します。 活動状態のオブジェクトが存在しない場合のみ、行うことが可能です。 特に、 .Fl f フラグはこの要求に優先しません。 このコマンドが動作するのは、 .Nm が kld としてロードされている場合のみです。 静的に構成されたドライバをアンロードすることはできないからです。 .Nm が静的に構成されている場合、 .Nm .Nm stop は失敗します。 .Pp オブジェクト名が指定されると、 .Nm stop はそのオブジェクトへのアクセスを無効化します。 オブジェクトに下位オブジェクトがある場合、 それらのサブオブジェクトは既に非活動状態 (stop また error) となっているか、 .Fl r と .Fl f のフラグが指定されていることが必要です。 このコマンドは、オブジェクトを設定から取り除きません。 .Nm start コマンドの後で再度アクセスができるようになります。 .Pp デフォルトでは .Nm は動作中のオブジェクトは停止しません。例えば、動作中のボリュームに結合 されているプレックスは停止できないし、オープン中のボリュームは停止できません。 .Fl f オプションは .Nm にこの確認を省略して無条件に削除するよう指示します。このオプションは 大いに注意し、よく理解した上で使って下さい。もし間違って使うとひどい データ破壊を起こすことがあります。 .El .Ss 設定ファイル .Nm では、 .Nm create コマンドに渡すすべての引数は設定ファイルに入っている必要があります。 設定ファイルのエントリは、ボリュームやプレックスやサブディスクを定義します。 エントリは 1 行に 1 つということ以外には決まった書式はありません。 .Pp 設定ファイルのいくつかの引数では、大きさ (長さ、ストライプ長) を指定します。 これらの長さは、バイト単位でも、512バイトのセクタ数 (\f(CWs\fRを後ろにつける) でも、キロバイト単位 (\f(CWk\fRをつける) でも、メガバイト単位(\f(CWm\fRを つける)でも、またはギガバイト単位 (\f(CWg\fRをつける) でも指定することが できます。これらの数はそれぞれ 2**10、2**20、2**30を表しています。例えば、 \f(CW16777216\fR バイトという値は \f(CW16m\fR とも \f(CW16384k\fR とも \f(CW32768b\fR とも記述することができます。 .Pp 互換性のために、 文字 \f(CWb\fP (ブロック) を \f(CWs\fP (セクタ) と同じものとして受け付けます。 ブロックサイズは文脈に強く依存しますので、この短縮形の価値は低下しています。 .Pp 設定ファイルには以下のエントリを記述することができます。 .Pp .Bl -hang -width 4n +.It Nm drive Ar name option +.Pp +ドライブを定義します。オプションは次のようになっている必要があります: +.Pp +.Bl -hang -width 18n +.It Nm device Ar devicename +ドライブが乗るデバイスを指定します。 +.Ar devicename +は、例えば +.Pa /dev/da1e +や +.Pa /dev/wd3h +といったディスク互換パーティションである必要があり、タイプ +.Nm vinum +である必要があります。 +.Nm c +パーティションを使用してはなりません。 +これはディスク全体のために予約されており、タイプ +.Nm unused +であるべきだからです。 +現在、 +例えば +.Pa /dev/da0s1 +や +.Pa /dev/da0s1e +といった他のディスクデバイス上にドライブを作成可能ですが、 +これらのドライブはリブート後に起動できません。 +.El .It Nm volume .Ar name .Op options .Pp .Ar name という名前でボリュームを定義します。 .Pp オプションには次のものがあります。 .Pp .Bl -hang -width 18n .It Nm plex Ar plexname 指定したプレックスをボリュームに追加します。 .Ar plexname が .Ar * として指定されると、 .Nm は設定ファイル中のボリューム定義の後で、次の妥当なエントリとなり得るプレックス の定義を捜します。 .It Nm readpol Ar policy ボリュームの .Ar read policy (読み込み方針) を定義します。 .Ar policy は .Nm round か .Nm prefer Ar plexname のどちらかです。 .Nm は読み込み要求を、ただ 1 つのプレックスによって満たします。 .Ar round 読み込み方針は、読み込みを別々のプレックスから \fIラウンドロビン\fR\| 方式で 行うように指定します。 .Ar prefer 読み込み方針では、指定したプレックスから毎回読み込みを行います。 .It Nm setupstate .Pp マルチプレックスボリュームを作成する際に、すべてのプレックスの内容に一貫性が あると仮定します。通常こうなることはないため、正式には .Nm init コマンドを使って、最初に一貫性のある状態にする必要があります。しかし ストライプ化プレックスとコンカチネート化プレックスの場合には、普通は一貫性が ないままでも問題にはなりません。ボリュームをファイルシステムや スワップパーティションとして使う場合にはディスク上の以前の内容は どうでもよいため、それは無視されます。この危険を受け入れる場合には、 このキーワードを使って下さい。 設定ファイル中でボリュームの直後で定義されるプレックスに対してのみ 適用されます。 後でプレックスをボリュームに追加する場合には、 これらのプレックスを統合する必要があります。 .Pp RAID-5 プレックスには .Nm init を使うことが \fI必要\fP\| なことに注意して下さい。さもないと 1 つのサブディスクに障害が起きた時、大きくデータが破壊されます。 .fi .El .It Nm plex Op options .Pp プレックスを定義します。ボリュームとは違い、名前は不要です。 オプションには次のものを指定可能です: .Pp .Bl -hang -width 18n .It Nm name Ar plexname プレックスの名前を指定します。プレックスやサブディスクに名前をつける場合には .Ar name キーワードが必要になることに注意して下さい。 .sp .It Nm org Ar organization Op stripesize .Pp プレックスの編成を指定します。 .Ar organization は .Ar concat か .Ar striped か .Ar raid5 のいずれかです。 .Ar striped と .Ar raid5 のプレックスに対しては .Ar stripesize 引数を指定する必要がありますが、 .Ar concat のプレックスに対しては省略する必要があります。 .Ar striped タイプについては各ストライプの幅を指定します。 .Ar raid5 については、グループの大きさを指定します。 グループとはプレックスの一部分であり、 同じサブディスクに入っているすべてのデータのパリティが入っています。 それはプレックスの大きさの約数である必要があり (つまり、プレックスの大きさをストライプの大きさで割ったものは 整数である必要があり)、 ディスクセクタ長 (512バイト) の倍数である必要があります。 .sp 最適な性能のためには、ストライプの大きさは少なくとも 128kB であるべきです。 これより小さくすると、 個々のリクエストが複数のディスクに対して割り当てられることにより、 I/O のアクティビティが非常に増加します。 本マッピングによる並行転送数増加に起因する性能向上は、 レイテンシ増加に起因する性能劣化を引き起しません。 ストライプの大きさの目安は、256 kB から 512 kB の間です。 .Pp ストライプ化プレックスは最低 2 つのサブディスクを持つ必要がありますし (そうでないとコンカチネート化プレックスになります)、 それぞれは同じ大きさである必要があります。 RAID-5 プレックスは最低 3 つのサブディスクを持つ必要があり、 それぞれは同じ大きさである必要があります。 実際には RAID-5 プレックスは最低 5 つのサブディスクから構成されるべきです。 .Pp .It Nm volume Ar volume プレックスを、指定したボリュームに追加します。 .Nm volume キーワードが指定されないと、プレックスは設定ファイル中の最後に記述された ボリュームに追加されます。 .sp .It Nm sd Ar sdname Ar offset 指定したサブディスクをプレックスの .Ar offset の位置に追加します。 .br .fi .El .It Nm subdisk Op options .Pp サブディスクを定義します。オプションには次のものを指定可能です: .Pp .Bl -hang -width 18n .nf .sp .It Nm name Ar name サブディスクの名前を指定します。これは必ずしも指定する必要は ありません\(em 上記の「オブジェクトの命名」を参照してください。 サブディスクに名前をつける場合には .Ar name キーワードを指定する必要があることに注意して下さい。 .sp .It Nm plexoffset Ar offset プレックス内のサブディスクの始点を指定します。指定がないと、 .Nm はすでにサブディスクがあればその直後の領域を割り当て、なければ プレックスの先頭から割り当てます。 .sp .It Nm driveoffset Ar offset ドライブ内のサブディスクの始点を指定します。指定がないと、 .Nm はドライブ中で最初の .Ar length バイト連続の空き領域を割り当てます。 .sp .It Nm length Ar length サブディスクの大きさを指定します。このキーワードは必須です。 デフォルト値はありません。 値 0 を指定すると、 .if t ``ドライブ上で最大限利用可能な連続空き領域を使用'' .if n "ドライブ上で最大限利用可能な連続空き領域を使用" という意味になります。 ドライブが空の場合、サブディスクとしてドライブ全体を使用することを意味します。 .Nm length は .Nm len と短縮することもできます。 .sp .It Nm plex Ar plex サブディスクが属すプレックスを指定します。デフォルトでは、サブディスクは 最後に記述されたプレックスに属します。 .sp .It Nm drive Ar drive サブディスクが乗るドライブを指定します。デフォルトでは最後に記述された ドライブ上に位置します。 .br .fi .El -.It Nm drive Ar name Op options -.Pp -ドライブを定義します。オプションには次のものを指定可能です: -.Pp -.Bl -hang -width 18n -.It Nm device Ar devicename -ドライブが乗るデバイスを指定します。 -.El .El .Sh 設定ファイル例 .Bd -literal # 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 512b sd length 64m drive drive2 sd length 64m drive drive4 volume stripe plex org striped 512b 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 512b 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 64k sd length 1000m drive drive2 sd length 1000m drive drive4 plex org raid5 32k 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 .Ed .Ss ドライブレイアウト上の考慮点 現在、 .Nm ドライブは BSD ディスクパーティションです。それは ファイルシステムの上書きを避けるために .Ar vinum タイプである必要があります。 互換性のために、現在の .Nm はパーティションタイプ .Ar unused を受け付けますが、次のリリースではこの種類のパーティションは許しません。 タイプ .Ar unused であるパーティションから設定を読み出すと、 .Nm は警告メッセージを表示します。 .Nm disklabel .Ar -e を使用して、パーティションタイプ定義を編集してください。 次の表示は、 .Nm disklabel が示す典型的なパーティションレイアウトです: .Bd -literal 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*) .Ed .sp この例では、パーティション .Nm g を .Nm パーティションとして使用可能です。パーティション .Nm a , .Nm e , .Nm f は、 .Nm UFS ファイルシステムまたは .Nm ccd パーティションとして使用可能です。パーティション .Nm b はスワップパーティションであり、パーティション .Nm c はディスク全体を表現するため他の用途に使用できません。 .Pp .Nm は各パーティションの先頭から 265 セクタを設定情報に使用するため、 サブディスクの最大の大きさはドライブよりも 265 セクタ小さくなります。 .Sh ログファイル .Nm はログファイルを管理します。 ログファイルは、デフォルトでは .Pa /var/tmp/vinum.history であり、 .Nm vinum に対して発行したコマンドの履歴を保持します。 環境変数 .Ev VINUM_HISTORY をファイルの名前に設定することにより、 このファイルの名前をオーバライド可能です。 .Pp ログファイル中のメッセージの前には日付が付きます。 デフォルトの書式は .Li %e %b %Y %H:%M:%S です。書式の文字列に関するさらなる詳細については .Xr strftime 3 を参照してください。 これは環境変数 .Ev VINUM_DATEFORMAT でオーバライド可能です。 .Sh VINUM 設定法 本節では、 .Nm システムの実装方法に関する、現実的なアドバイスを行います。 .Ss データを何処に置くか まず決定が必要な選択は、データを何処に置くかです。 .Nm 専用のディスクパーティションが必要です。 -前述した、ドライブレイアウト上の考慮点にある使用例を参照してください。 -.Xr disklabel 8 -がパーティションタイプ -.Nm -を理解しないバージョンである場合を除き、パーティションタイプ -.Nm -を選択してください。 -.Xr disklabel 8 -が理解しない場合には、これを更新するまで、パーティションタイプ +これらは、デバイスやパーティション +.Nm c +やスライスではなく、互換パーティションであるべきでです。 +例えば、適切な名前とは、 +.Pa /dev/da0e +や +.Pa /dev/wd3a +です。 +不適切な名前とは、パーティションではなくデバイスを表現する +.Pa /dev/da0 , +.Pa /dev/da0s1 +や、ディスク全体を表現しタイプ .Nm unused -を使用する必要があります。 -真のパーティション名 (例えば -.Pa /dev/da0s1g ) -ではなく、互換パーティション名 (例えば -.Pa /dev/da0g ) -を使用してください。 -現在のところ、 -.Nm start -コマンドには互換パーティションのみを +であるべき +.Pa /dev/wd1c +や、互換パーティションではない +.Pa /dev/da3s0e +です。 .Nm -は使用しますので、問題を避けることが可能となっています。 +は現在これらの名前のドライブの作成を許しますが、 +.Nm start +コマンドはこのようなドライブを発見しません。 +前述した、ドライブレイアウト上の考慮点にある使用例を参照してください。 .Ss ボリュームのデザイン .Nm ボリュームの設定方法は、あなたの意図に依存します。 次のように多くの可能性があります: .Bl -enum .It 多くの小さなディスクを結合して、 適切な大きさのファイルシステムを作成したいと考えるかもしれません。 例えば、小さなディスクを 5 個持っていて、 全空間を単一ボリュームとして使用したい場合、次のような設定ファイルを書きます: .Bd -literal -offset 4n 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 .Ed .Pp この場合、サブディスクの長さを 0 と指定します。 これは、 .if t ``ドライブ上にある空き空間のうち、最大領域を使用する'' .if n "ドライブ上にある空き空間のうち、最大領域を使用する" ことを意味します。 指定するサブディスクが、ドライブ上の唯一のサブディスクである場合、 このサブディスクは使用可能な空間全体を使用します。 .It ディスク故障に対する追加の回復力 (レジリエンス; resilience) を .Nm に与えたい場合を考えます。 選択肢としては、 .if t ``ミラーリング'' .if n "ミラーリング" とも呼ばれる RAID-1 か、 .if t ``パリティ'' .if n "パリティ" とも呼ばれる RAID-5 があります。 .Pp ミラーリングの設定のためには、 単一ボリュームの中に複数のプレックスを作成する必要があります。 例えば、 2 GB のミラー化ボリュームを作成するには、 次のような設定ファイルを作成します: .Bd -literal -offset 4n 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 .Ed .Pp ミラー化ドライブを作成するときには、 各プレックスからのデータが、 違う物理ディスク上にあることを保証することが重要です。 これにより、単一ドライブ故障においても、 .Nm はボリュームの完全なアドレス空間にアクセス可能となります。 各プレックスが、 完全なボリュームと同じだけのデータを必要とすることに注意してください: この例では、ボリュームは 2 GB の大きさですが、各プレックス (と各サブディスク) は 2 GB を必要としますので、全体のディスクストレージ要求は 4 GB となります。 .Pp RAID-5 の設定をするには、タイプ .Ar raid5 の単一プレックスを作成します。 例えば、回復力を持つ 2 GB に相当するボリュームを作成するには、 次のような設定ファイルを使用します: .Bd -literal -offset 4n 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 512k 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 .Ed .Pp RAID-5 プレックスは、最低 3 個のサブディスクを必要とします。 これらのうち 1 個には、パリティ情報を格納するので、 データストレージとしては使用しません。 より多くのディスクを使用すると、 より多くの割合のディスクストレージを、 データストレージとして使用可能となります。 この例では、総ストレージ使用量は 2.5 GB です。 これに対し、ミラー設定での総ストレージ使用量は 4 GB です。 最小の 3 個のディスクだけを使用する場合、 情報格納のために次のように 3 GB を必要とします: .Bd -literal -offset 4n drive d1 device /dev/da2e drive d2 device /dev/da3e drive d3 device /dev/da4e volume raid plex org raid5 512k sd length 1g drive d1 sd length 1g drive d2 sd length 1g drive d3 .Ed .Pp ミラー化ドライブを作成するときには、 各サブディスクからのデータが、 違う物理ディスク上にあることを保証することが重要です。 これにより、単一ドライブ故障においても、 .Nm はボリュームの完全なアドレス空間にアクセス可能となります。 .It また、 .Nm の設定により、 ファイルシステムへのアクセスの並行性を増したいと考えるかもしれません。 多くの場合、単一のファイルシステムへのアクセスは、 ディスク速度により制限されます。 ボリュームを複数のディスクに分散することにより、 複数アクセス環境でのスループットを増すことが可能です。 この技術は、単一アクセス環境では、 ほとんど効果がないかまったく効果がありません。 .Nm は .if t ``ストライピング'' .if n "ストライピング" または RAID-0 とも呼ばれる技術を使用し、アクセスの並行性を増します。 RAID-0 という名称は誤解を生じさせるものです: なぜなら、ストライピングは冗長性も更なる信頼性も提供しないからです。 実際、信頼性は低下します。 なぜなら、単一ディスクの故障はボリュームを使用不可とし、 多くのディスクを使うほどこれらのうち 1 個が故障する確率は増加するからです。 .Pp ストライピングの実装のためには、 .Ar striped (ストライプ化) プレックスを使用します: .Bd -literal -offset 4n 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 512k sd length 512m drive d1 sd length 512m drive d2 sd length 512m drive d3 sd length 512m drive d4 .Ed .Pp ストライプ化プレックスの最低サブディスク数は 2 個です。 多くのディスクを使用するほど、性能が向上します。 .It 両方の最良点を得ることにより、回復力と性能の両方を得ることを考えます。 これは、RAID-10 (RAID-1 と RAID-0 の組み合わせ) と呼ばれることがあります。 この名称もまた誤解を生じさせるものです。 .Nm では、次のような設定ファイルを使用可能です: .Bd -literal -offset 4n 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 512k sd length 512m drive d1 sd length 512m drive d2 sd length 512m drive d3 sd length 512m drive d4 plex org striped 512k sd length 512m drive d4 sd length 512m drive d3 sd length 512m drive d2 sd length 512m drive d1 .Ed .Pp ここでは、プレックスはストライプ化され、性能を向上しています。 そして、このようなプレックスが 2 個あり、回復力を向上しています。 この例で、2 番目のプレックスのサブディスクの順番が、 1 番目のプレックスの逆になっていることに注意してください。 これは性能のためであり、後で議論します。 .El .Ss ボリュームの作成 ひとたび設定ファイルを作成した後は、 .Nm を起動し、ボリュームを作成します。 この例では、設定ファイルは .Pa configfile です: .Bd -literal # 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 .Ed .Pp .Fl v フラグは、設定に従ってファイルをリストするよう、 .Nm に指示します。その後、 .Nm list Fl v コマンドと同じ書式で、現在の設定をリストします。 .Ss より多くのボリュームを作成する ひとたび .Nm ボリュームを作成した後は、 .Nm はこれらの情報を内部の設定ファイルにて管理します。 再度作成する必要はありません。 特に、 .Nm create コマンドを再実行すると、追加のオブジェクトを作ることになります: .Bd -literal .if t .ps -2 # 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 .if t .ps .Ed .Pp この例では (今回は .Fl f フラグを付けています)、 .Nm create の再実行により 4 個の新規プレックスを作成し、 それぞれが新規サブディスクを持ちます。 他のボリュームを追加したい場合、これらのための新規設定ファイルを作成します。 .Nm が既に知っているドライブを参照する必要はありません。 例えば、ボリューム .Pa raid を 4 個のディスク .Pa /dev/da1e , .Pa /dev/da2e , .Pa /dev/da3e , .Pa /dev/da4e 上に作成するには、他の 2 個についてのみ記述するだけで良いです: .Bd -literal drive d3 device /dev/da1e drive d4 device /dev/da4e volume raid plex org raid5 512k sd size 2g drive d1 sd size 2g drive d2 sd size 2g drive d3 sd size 2g drive d4 .Ed .Pp この設定ファイルでは、次のようになります: .Bd -literal # 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: 512 kB Size: 2048 MB S raid.p0.s2 State: empty PO: 1024 kB Size: 2048 MB S raid.p0.s3 State: empty PO: 1536 kB Size: 2048 MB .Ed .Pp RAID-5 プレックスの大きさに注意してください: 6 GB しかありませんが、 これを構成するためにディスク空間を 8 GB 使用しています。 これは、サブディスク 1 個分相当をパリティデータ格納に使用しているからです。 .Ss Vinum の再起動 システムのリブート時に、 .Nm start コマンドで .Nm を起動します: .Bd -literal # vinum start .Ed .Pp これにより、システム中の全 .Nm ドライブが起動します。 なんらかの理由で一部のドライブのみを起動したい場合、 .Nm read コマンドを使用してください。 .Ss 性能関連 最高性能の RAID アレイ設定に関する、多くの誤った考えが存在しています。 特に、ほとんどのシステムで使用しているストライプの大きさは、小さ過ぎます。 以降の議論は、 .Nm vinum だけでなく、全 RAID システムにあてはまります。 .Pp FreeBSD のブロック I/O システムは、.5 kB から 60 kB までの要求を発行します; .\" mix = workload mix ? 典型的なミックスでは、ほぼ 8 kB です。 どんなストライピングシステムにおいても、 ある要求が 2 個の物理要求に分割されることを避けることはできませんし、 より悪くするならばより多くに分割されてしまいます。 これにより、甚大な性能劣化となります: ディスクあたりの転送時間の削減は、 より大きなオーダで増加するレイテンシによって相殺されてしまいます。 .Pp 最近のディスクの大きさと FreeBSD のブロック I/O システムでは、 ストライプの大きさを 256 kB から 512 kB にすると、 適度に少数な要求に分割されることを期待できます; 正しい RAID の実装では、 大きなディスクでのストライプの大きさを 2 または 4 MB に増さない 明確な理由はありません。 .Pp 複数アクセスシステムでの転送のインパクトを考えるためのもっとも容易な方法は、 潜在的なボトルネック、すなわちディスクサブシステムの観点から見ることです: つまり、転送に要するディスク時間の総計はいくらか?です。 ほとんどすべてがキャッシュされているので、 要求と完了との時間的な関係はそれほど重要ではありません: 重要なパラメータは、要求がディスクを活動状態にする総時間であり、 この間ディスクは他の転送ができなくなります。 この結果、転送が同時に発生しても違う時に発生しても、 実際には問題とはなりません。 実際的には、我々が見ている時間は、レイテンシの総和 (位置決定時間と回転遅延、 言い替えるとデータがディスクヘッド下に来るまでの時間) と総転送時間です。 同じ速度のディスクへの転送においては、 転送時間は転送の大きさの合計のみに依存します。 .Pp 24 kB の典型的なニュースの記事やウェブページを考えると、 これは 1 回の I/O で読み込めます。 ディスクが転送レート 6 MB/s で平均位置決定時間 8 ms であり、 ファイルシステムを 4 kB ブロックであるとします。 24 kB ですから、断片化を考慮する必要はなく、 ファイルは 4 kB 境界から開始します。 必要な転送回数はブロック開始位置に依存します: 式は (S + F - 1) / S となり、 S はファイルシステムブロック数でのストライプの大きさ、 F はファイルシステムブロック数でのファイルの大きさです。 .Pp .Bl -enum .It ストライプの大きさは 4 kB。転送回数は 6 回。 サブシステムの負荷: レイテンシ 48 ms、転送 2 ms、合計 50 ms。 .It ストライプの大きさは 8 kB。転送回数は 3.5 回。 サブシステムの負荷: レイテンシ 28 ms、転送 2 ms、合計 30 ms。 .It ストライプの大きさは 16 kB。転送回数は 2.25 回。 サブシステムの負荷: レイテンシ 18 ms、転送 2 ms、合計 20 ms。 .It ストライプの大きさは 256 kB。平均転送回数は 1.08 回。 サブシステムの負荷: レイテンシ 8.6 ms、転送 2 ms、合計 10.6 ms。 .It ストライプの大きさは 4 MB。平均転送回数は 1.0009 回。 サブシステムの負荷: レイテンシ 8.01 ms、転送 2 ms、合計 10.01 ms。 .El .Pp ハードウェア RAID システムによっては、 大きなストライプでは問題があるものがあるようです: このようなシステムでは完全なストライプを常にディスクとの間で転送するようで、 大きなストライプは性能に逆効果となります。 .Nm ではこの問題の被害を受けません: すべてのディスク転送を最適化し、不要なデータを転送しないからです。 .Pp 良く知られたベンチマークプログラムで真の複数アクセス状態 (100 を越える同時ユーザ) をテストするものはないので、 この主張の正しさを証明することは困難であることに注意してください。 .Pp これらのことを考えると、次の事項が .Nm ボリュームの性能に影響します: .Bl -bullet .It ストライピングは、複数アクセスのみの性能を向上します。 各要求が違うディスク上にある確率が増加するからです。 .It 複数ドライブにまたがるコンカチネート化 UFS ファイルシステムもまた、 複数ファイルアクセスの性能を向上します。 UFS は、ファイルシステムをシリンダグループに分割し、 ファイルを単一のシリンダグループに置こうとするからです。 一般的に、ストライピングほどは効果がありません。 .It ミラーリングは、読み込み複数アクセスの性能を向上可能です。 デフォルトでは .Nm は、連続する複数の読み込みを、 連続する複数のプレックスに対して発行するからです。 .It ミラーリングは、複数アクセスか単一アクセスかに関わらず、 すべての書き込みの性能を劣化させます。 両方のプレックスに対し、データを書き込む必要があるからです。 これが、前述のミラーリング設定におけるサブディスクのレイアウトの説明です: 各プレックス中の対応するサブディスクが別の物理ディスクにある場合、 書き込みコマンドは並列に発行可能です。 しかし、同じ物理ディスクにある場合、逐次的に実行されてしまいます。 .It RAID-5 の読み込みは、 ストライプ化の読み込みと本質的に同じ考慮すべき点があります。 ただし、ストライプ化プレックスがミラー化ボリュームの一部である場合を除きます。 この場合、ミラー化ボリュームの方が性能が良くなります。 .It RAID-5 の書き込みは、ストライプ化の書き込みの約 25% の速度です: 書き込みを行うには、 .Nm はまずデータブロックと対応するパリティブロックを読み込み、 いくばくかの計算を行い、 パリティブロックとデータブロックを書き戻す必要がありますので、 ストライプ化プレックスに対する書き込みの 4 倍の転送回数となります。 一方、これはミラーリングのコストにより相殺されますので、 単一 RAID-5 プレックスのボリュームへの書き込みは、 2 個のストライプ化プレックスからなる正しく設定されたボリュームへの 書き込み速度の半分となります。 .It .Nm の設定が変わると (例えば、オブジェクトの追加や削除、またはオブジェクトの状態変更)、 .Nm は 128 kB までの更新された設定を各ドライブに書き込みます。 ドライブ数が増加すると、この時間が長くなります。 .El .Ss Vinum ボリューム上にファイルシステムを作成する .Nm ボリューム上にファイルシステムを作成する前に .Nm disklabel を実行する必要はありません。 raw デバイスに対して .Nm newfs だけを実行してください。 .Fl v オプションを使用して、 デバイスがパーティションに分割されないようにしてください。 例えば、ボリューム .Pa mirror 上にファイルシステムを作成するには、次のコマンドを入力します: .Bd -literal -offset 4n # newfs -v /dev/vinum/rmirror .Ed .Pp .Pa rmirror という名前が raw デバイスを参照していることに注意してください。 .Sh その他のことがら .Nm の設定に関係する数個のその他のことがらがあります: .Bl -bullet .It 複数のドライブを単一ディスク上に作成しても、利益はありません。 各ドライブは 131.5 kB のデータをラベルと設定情報に使用し、 設定変更時に性能が劣化します。 適切な大きさのサブディスクを使用してください。 .It コンカチネート化 .Nm プレックスの大きさを増すことはできますが、 現在のところストライプ化プレックスと RAID-5 プレックスでは増せません。 現在のところ既存の UFS ファイルシステムの大きさを増すこともできません。 プレックスおよびファイルシステムを拡張可能とする計画はあります。 .El .Sh 分かりにくい仕様 (GOTCHAS) 次の事柄はバグではありませんし、存在する理由があるのですが、 混乱を引き起こすものです。 各項目は適切な節において議論されています。 .Bl -enum .It .Nm はデバイスを UFS パーティション上には作成するよう要求されると、 ``wrong partition type'' というエラーメッセージを返します。 パーティションタイプは、現在のところ、``unused'' である必要があります。 .It 複数のプレックスからなるボリューム作成時に、 .Nm はプレックスを自動的には初期化しません。 これは、内容については分からなくても、 これらの間には確かに一貫性がないということを意味しています。 その結果デフォルトでは、 新規作成されたプレックスのうち最初のものを除いたすべての状態を、 .Nm は .Ar 古い (stale) 状態に設定します。 .sp 実際上は、プレックス作成時にその内容に多大な興味を持つ人はいないので、 他のボリュームマネージャはどんなときでも .Ar 起動 (up) に設定して騙します。 .Nm は、新規作成されたプレックスが .Ar 起動 (up) 状態であることを保証するために、2 つの方法を提供します: .Bl -bullet .It プレックスを作成し、それらを .Nm vinum start で同期します。 .It キーワード .Ar setupstate 付きでボリューム (プレックスではありません) を作成します。 このキーワードは、矛盾が存在しても無視してプレックスの状態を .Ar 起動 (up) 状態にするように、 .Nm に指示します。 .El .It 現在 .Nm がサポートしているコマンドには、実際には不要なものがあります。 私には理解できない理由があるのでしょうが、 .Nm label および .Nm resetconfig のコマンドを使おうとするユーザをしばしば見掛けます。特に .Nm resetconfig は、あらゆる種類の恐しいメッセージを表示するにもかかわらずです。 正当な理由無しに、これらのコマンドを使わないでください。 .It 状態遷移には非常に分り難いものがあります。 事実、これがバグであるのか仕様であるのかは明かではありません。 .Ar reborn サブディスクなどの、奇妙な状態になったオブジェクトを起動できない場合には、 .Nm stop または .Nm stop Ar -f のコマンドを使用して、まず .Ar stopped 状態に遷移させてください。 これが上手くいけば、オブジェクトを起動できるはずです。 簡単な方法では上手くいかなくて、これが唯一の回復手段である場合、 その状況を報告してください。 .It カーネルモジュールを .Ar -DVINUMDEBUG オプション付きで構築した場合、 .Nm vinum(8) もまた .Ar -DVINUMDEBUG オプション付きで構築する必要があります。 なぜなら、両方のコンポーネントで使用されるデータオブジェクトに、 大きさが本オプションに依存しているものがあるからです。 前記のようにしないと、 .Ar Invalid argument というメッセージを表示してコマンドは失敗し、 次のようなコンソールメッセージが記録されます: .Pp .Bd -literal vinumioctl: invalid ioctl from process 247 (vinum): c0e44642 .Ed .Pp 古いバージョンの kld やユーザランドプログラムを使うと、 このエラーが発生することがあります。 .It .Nm ドライブは UNIX ディスクパーティションであり、パーティションタイプ .Ar vinum を使用します。 これは、パーティションタイプが .Ar 4.2BSD となる .Nm ccd とは違います。 この ccd の動作は、自分の足元をすくうことになります: .Nm ccd では、容易にファイルシステムを上書きできてしまいます。 .Nm ではそのようなことは許しません。 .Pp 同様の理由で、 .Nm vinum Ar start コマンドは、パーティション .Ar c 上のドライブを受け付けません。 パーティション .Ar c は、ディスク全体を表現するためにシステムが使用し、タイプ .Ar unused である必要があります。 ここには明確な矛盾があるので、 .Ar c パーティションを使用しないことにより .Nm は問題を解決しています。 .It .Nm vinum Ar read コマンドの文法は、吐き気を催すものです。 これが唯一の .Nm vinum 起動のためのコマンドでしたが、今の好ましい方法は .Nm vinum Ar start です。 .Nm vinum Ar read は整備のみに使用すべきです。 文法が変更されたので、引き数が .Pa /dev/da0 のようなディスクスライスであり .Pa /dev/da0e のようなパーティションではないことに注意してください。 .El .\"XXX.Sh BUGS .Sh 関連ファイル .Ar /dev/vinum - .Nm オブジェクトのデバイスノードがあるディレクトリ .br .Ar /dev/vinum/control - .Nm vinum の制御デバイスがあるディレクトリ .br .Ar /dev/vinum/plex - .Nm プレックスのデバイスノードがあるディレクトリ .br .Ar /dev/vinum/sd - .Nm サブディスクのデバイスノードがあるディレクトリ .Sh 環境変数 .Bl -hang .It VINUM_HISTORY ログファイルの名前です。デフォルトでは /var/log/vinum_history です。 .It VINUM_DATEFORMAT ログファイル中の日付の書式です。デフォルトは %e %b %Y %H:%M:%S です。 .It EDITOR 設定ファイルの編集に使用するエディタの名前です。デフォルトは .Nm vi です。 .El .Sh 関連項目 .Xr vinum 4 , .Xr disklabel 8 , .Xr newfs 8 , .Xr strftime 3 , .Pa http://www.lemis.com/vinum.html , .Pa http://www.lemis.com/vinum-debugging.html . .Sh 作者 Greg Lehey .Pa .Sh 歴史 .Nm コマンドは FreeBSD 3.0 から登場しました。