CCDCONFIG(8)

名称
ccdconfig - 結合ディスクドライバ用設定ユーティリティ

書式
ccdconfig [-cv] ccd ileave [flags] dev [file ...] ccdconfig -C [-v] [-f config_file] ccdconfig -u [-v] ccd [file ...] ccdconfig -U [-v] [-f config_file] ccdconfig -g [-M core] [-N system] [ccd [...]]

解説
ccdconfig は結合ディスクデバイス (concatenated disk device, ccd) の動的な設定および 解除を行う場合に使用します。ccd の詳細については、 ccd(4) を参照して下さい。

以下のオプションが使用できます。

-c  ccd の設定を行います。 ccdconfig のデフォルトの動作です。

-C  設定ファイルに書かれている全てのデバイスの設定を行います。

-f config_file
    全てのデバイスの設定あるいは解除を行う時に、デフォルトの /etc/ccd.conf ではなく、 config_file から設定情報を読み込みます。

-g  ccd の設定ファイルとして使用できる形式で、現在の ccd の設定を出力します。 引数が指定されていなければ、設定されている全ての ccd について出力します。 引数が指定されていれば、指定された ccd についてのみ出力します。

-M core
    名前リストに対応する値の展開に、デフォルトの /dev/mem ではなく、 core を使用します。

-N system
    ( getbootfile(3) により判断される) 現在稼働中のカーネルの代わりに system をカーネルとして使用します。

-u  ccd の設定を解除します。

-U  ccd 設定ファイルに書かれている全ての ccd デバイスの設定を解除します。

-v  より冗長な出力を行います。

ccd は、コマンド行ないし ccd 設定ファイルにて、ccd の名前、インタリーブ ファクタ、ccd 設定フラグ、ひとつ以上のデバイスのリストの情報により 定義されます。フラグは、十進数、十六進数、コンマで区切られた名前のリスト、 “none” のいずれかで表すことができます。 フラグには以下の物があります。

    CCDF_SWAP		 0x01	 dmmax 単位でインタリーブ
    CCDF_UNIFORM	 0x02	 ディスク間で均一なインタリーブ
    CCDF_MIRROR	 0x04	 データのミラーリングを
    CCDF_PARITY	 0x08	 パリティ検査を行います (現状では使用不可)

設定ファイルのフォーマットは、コマンド行から指定する場合と 同一の形式になります。コマンド行から指定する場合も、 設定ファイルから指定する場合も、 flags 引数はオプションです。

    #
    # /etc/ccd.conf
    # Configuration file for concatenated disk devices
    #

    # ccd           ileave  flags   component devices
    ccd0            16      none    /dev/da2e /dev/da3e

構成要素のデバイスは、パーティションタイプが FS_BSDFFS (disklabel(8) では “4.2BSD” と表示されます) であることが必要です。

使用例
ccdconfig の例をいくつか以下に示します。 ccdconfig に渡される引数は、 /etc/ccd.conf 設定ファイルに書けるものと正に同じものです。 1 番目の例は、 4 ディスクのストライプを 4 SCSI ディスクパーティションから作成します。 ストライプは 64 セクタインタリープを使用します。 2 番目の例は、 複雑なストライプ/ミラーの組み合わせの例です。 これは、 da2e と da3e の 2 ディスクストライプを、 da4e と da5e の 2 ディスクストライプへミラーすると、解釈します。 最後の例は、単純なミラーです。 /dev/da2e は /dev/da4e へミラーされ、ccd0 に割り当てられます。

    # ccdconfig ccd0 64 none /dev/da2e /dev/da3e /dev/da4e /dev/da5e
    # ccdconfig ccd0 128 CCDF_MIRROR /dev/da2e /dev/da3e /dev/da4e /dev/da5e
    # ccdconfig ccd0 128 CCDF_MIRROR /dev/da2e /dev/da4e

新規 ccd ディスクを作成するとき、一般的には他のことに先駆けて disklabel をしたいでしょう。 最初のラベルを作成した後は、 これを編集して、追加パーティションを追加可能です。 ラベル自身は、ccd ディスクの最初の 16 セクタを占めます。 ファイルシステムを newfs で作成するだけなら、 newfs がラベル領域を飛ばしますので、心配することはありません。 しかし、ccd パーティションからまたは ccd パーティション宛へ dd するつもりなら、一般的には、 パーティションを作成してラベルデータに重ならないようにするのが良い考えです。 例えば、10000 セクタの ccd ディスクがある場合、 オフセット 16 大きさ 9984 のパーティション 'd' を作成するでしょう。

    # disklabel -r -w ccd0c auto
    # disklabel -e ccd0c

ccd ディスクに対する disklabel 処理は 1 度の機会です。 他のデバイスと異なり、disklabel 実行時には、 ccd はパーティション 'c' を指定するよう要求しています。 マシンをリブートし ccd ディスクを再構成する場合、 以前作成したディスクラベルが残っているため再作成は不要です。 ccd パラメータの変更には注意してください。 インタリーブ、フラグ、ccd ディスクを構成するデバイスリストを変えると、 通常、ccd ディスク上にあったデータを壊してしまいます。 こうなってしまった場合、 ccd ディスクを (再) 初期化する前にラベルを再初期化するのは、 通常良い考えです。

回復
ccd ディスク上のエラーは、 ミラーリングオプションを使用していない限り、通常は回復不可能です。 しかし、ミラーリングにはそれ自身の危険性があります。 これは、すべてのセクタの両方のコピーが同一であることを仮定していることです。 この仮定は、書き込みエラーが発生するか、 どちらかのミラーを交換するまでは、成り立ちます。 ccd は、貧者のミラーリング実装を使用しています。 ディスクエラーが発生し始めたら、 ccd ディスクのバックアップを取って、 壊れたハードウェアを交換して、 ccd ディスクを再作成可能である限りは、この実装は十分うまく働きます。 これ以上を望むなら、外部ハードウェア RAID SCSI ボックスや、 dpt コントローラ等の RAID コントローラや、 vinum 等のソフトウェア RAID システムを検討すべきです。

関連ファイル
/etc/ccd.conf
    デフォルトの ccd 設定ファイル

関連項目
ccd(4), rc(8), vinum(8)

歴史
ccdconfig コマンドは NetBSD 1.0a から登場しました。