Das SCSI-Subsystem basiert auf einem 3-Schichten-Modell, wie Sie es in Abbildung 16.1 sehen können. Die oberste Schicht liegt am nächsten zur Benutzer-/Kernel-Schnittstelle, während die unterste Schicht näher zur Hardware liegt. Die Treiber aus der obersten Schicht werden durch eine Abkürzung, die aus zwei Buchstaben besteht, bezeichnet. Dort gibt die folgenden vier Schnittstellen:
mount -t ext2 /dev/sda3 /daten
mount -t iso9660 /dev/sr0 /media/cdrom
Die Treiber für die passenden Schnittstellen heißen sd_mod.o, sr_mod.o, st.o und sg.o. Die unterschiedliche Namensgebung ist historisch bedingt. Sie finden die Treiber in einem der Modulverzeichnisses des Kernels mit dem Namen scsi.
ole@enterprise:~> find /lib/modules/ -name scsi /lib/modules/2.4.21-215-athlon/kernel/drivers/scsi
In den meisten Fällen besitzt Ihr System nur einen Hostadapter. Die Zählweise beginnt bei 0. Jeder Hostadapter kann einen oder mehr Busse kontrollieren. Im Normalfall gibt es nur einen Bus. Auf jedem Bus können nun, je nach SCSI-Variante 7 oder 15 Geräte angeschlossen sein. Dabei beginnt die Zählweise bei 0. Diese ID ist für die Bootplatte reserviert, während der SCSI-Hostadapter eigentlich immer die ID 7 bekommt. Die Abkürzung LUN für Logical Unit Number bezeichnet eine Untereinheit in einem SCSI-Geräte. Dies können z. B. die CDs in einem Storage Center sein oder die einzelnen Festplatten in einem SCSI-Storagetower.
enterprise:~ # ls /proc/scsi aic7xxx ide-scsi scsi sg usb-storage-0
Informationen über die angeschlossenen Geräte erhalten Sie über die virtuelle Datei /proc/scsi/scsi. So zeigt das untere Beispiel einen Rechner mit drei angeschlossenen SCSI-Geräten. Dabei handelt es sich um ein echtes SCSI-Gerät (IOMEGA) und zwei SCSI-Simulationen, nämlich um einen ATAPI-CD-Brenner und um einen USB-Speicherstift. Aus diesem Grund werden hier gleich drei SCSI-Controller aufgeführt.
enterprise:~ # cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 04 Lun: 00 Vendor: IOMEGA Model: ZIP 100 Rev: E.02 Type: Direct-Access ANSI SCSI revision: 02 Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: PLEXTOR Model: CD-R PX-W4824A Rev: 1.01 Type: CD-ROM ANSI SCSI revision: 02 Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: 3SYSTEM Model: USB FLASH DISK Rev: 1.00 Type: Direct-Access ANSI SCSI revision: 02
Im Verzeichnis aic7xxx finden wir in unserem Beispiel die Daten über den SCSI-Controller der Firma Adaptek. Die darin enthaltene Datei 0 beschreibt den ersten SCSI-Controller mit seinen angeschlossenen Geräten.
enterprise:~ # ls /proc/scsi/aic7xxx/ 0 enterprise:~ # cat /proc/scsi/aic7xxx/0 Adaptec AIC7xxx driver version: 6.2.36 Adaptec 2940 SCSI adapter aic7870: Single Channel A, SCSI Id=7, 16/253 SCBs Allocated SCBs: 5, SG List Length: 102 ... Target 3 Negotiation Settings User: 10.000MB/s transfers (10.000MHz, offset 127) Target 4 Negotiation Settings User: 10.000MB/s transfers (10.000MHz, offset 127) Goal: 3.300MB/s transfers Curr: 3.300MB/s transfers Channel A Target 4 Lun 0 Settings Commands Queued 198 Commands Active 0 Command Openings 1 Max Tagged Openings 0 Device Queue Frozen Count 0 ...
Auch die IDE-SCSI-Emulation wird als SCSI-Controller gewertet. Deshalb findet sich auch hier extra ein Verzeichnis. Dieses Verzeichnis enthält ebenfalls eine Datei. Da es sich hierbei um den zweiten SCSI-Controller in der Hierachie handelt, hat die Datei den Namen 1. Die Informationen hier sind war eindeutig, aber auch ziemlich nutzlos.
enterprise:~ # ls /proc/scsi/ide-scsi/ 1 enterprise:~ # cat /proc/scsi/ide-scsi/1 SCSI host adapter emulation for IDE ATAPI devices