[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]
Il bus SCSI,(1) ovvero Small computer system interface nasce nel 1982 come bus di sistema per usi generali. Si tratta di un bus che consente prestazioni molto elevate, che però richiede una gestione molto sofisticata che si traduce alla fine in un costo molto elevato, sia per l'unità di controllo, sia per i dispositivi che vi si collegano.
In un bus SCSI le unità periferiche sono individuate in base a un indirizzo di identificazione, ID, con l'aggiunta di un altro livello inferiore di identificazione, definito LUN (Logical unit number).
Lo standard si articola in molte varianti, nelle quali si possono distinguere due categorie fondamentali: narrow e wide. Nel primo caso si ha a disposizione un bus di 8 bit e sono disponibili otto indirizzi ID, da zero a sette; nel secondo il bus ha 16 bit e sono disponibili 16 indirizzi ID, da 0 a 15.
La gestione del bus è affidata a un'unità di controllo, che solitamente è separata dalla scheda madre. L'unità di controllo utilizza uno degli indirizzi ID disponibili, che precisamente deve essere il più elevato (7 o 15).
Solitamente, sull'unità di controllo è possibile collegare un cavetto piatto per raggiungere delle unità interne all'elaboratore e un cavo esterno per le periferiche separate. Queste connessioni costituiscono in pratica il bus; in particolare, le connessioni esterne di più unità periferiche avvengono a partire dall'unità immediatamente precedente, come prolungamento del bus stesso. La lunghezza complessiva del bus, includendo sia la connessione interna che quelle esterne, ha un limite; in generale, maggiori sono le prestazioni e minore è la lunghezza consentita.
Il bus, alla fine di ognuno dei due capi, deve avere delle terminazioni. Queste terminazioni sono inserite automaticamente dalle unità collegate, solitamente attraverso un ponticello o un micro interruttore. In pratica, l'ultima unità di ogni capo del bus deve avere la terminazione attivata, mentre quelle intermedie non devono averla; quando esistono dispositivi collegati solo all'interno dell'elaboratore, oppure solo all'esterno, l'unità di controllo costituisce uno dei capi del bus, per cui si deve configurare l'unità stessa in modo da abilitare la terminazione anche al suo interno.
Esistono due tipi di cavo, a seconda della dimensione del bus: 50 poli per lo standard a 8 bit e 68 poli per lo standard a 16 bit.
Ogni dispositivo collegato al bus SCSI deve avere un indirizzo ID differente dagli altri. L'indirizzo LUN consentirebbe a più componenti di condividere un solo indirizzo ID; tuttavia, di solito un indirizzo ID corrisponde a un dispositivo solo; se poi questo ne ha la necessità, può gestire l'indirizzo LUN per individuare delle sotto componenti. L'indirizzo LUN può andare da zero a sette; quando un dispositivo non utilizza in pratica l'indirizzo LUN, questo corrisponde allo zero.
La quantità massima di dispositivi che si possono collegare al bus può essere limitata dalle caratteristiche fisiche dello stesso, anche quando si potrebbe disporre di molti altri indirizzi ID. |
Gli indirizzi ID hanno una priorità: il valore più alto è quello che ha la precedenza, cosa che spiega il motivo per cui l'unità di controllo ha sempre il numero più alto; l'indirizzo zero è l'ultimo a essere preso in considerazione. In condizioni normali, al contrario, la ricerca per un'unità di avvio, come un disco fisso, inizia a partire dall'indirizzo zero. In base a questa logica, i dischi fissi si collocano solitamente nei primi indirizzi ID, mentre negli ultimi vanno messi quei dispositivi che necessitano di una certa continuità nel flusso di dati, come potrebbe essere un masterizzatore.
Tabella 34.1. Caratteristiche sommarie dei vari standard SCSI.
Per identificare un componente collegato a un bus SCSI di un elaboratore, vanno considerati quattro livelli: l'unità di controllo; il bus (perché l'unità stessa potrebbe essere in grado di gestire più canali; l'indirizzo ID; l'indirizzo LUN.
Il bus, inteso in questo contesto, viene definito canale. Quando un'unità di controllo ne gestisce uno solo, il suo indirizzo corrisponde a zero.
La gestione di un bus SCSI da parte di un kernel Linux dipende dall'inclusione di codice specifico per ogni tipo particolare di unità di controllo. Ciò avviene nella sezione {SCSI support
} (29.2.11), all'interno della quale occorre comunque elencare le unità che si vogliono gestire.
Se l'unità di controllo serve a gestire un disco usato per l'avvio del sistema, occorre valutare la possibilità di includere il codice necessario per questa nel file principale del kernel, perché un modulo creerebbe delle complicazioni.
La gestione ad alto livello da parte del kernel Linux prevede una serie di file di dispositivo, di cui i principali sono quelli seguenti:
/dev/sdn
disk driver
per le unità di memorizzazione a disco (ad accesso diretto);
/dev/stn
e /dev/nstn
tape driver
per le unità a nastro;
/dev/srn
oppure /dev/scdn
CD-ROM driver
per i lettori CD-ROM;
/dev/sgn
generic driver
per tutto il resto che non può essere classificato diversamente.
Alcuni tipi di componenti SCSI possono richiedere di accedere sia a un file di dispositivo particolare, sia a quello generico. Per esempio, un masterizzatore di CD-ROM, utilizza un file di dispositivo /dev/srn
, oppure /dev/scdn
, quando legge un CD, ma per la masterizzazione serve anche il file di dispositivo generico /dev/sgn
corrispondente.
Questi file di dispositivo sono elencati dettagliatamente nel documento Linux allocated devices, mantenuto da Peter H. Anvin e corrispondente al file <file:///usr/src/linux/Documentation/devices.txt>. Lì si possono trovare anche altri file di dispositivo per componenti particolari che si collegano a unità di controllo SCSI.
Un kernel Linux può dare informazioni importanti sul bus SCSI e sui dispositivi che vi sono collegati, quando si cerca di scoprire l'origine di un problema. Si accede a queste informazioni solitamente attraverso dmesg; l'esempio mostra anche l'uso di less per scorrere il risultato sullo schermo:
$
dmesg | less
Nella prima parte si ottengono informazioni sulla prima unità di controllo, identificata dalla sigla scsi0:
SCSI subsystem driver Revision: 1.00 PCI: Found IRQ 10 for device 00:14.0 (scsi0) <Adaptec AHA-2940A Ultra SCSI host adapter> found at PCI 0/20/0 (scsi0) Narrow Channel, SCSI ID=7, 3/255 SCBs (scsi0) Cables present (Int-50 YES, Ext-50 NO) (scsi0) Downloading sequencer code... 422 instructions downloaded scsi0 : Adaptec AHA274x/284x/294x (EISA/VLB/PCI-Fast SCSI) 5.2.1/5.2.0 <Adaptec AHA-2940A Ultra SCSI host adapter>
In questo caso, si tratta di un'unità di controllo Ultra SCSI a otto bit (narrow channel) che di conseguenza può usare cavi a 50 poli. Osservando l'esempio, si vede che è presente il cavo interno, mentre non è collegato nulla all'esterno.
Successivamente si passa ai componenti installati su questo bus:
(scsi0:0:0:0) Synchronous at 10.0 Mbyte/sec, offset 10. Vendor: FUJITSU Model: M2513A Rev: 1200 Type: Direct-Access ANSI SCSI revision: 01 (scsi0:0:3:0) Synchronous at 10.0 Mbyte/sec, offset 15. Vendor: TEAC Model: CD-R55S Rev: 1.0E Type: CD-ROM ANSI SCSI revision: 02
In questo caso è presente un'unità a dischetti magneto-ottici con indirizzo ID pari a zero e un masterizzatore con indirizzo tre. In entrambi i casi, l'indirizzo LUN è zero. Per la precisione, le coordinate vanno lette nel modo seguente, dove n rappresenta l'n-esima unità di controllo SCSI, a partire da zero:
(scsin:canale:id:lun)
In particolare, l'emulazione SCSI per le unità di controllo ATA viene annotata come se fosse un'unità di controllo SCSI aggiuntiva:
scsi1 : SCSI host adapter emulation for IDE ATAPI devices
Infine, quanto possibile, vengono individuate le caratteristiche dei componenti SCSI installati:
Detected scsi removable disk sda at scsi0, channel 0, id 0, lun 0 SCSI device sda: 446325 512-byte hdwr sectors (229 MB) sda: Write Protect is off sda: unknown partition table
In questo caso si vede l'abbinamento del file di dispositivo /dev/sda
all'unità magneto-ottica collocata nel primo canale (bus) della prima unità di controllo, all'indirizzo ID zero e all'indirizzo LUN zero. Nel momento dell'avvio era presente un dischetto nell'unità, così le sue caratteristiche vengono indicate; diversamente verrebbe segnalato un errore.
Detected scsi CD-ROM sr0 at scsi0, channel 0, id 3, lun 0 sr0: scsi-1 drive
Infine viene individuato anche il masterizzatore, che in questo caso viene indicato come lettore CD-ROM, abbinato al file di dispositivo /dev/sr0
.
Se l'unità di controllo SCSI è collocata a sua volta su un bus PCI, se ne possono trovare le tracce nel file virtuale /proc/pci
:
PCI devices found: ... Bus 0, device 20, function 0: SCSI storage controller: Adaptec AIC-7861 (rev 1). IRQ 10. Master Capable. Latency=32. Min Gnt=4.Max Lat=4. I/O at 0xe000 [0xe0ff]. Non-prefetchable 32 bit memory at 0xd9001000 [0xd9001fff].
Charles M. Kozierok, The PC guide, Small Computer System Interface (SCSI)
SCSI Troubleshooting, Advanced Media Service
The Linux gazette, numero 44, agosto 1999, James T. Dennis, The answer guy, Plug and pray SCAM
daniele @ swlibero.org
1) SCSI si pronuncia «s-c-a-s-i».
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome scsi.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]