doc/ja/man/man8/vinum.8
Jun Kuriyama c6ad703501 Catching up to 3.1-19990210-BETA.
Reviewed by:	Japanese Online Manual Project <man-jp@jp.FreeBSD.ORG>
Submitted by:	Kazuo Horikawa <k-horik@yk.rim.or.jp>
1999-02-11 15:44:39 +00:00

1266 lines
32 KiB
Groff

.\" Hey, Emacs, edit this file in -*- nroff-fill -*- mode
.\"
.\" jpman %Id: vinum.8,v 1.3 1999/01/05 15:15:53 horikawa Stab %
.\" WORD: attach 結合 (する)
.Dd 15 January 1999
.Dt vinum 8
.Os FreeBSD
.Sh 名称
.Nm vinum
.Nd 論理ボリュームマネージャの制御プログラム
.Sh 書式
.Nm
.Op command
.Op Fl options
.Sh コマンド
.Cd create
.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
.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 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
.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
.Op volume | plex | subdisk
.in +1i
システムがオブジェクトへアクセスできるようにします。
.in
.Cd stop
.Op Fl f
.Op volume | plex | subdisk
.in +1i
オブジェクトへのアクセスを終了させます。
.in
.Sh 解説
.Nm
\fBVinum\fP\| 論理ボリュームマネージャと通信するための
ユーティリティプログラムです。
ボリュームマネージャの詳細については
.Xr vinum 4
を参照してください。
.Xr vinum 8
は対話形式と、単独のコマンドを実行する形式のいずれも実行可能になっています。
コマンドを伴わずに
.Nm
を起動すると対話形式になる一方、引数としてコマンドを指定するとそのコマンド
だけを実行します。
対話モードでは、
.Nm
はコマンドラインヒストリを保持します。
.Ss オプション
.Nm
のコマンドにはオプションを付加することができます。どのコマンドにも
下記オプションのどれでも指定することができますが、指定しても変化がない場合も
あります。
その場合にはそのオプションは無視されます。例えば、
.Nm stop
コマンドは
.Fl v
オプションと
.Fl V
オプションを無視します。
.Bl -hang
.It Cd -v
.Nm -v
オプションはどのコマンドにも使えて、より詳細な情報を引き出します。
.It Cd -V
.Nm -V
オプションはどのコマンドにも使えて、
.Nm -v
オプションが表示するものよりさらに詳細な情報を引き出します。
.It Cd -f
.Nm -f
オプションは安全性の確認を無効にします。細心の注意を払って
使用して下さい。
このオプションは緊急時にのみ使用するものです。例えば、
コマンド
.Bd -unfilled -offset indent
rm -f myvolume
.Ed
.Pp
.Nm myvolume
がオープンされていたとしても削除します。以降、このボリュームに
アクセスすると、ほぼ確実にパニックを起こします。
.It Cd -r
.Nm -r
(``recursive: 再帰的'') オプションは表示系のコマンドで使い、
指示したオブジェクト
だけでなく、配下のオブジェクトの情報も表示します。
例えば、
.Nm lv
コマンドとともに使われる場合、
.Nm -r
オプションは対象のボリュームに属するプレックスとサブディスクの情報も表示します。
.It Cd -s
.Nm -s
オプションは表示系のコマンドで統計情報を表示するために使います。
.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 Ar description-file
.sp
.Nm
.Ar create
はどのオブジェクトの作成にも使われます。相互の関連性が比較的複雑で
.Nm
オブジェクトの作成には潜在的に危険があることを考慮して、この機能には対話的な
インタフェースはありません。詳細は後述の設定ファイルの節を参照して下さい。
.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_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 の場合)、
その名前は頭に ``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 Ar plex
.Pp
.Nm
.Ar init
は指定したプレックスのすべてのサブディスクに 0 を書き込んでプレックスを初期化
します。これはプレックス中のデータに矛盾のないことを確実にする唯一の方法です。
RAID-5 プレックスの使用前には、この初期化が必要です。
他の新規プレックスに対しても、この初期化を推奨します。
.Pp
.Nm
はプレックス中のすべてのサブディスクを並行して初期化します。
この操作には長い時間が
かかるため、バックグラウンドで実行されます。
.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 read
.Ar disk Op disk...
.Pp
.Nm read
コマンドは、指定したディスクを走査し、作成済の設定情報を含む
.Nm
パーティションを探します。
そして、最近更新されたものから過去に更新されたものの順番で、
設定を読み込みます。
.Nm
は最新のすべての設定情報を各ディスクパーティションに保持しています。
このコマンドの
パラメータとして、構成の中の全パーティションを指定する必要があります。
.Nm
.Nm read
は非 Vinum パーティションの名前を受け付けますので、
.Nm
パーティションが存在するかもしれない全パーティションを、
本コマンドに指定することができます
.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
フラグを付けてボリュームを消去すると、プレックスとそれに属するサブディスクも
消去します。
.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
オブジェクトを起動します。オブジェクト名を指定しないと、システムが
.Nm
ドライブであると知っているディスクを、
.Nm
は走査します。その後、
.Nm read
コマンドのところに書いてあるように、設定を読み込みます。
.Nm
ドライブにはそのドライブ中のデータについてのすべての情報を持つヘッダが
入っており、その情報としてはプレックスとボリュームを表現するために必要な
他のドライブの名前を含んでいます。
.Pp
オブジェクト名が指定されると、
.Nm
はそれらを開始します。
.Pp
マルチプレックスボリュームの中の 1 つのプレックスを起動するには、
ボリューム中の他のプレックスからデータをコピーする必要があります。
これにはしばしば長い時間がかかるため、バックグラウンドで実行されます。
.It Nm stop
.Op Fl f
.Op volume | plex | subdisk
.Pp
.Nm stop
は、指定したオブジェクトと配下のオブジェクトに対するアクセスを抑止します。
オブジェクトを設定から削除することはありません。
.Nm start
コマンドの後で再度アクセスができるようになります。
.Pp
デフォルトでは
.Nm
は動作中のオブジェクトは削除しません。例えば、動作中のボリュームに結合
されているプレックスは削除できないし、オープン中のボリュームは削除できません。
.Fl f
オプションは
.Nm
にこの確認を省略して無条件に削除するよう指示します。このオプションは
大いに注意し、よく理解した上で使って下さい。もし間違って使うとひどい
データ破壊を起こすことがあります。
.El
.Ss 設定ファイル
.Nm
では、
.Nm create
コマンドに渡すすべての引数は設定ファイルに入っている必要があります。
設定ファイルのエントリは、ボリュームやプレックスやサブディスクを定義します。
エントリは 1 行に 1 つということ以外には決まった書式はありません。
.Pp
設定ファイルのいくつかの引数では、大きさ (長さ、ストライプ長) を指定します。
これらの長さは、バイト単位でも、512バイトのセクタ数 (\f(CWb\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
設定ファイルには以下のエントリを記述することができます。
.Pp
.Bl -hang -width 4n
.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
マルチプレックスボリュームを作成する際に、すべてのプレックスの内容に一貫性が
あると仮定します。通常こうなることはないため、正式には
.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 のアクティビティが非常に増加します。
この割り当てに起因する並行性の増加は、レイテンシを増加させません。
ストライプの大きさの目安は、256kB から 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
サブディスクの大きさを指定します。このキーワードは必須です。
デフォルト値はありません。
.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 unused
タイプである必要があります。
.Nm
の後のバージョンではこれは
.Ar vinum
タイプに変更される予定です。
.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 unused 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 分かりにくい仕様 (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 init
で初期化します。
.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 やユーザランドプログラムを使うと、
このエラーが発生することがあります。
.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 関連項目
.Xr vinum 4 ,
.Xr disklabel 8 ,
.Nm http://www.lemis.com/vinum.html ,
.Nm http://www.lemis.com/vinum-debugging.html .
.Sh 作者
Greg Lehey
.Pa <grog@lemis.com>
.Sh 歴史
.Nm
コマンドは FreeBSD 3.0 から登場しました。