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 [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 についてのみ出力します。

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

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

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

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

    CCDF_UNIFORM	 0x02	 ディスク間で均一なインタリーブを使います
    CCDF_MIRROR	 0x04	 データのミラーリングをサポートします

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

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

    # ccd           ileave  flags   component devices
    ccd0            16      none    /dev/da2s1 /dev/da3s1

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

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

    # ccdconfig ccd0 64 none /dev/da0s1 /dev/da1s1 /dev/da2s1 /dev/da3s1
    # ccdconfig ccd0 128 CCDF_MIRROR /dev/da4 /dev/da5 /dev/da6 /dev/da7
    # ccdconfig ccd0 128 CCDF_MIRROR /dev/da8s2 /dev/da9s3

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

    # disklabel ccd0 > /tmp/disklabel.ccd0
    # disklabel -Rr ccd0 /tmp/disklabel.ccd0
    # disklabel -e ccd0

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

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

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

関連項目
dd(1), ccd(4), raid(4), disklabel(8), fdisk(8), rc(8), vinum(8)

バグ
ccd(4) が最初に返すディスクラベルは、3 個のパーティションしか指定しません。 “disklabel -e” を使用し、 BSD が期待するように、 パーティション数を 8 に変更する必要があります。

歴史
ccdconfig ユーティリティは NetBSD 1.0a から登場しました。