SCSIデバイスをたくさん接続してLinuxを運用する事が可能です. IDEデバイスを接続する場合にも同様ですが,4個くらいまでは予測できますが, それ以上になるとデバイス名がどうなるのか予測が難しくなります. SCSIデバイスエミュレーションのレイヤがあるため, Linuxにおいては,USBで接続したディスクやIDE接続のディスクをSCSIディスクとして 扱うことができます. そのため,SCSI自体を利用していなくとも,SCSIデバイスの扱いが必要な 場合があります.
USB接続で動的にデバイスを接続する場合に,接続した順番でデバイス名が 変わってしまって困った事はありませんか? そのような場合,scsidevを利用することができます.
scsidevはLinuxカーネル2.4とか2.6で利用できるもののようです(2.2系列については未確認). Debianにおいてはscsitoolsパッケージに入っています. 昔はhwtoolsパッケージに入っていたようです.
scsidevを実行すると,/dev/scsi以下にデバイスを作成してくれます.
brw-rw---- 1 root disk 0 12月 1 07:04 sdh1-0c0i0l0 brw-rw---- 1 root disk 0 12月 1 07:04 sdh1-0c0i0l0p1 brw-rw---- 1 root disk 0 12月 1 07:04 sdh1-0c0i0l0p2 crw------- 1 root root 0 12月 1 07:04 sgh0-0c0i0l0 crw------- 1 root root 0 12月 1 07:04 sgh1-0c0i0l0 brw-rw---- 1 root cdrom 0 12月 1 07:04 srh0-0c0i0l0
この際に,/proc/scsi/scsiにある情報をもとに,/etc/scsi.alias ファイルを設定すると,その情報を元にデバイスを作成してくれます.
$ cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: TOSHIBA Model: DVD-ROM SD-R5002 Rev: 1M31 Type: CD-ROM ANSI SCSI revision: 02 Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: USB-HS Model: WDC WD1600AB-00D Rev: 0.01 Type: Direct-Access ANSI SCSI revision: 02
この場合には,/etc/scsi.aliasを
manufacturer="USB-HS", model="WDC WD1600AB-00D", devtype=disk, alias=usbhdd
と設定して,scsidevを実行すると, /dev/scsiに以下のデバイスファイルが作成されます.
brw-rw---- 1 root disk 0 12月 1 07:14 usbhdd brw-rw---- 1 root disk 0 12月 1 07:14 usbhdd-p1 brw-rw---- 1 root disk 0 12月 1 07:14 usbhdd-p2
これで,毎回USBディスクを接続するたびにscsidevコマンドを実行すれば, /dev/scsi/usbhdd-p1をマウントすればよい,ということが分かります.
SCSIDEVを使っている場合の作業手順は以下のようになります. 前提: カーネルがUSB mass storage deviceに対応していること.
USB HDD デバイスの購入 | |
USB HDDデバイスをPCに接続 | dmesgにて接続を確認.
usb 1-1: new high speed USB device using address 2 scsi1 : SCSI emulation for USB Mass Storage devices Vendor: SAMSUNG Model: SV1203N Rev: TQ10 Type: Direct-Access ANSI SCSI revision: 02 SCSI device sda: 234493056 512-byte hdwr sectors (120060 MB) sda: assuming drive cache: write through sda: sda1cat /proc/partitions にてそれらしいデバイスがあることを確認 $ cat /proc/partitions major minor #blocks name . . 8 0 117246528 sda 8 1 117242338 sda1 |
cfdisk, fdisk などを利用してパーティション切り.cfdisk /dev/sda | $ cat /proc/partitions にてそれっぽく切れていることを確認 |
ファイルシステムを作成する
#mke2fs -j /dev/sda1 #tune2fs -c0 -i0 /dev/sda1 |
tune2fs -l /dev/sda1で確認
# tune2fs -l /dev/sda1 | grep -e "^\(Maximum mount count\|Check interval\)" Maximum mount count: -1 Check interval: 0 ( |
cat /proc/scsi/scsiにて情報取得し,
$ cat /proc/scsi/scsi Attached devices: Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: SAMSUNG Model: SV1203N Rev: TQ10 Type: Direct-Access ANSI SCSI revision: 02そのエントリを/etc/scsi.aliasに追加 manufacturer="SAMSUNG", model="SV1203N", devtype=disk, alias=iodatahdd120gscsidevコマンドを実行 |
$ ls -l /dev/scsi/ 合計 0 brw-rw---- 1 root disk 8, 0 2004-03-23 23:45 iodatahdd120g brw-rw---- 1 root disk 8, 1 2004-03-23 23:45 iodatahdd120g-p1 |
特に参考になる文献は以下です.
なお,scsidevと同等以上の機能を提供しようとしているのが,最近(2003年12月20日現在)話題になっているudevのようです.
ネットワークカードについて同じような機構を提供しているのが,nameifです./etc/mactabに eth0 00:90:CC:0B:68:0Aというような感じで記述します. Debianでは標準で動かそうという動きがあるようです.
RedHat 9, RedHat EL 3.0には,devlabelというツールがあるようで,それが標準になっているようです.
$Id: scsidev.html.ja,v 1.10 2004/07/14 14:05:45 dancer Exp $