この章 (CCD Configuration) は Brian A. Seklecki <lavalamp@burghcom.com> による寄稿です
CCD ドライバーはいくつかの物理ドライブを 1つの擬似ボリュームに"結合"するのに使えます。 CCD はまた、 CMU RAIDFrame の、 ジオメトリーの異なるディスクをまたぐ RAID0 (ディスクをまたぐファイルシステム)ができない特徴制限を乗り越えます また、 CCD はディスクのパフォーマンス増進のため 容量ロスを伴う(with a gained space loss) "インターリーブ" をさせることができます。 この例ではその機能については扱いません。
CCD の設定法は次の通りで:
装置の接続
カーネル対応の設定
CCD を構成する各ディスクにdisklabel を書き
CCD conf ファイルを設定
CCD デバイスを初期化
新しい CCD デバイス上に 4.4BSD/UFS ファイルシステムをつくり
CDD ファイルシステムをマウント
この例では NetBSD/Sparc 1.5 で CCD 設定します。 CCD は 外部 50 ピン SCSI ポートにつなげた generic external Sun disk pack chassis の 4 つの SCSI ディスクに構築します。
これはあなた自身の裁量で、 プラットホームやハードウェアーに依存します。
私の機械の DMESG は:
Disk #1: probe(esp0:0:0): max sync rate 10.00MB/s sd0 at scsibus0 target 0 lun 0: <SEAGATE, ST32430N SUN2.1G, 0444> SCSI2 0/direct fixed sd0: 2049 MB, 3992 cyl, 9 head, 116 sec, 512 bytes/sect x 4197405 sectors Disk #2 probe(esp0:1:0): max sync rate 10.00MB/s sd1 at scsibus0 target 1 lun 0: <SEAGATE, ST32430N SUN2.1G, 0444> SCSI2 0/direct fixed sd1: 2049 MB, 3992 cyl, 9 head, 116 sec, 512 bytes/sect x 4197405 sectors Disk #3 probe(esp0:2:0): max sync rate 10.00MB/s sd2 at scsibus0 target 2 lun 0: <SEAGATE, ST11200N SUN1.05, 9500> SCSI2 0/direct fixed sd2: 1005 MB, 1872 cyl, 15 head, 73 sec, 512 bytes/sect x 2059140 sectors Disk #4 probe(esp0:3:0): max sync rate 10.00MB/s sd3 at scsibus0 target 3 lun 0: <SEAGATE, ST11200N SUN1.05, 8808 > SCSI2 0 sd3: 1005 MB, 1872 cyl, 15 head, 73 sec, 512 bytes/sect x 2059140 sectors
次のカーネル設定は CCD デバイスのサポートに 必要です。 GENERIC カーネルでは:
pseudo-device ccd 4 # concatenated disk devices
私のカーネル設定では、 SCSI ID と /dev デバイスエントリーの関係が、何らかの拍子におかしくならないように 固定させていて:
sd0 at scsibus0 target 0 lun ? # SCSI disk drives sd1 at scsibus0 target 1 lun ? # SCSI disk drives sd2 at scsibus0 target 2 lun ? # SCSI disk drives sd3 at scsibus0 target 3 lun ? # SCSI disk drives sd4 at scsibus0 target 4 lun ? # SCSI disk drives sd5 at scsibus0 target 5 lun ? # SCSI disk drives sd6 at scsibus0 target 6 lun ? # SCSI disk drives
CCD の各ディスクには、特殊なファイルシステムを構築することが 必要です。この例では、ディスクラベルを書く必要があるのは:
/dev/rsd0c /dev/rsd1c /dev/rsd2c /dev/rsd3c
註: /dev/r{s,w}d*において、ディスクラベルは ブロックデバイスではなくキャラクターデバイスに行うこと を常に思い出してください
註: 全てのプラットホームにおいて、 c スライスは NetBSD パーティション全体を示し、予約されています。
CCD において、きっと、既に存在しているディスクラベルを 取り除きたいことと思います。 これは、 dd コマンドですることができて:
# dd if=/dev/zero of=/dev/rsd0 bs=8k count=1 # dd if=/dev/zero of=/dev/rsd1 bs=8k count=1 # dd if=/dev/zero of=/dev/rsd2 bs=8k count=1 # dd if=/dev/zero of=/dev/rsd3 bs=8k count=1
ディスクの標準ディスクラベルはきっとこのような感じで:
# disklabel -r /dev/rsd0c [...snip...] bytes/sector: 512 sectors/track: 116 tracks/cylinder: 9 sectors/cylinder: 1044 cylinders: 3992 total sectors: 4197405 [..snip...] 3 partitions: # size offset fstype [fsize bsize cpg] c: 4197405 0 unused 1024 8192 # (Cyl. 0 - 4020*)
NetBSD パーティション上に パーティション全体を食い尽くす1つの "スライス" が必要でしょう。 スライスは、CCD のディスクラベルを置くための場所が要るため、 最低1シリンダー disk/partition 先頭より後ろの位置から 始まる必要があります。オフセットは 1x sectors/cylinder であるべきです(次の註をご覧ください)。 ゆえに、 "size" 値は "total sectors" から minus 1x "sectors/cylinder" を引いた値になるはずです。
註: "ccd" 型スライスの オフセットは "sectors/cylinder" 値の倍数である必要があります。
それに沿ってディスクラベルを編集してください。 path はブロックデバイスではなくて、 キャラクターデバイスを指定してください。
註: ディスクラベルの編集の前に export EDITOR=[あなたの好きなエディターの パス] をしてください。
# disklabel -e /dev/rsd0c
註: スライスの fstype はccdであることが必要です。
このパーティションには1つのスライスしか置かないので(*****?用語逆?****) c スライスをリサイクルできます (普通は象徴的な使い方をするように 予約されています)。 ディスクラベルを次のように 変更してください:
3 partitions: # size offset fstype [fsize bsize cpg] c: 4196361 1044 ccd # (Cyl. 1 - 4020*)
オプションとして、 c 以外を使ってスライスの設定をすることができて、 次のような感じに状況に合わせて調節してください:
3 partitions: # size offset fstype [fsize bsize cpg] a: 4196361 1044 ccd # (Cyl. 1 - 4020*) c: 4197405 0 unused 1024 8192 # (Cyl. 0 - 4020*)
ラベルの書きこみは、作業が完成した段階で行ってください。 disklabel は、あなたのディスクラベルの健全性チェックをして、 通らなければ、再編集するように入力を求めます。
全てのディスクに正しくラベルがつけられれば、 こんどは、設定ファイルを作る必要あります。設定ファイル はデフォルトで /etc にあります。 新しいものを作る必要があるかもしれません。 書式は:
#ccd ileave flags component devices
註: "ileave" には、ディスクの結合では 0を使い、 インターリブではディスクの "sectors/track" 値を 使います。
この場合の例は:
# more /etc/ccd.conf ccd0 0 none /dev/sd0c /dev/sd1c /dev/sd2c /dev/sd3c
註: CCD 設定ファイルは新しく作られた CCD ファイルシステムの デバイスファイルを参照します。 ここでは、ブロックデバイスを参照しないで、 代わりにキャラクターデバイスを使ってください。
いちど自信の持てる 健全な CCD 設定をすることができれば、 ccdconfig コマンドを使ってデバイスの初期化ができ: 設定するは:
# ccdconfig -c -f /etc/ccd.conf
設定解除には:
# ccdconfig -u -f /etc/ccd.conf
CCD デバイスの初期化で /dev エントリーがアクティブになり: /dev/{,r}ccd#:
# ls -la /dev/{,r}ccd0* brw-r----- 1 root operator 9, 0 Apr 28 21:35 /dev/ccd0a brw-r----- 1 root operator 9, 1 Apr 28 21:35 /dev/ccd0b brw-r----- 1 root operator 9, 2 May 12 00:10 /dev/ccd0c brw-r----- 1 root operator 9, 3 Apr 28 21:35 /dev/ccd0d brw-r----- 1 root operator 9, 4 Apr 28 21:35 /dev/ccd0e brw-r----- 1 root operator 9, 5 Apr 28 21:35 /dev/ccd0f brw-r----- 1 root operator 9, 6 Apr 28 21:35 /dev/ccd0g brw-r----- 1 root operator 9, 7 Apr 28 21:35 /dev/ccd0h crw-r----- 1 root operator 23, 0 Jun 12 20:40 /dev/rccd0a crw-r----- 1 root operator 23, 1 Apr 28 21:35 /dev/rccd0b crw-r----- 1 root operator 23, 2 Jun 12 20:58 /dev/rccd0c crw-r----- 1 root operator 23, 3 Apr 28 21:35 /dev/rccd0d crw-r----- 1 root operator 23, 4 Apr 28 21:35 /dev/rccd0e crw-r----- 1 root operator 23, 5 Apr 28 21:35 /dev/rccd0f crw-r----- 1 root operator 23, 6 Apr 28 21:35 /dev/rccd0g crw-r----- 1 root operator 23, 7 Apr 28 21:35 /dev/rccd0h
CCD で組み合わせた、新しい仮想ディスクデバイスに ディスクラベルをつけます。キャラクターデバイスを使ってください:
# disklabel -e /dev/rccd0c
また1スライスだけなので、 c スライスをリサイクルするか、 別のスライスを作ります。
# disklabel -r /dev/rccd0c # /dev/rccd0c: type: ccd disk: ccd label: default label flags: bytes/sector: 512 sectors/track: 2048 tracks/cylinder: 1 sectors/cylinder: 2048 cylinders: 6107 total sectors: 12508812 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # microseconds track-to-track seek: 0 # microseconds drivedata: 0 # size offset fstype [fsize bsize cpg] c: 12508812 0 4.2BSD 1024 8192 16 # (Cyl. 0 - 6107*)
それからファイルシステムはフォーマットすることが必要で:
# newfs /dev/rccd0c Warning: 372 sector(s) in last cylinder unallocated /dev/rccd0c: 12508812 sectors in 6108 cylinders of 1 tracks, 2048 sectors 6107.8MB in 382 cyl groups (16 c/g, 16.00MB/g, 3968 i/g) super-block backups (for fsck -b #) at: [...]
一度 CCD デバイス上にファイルシステムが作られれば、 ファイルシステムをシステムのマウントポイントにマウントできます。 マウントするものは、ffs または 4.4BSD という型のスライスラベルのものである必要があり:
# mount /dev/ccd0c /mnt
すると:
# export BLOCKSIZE=1024; df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/sd6a 376155 320290 37057 89% / /dev/ccd0c 6058800 1 5755859 0% /mnt
おめでとうございます。 CCD が動作しています。 起動時に RC 経由でデバイスを初期化するための操作については マニュアルの残りの部分を調べてください。ここで出てきたコマンドの 詳しいことは、各マニュアルページをご覧ください。