IEEE1394外付けHDDの増設

私のメモです。参考になればいいですが、間違っていたらごめんなさい。

戯れ言

--------------------------------------------------------




























ストレージサーバにしよう

Cube型PCは僕の家でHTTPサーバとSAMBAサーバを担っているが、SAMBAの共有スペースが無くなってきた。そこで HDDを増設することにした。今回はUSBではなくIEEEの外付けHDDを増設することにした。 増設した機器は、下の通り。

ハードディスク Seagate ST3250823A (250GB U100 7200)
ケース NOVAC NV-HD380W(USB&IEEE Dualエントリータイプ)

バルク品のHDDを買ってきているので、以下の操作の前に他のPCでHDDのセクターをチェックしてみた。 SeagateのHDDだが、HGSTのDrive Fitness Testを 使うことができたので、それでチェックしたところ、緑の画面が出てエラー無し(disposition code 00x0)であった。 とりあえず、一安心。。。

カーネルの再構築

IEEE1394は使わないだろうと思って、モジュールすら作っていなかった。そのため、カーネルを再構築した。 IEEE1394関係で外付けストレージを使う際に必要な設定は下の通りである。但し、カーネルコンフィグファイルは make menuconfigで編集することを前提にした記述である。

☆ IEEE1394 (Firewire) Support (Experimental)以下

☆ SCSI Support以下

IEEEの設定に関して、SBP-2以外はモジュールではなくカーネルに組み込んでしまった方が良いかもしれない。 僕の場合、IEEE1394関係を全てモジュールにしたところ、IEEE HDDを繋いでもSBP-2モジュールが自動で ロードされなかったからである。
 これらの設定を追加して、次の手順でカーネルを再構築&インストールする。

# cd /usr/src/linux
# make-kpkg clean
# make-kpkg --revision=XXXXXXX kernel-image
# cd ..
# dpkg -i kernel-image-Version_XXXXXXX_CPU.deb
# vi /ete/lilo.conf
# lilo -v
# reboot
 # ソースディレクトに移動
 # 前回コンパイルしたパッケージの削除
 # カーネル再構築。XXXXXXXXは適当な数値を(僕は日付にしている)
 # できあがったカーネルイメージがあるディレクトリへ移動
 # dpkgでカーネルイメージをインストール
 # liloを編集し、新しいカーネルで起動できるようにする
 # liloをインストール
 # 新しいカーネルで起動するために再起動

Back to MENU

SCSI機器として認識させるには?

新しいカーネルで起動したら早速IEEEのHDDをつないでみる。tail -f /var/log/messageを実行すると、 /var/log/messageに次のメッセージが加わっているはずである。

Cube kernel: sbp2: $Rev: 1074 $ Ben Collins "bcollins@debian.org"
Cube kernel: scsi0 : SCSI emulation for IEEE-1394 SBP-2 Devices
Cube kernel: ieee1394: sbp2: Logged into SBP-2 device

もし、sbp2:〜が表示されない場合、sbp2.oがロードされていない可能性がある。lsmodコマンドで sbp2が表示されない場合、modprobe sbp2を実行すれば良い。
 しかし、sbp2をロードしても、上述の通りSCSIデバイスとして認識されたがドライブ(/dev/sd*)が 割り当てられていない。そこで、以下のコマンドを実行する。

# echo "scsi add-single-device 0 0 0 0" > /proc/scsi/scsi
※サイトによっては、「cat echo (以下同文)」となっているところもあるが、catを付けるのは誤り

このコマンドを実行すると、/var/log/messageに次の行が追加される。

Cube kernel: Vendor: ST325082 Model: 3A Rev: 0.01
Cube kernel: Type: Direct-Access ANSI SCSI revision: 02
Cube kernel: Attached scsi disk sdb at scsi0, channel 0, id 0, lun 0
Cube kernel: SCSI device sdb: 488397168 512-byte hdwr sectors (250059 MB)
Cube kernel: sdb: sdb1 sdb2 < sdb5 >  #パーティションを作成してない場合sdbXは表示されない

もし、上のように表示されない場合、add-single-device 0 0 0 0の数値を1 0 0 0などと変えてみる。 この"0 0 0 0"という数値は、左からSCSIコントローラ番号、チャンネル番号、SCSI id、 LUN(ロジカルユニット番号)である。 僕のPCの場合、USB HDDが起動時に認識された状態でIEEE HDDを繋ぐと、1 0 0 0になった。これは、 USBコントローラが0 0 0 0に割り当てられるため、その次の1 0 0 0をIEEEのHDDに割り当てるからと思われる。 また、さらにUSBやIEEEのHDDを繋ぐなら、2 0 0 0となる。(SCSIコントローラ番号が1増えるようだ)

SCSIデバイスとして認識されたならば、後はSCSIディスクとして使用できる。マウント は下の通り。

# mount -t ext3 /dev/sdb1 /mnt/temp

IEEE HDDを取り外す際は、/proc/scsi/scsiからエントリーを削除してから取り外す。 具体的には次のようになる。

# umount /mnt/temp
# echo "scsi remove-single-device 0 0 0 0" > /proc/scsi/scsi
(ケーブルを抜く)
 # 取り外すHDDをアンマウント
 # /proc/scsi/scsiエントリーから削除
 

Back to MENU