Il cluster MANGUSTA dispone
attualmente di nove dischi di storage esterni da 1 TeraByte,
collegati alle interfacce USB, che
possono essere montati, smontati e spostati sulle varie macchine a
seconda delle necessita'. Su mangraid1 e
doublepulsar sono stati predisposti
otto mount points /tdA /tdB /tdC /tdD.... Ciascun disco ha una
sola partizione ed una directory /tera01 .. /teraN.
I dischi si distinguono per la numerazione N della
directory /teraN, riportata anche su un' etichetta all' esterno.
Ogni disco deve essere prima alimentato e poi collegato alla porta USB del
PC; dopo circa un minuto /teraN puo' essere montata su uno
qualsiasi dei mount points liberi.
La directory e' di proprieta' dell' utente-gruppo
pulsar; ogni utente (qualora ci siano utenti diversi da
pulsar) ha il permesso di lettura, mentre hanno permesso di scrittura
- l'utente pulsar;
- ogni utente del gruppo pulsar.
Nessun utente (se non root) puo' scrivere sul disco fuori dalla
directory /teraN.
Per semplificare la gestione dei dischi e' stato predisposto e adattato
per ciascuna macchina lo script usbig il
quale:
- verifica la presenza di dischi di storage collegati alla macchina;
- verifica se sono accesi o spenti;
- se accesi, ma con la relativa partizione non montata la monta;
- stampa un messaggio di descrizione per ogni disco, con device,
mount point e directory /teraN.
Ad esempio l' output di usbig su un PC con due dischi di storage montati e':
***************************************************************
Usb-storage disk manager
---------------------------------------------------------------
Device /dev/sda1 - Attached = Y - Mounted on /tdA
/tdA/tera03 ready
---------------------------------------------------------------
Device /dev/sdb1 - Attached = Y - Mounted on /tdB
/tdB/tera04 ready
---------------------------------------------------------------
oppure nel caso di un PC al quale sono stati collegati e successivamente staccati tre dischi:
***************************************************************
Usb-storage disk manager
---------------------------------------------------------------
Device /dev/sda1 - Attached = N
---------------------------------------------------------------
Device /dev/sdb1 - Attached = N
---------------------------------------------------------------
Device /dev/sdc1 - Attached = N
---------------------------------------------------------------
Con questo script l' utente pulsar puo' verificare e montare
i dischi disponibili su ogni macchina dando il comando
usbig (/usr/local/bin/usbig) ed inoltre puo' smontarli
con il comando umount /tdA - /tdB etc.
Prima di spegnere un disco e' indispensabile smontare la
relativa partizione.
Contrarimente a quanto accade per i cdrom che
vengono automaticamente smontati prima di essere espulsi, nel caso di periferiche USB il sistema non segnala errore se vengono spente prima
che siano smontate le relative partizioni, ma cio' pone a rischio l'integrita' dei dati.
Perche' lo script?
La gestione delle periferiche USB da parte del kernel 2.4 e' tale che
il sistema tiene traccia di ogni disco che e' stato via via montato e
gli assegna un device SCSI che resta fisso fino al reboot successivo della
macchina. I dischi pero' possono essere smontati e spostati da una
macchina all'altra senza riavviare, il che non consente l'assegnazione di
un mount point prefissato.
Ogni macchina che ospita i dischi ha tanti mount point /tdA
/tdB ... quanti sono tutti i dischi, ma non e' possibile
definire una corrispondenza univoca tra un mount point ed un certo
disco, se non fino al reboot successivo della macchina. D'altra parte
per permettere anche agli utenti di svolgere le operazioni di mount
e' necessario aggiungere nel file fstab di ciascuna macchina le righe:
/dev/sda1 /tdA auto noauto,user,rw 0 0
/dev/sdb1 /tdB auto noauto,user,rw 0 0
/dev/sdc1 /tdC auto noauto,user,rw 0 0
/dev/sdd1 /tdD auto noauto,user,rw 0 0
.....
tenendo conto, quando necessario, della presenza di altri dispositivi
SCSI interni, per cui i primi devices /dev/sda /dev/sdb etc
possono essere gia' occupati, come nel caso di mangraid1:
/dev/sdc1 /tdA auto noauto,user,rw 0 0
/dev/sdd1 /tdB auto noauto,user,rw 0 0
/dev/sde1 /tdC auto noauto,user,rw 0 0
/dev/sdf1 /tdD auto noauto,user,rw 0 0
.....
Occorre quindi predisporre il sistema aggiungendo in fstab tante righe
quanti sono i dischi complessivamente disponibili.
In questo modo ogni volta che si collega un disco il sistema gli
assegna un device (sempre un /dev/sd*1 avendo creato solo una
partizione primaria su ogni disco), per il quale esiste gia' una corrispondenza
con un mount point, definita nel file fstab.
Con lo script l' utente e' in grado di capire immediatamente quale e' il contenuto del disco e dove e' montato. Se il disco viene successivamente staccato e poi ricollegato alla stessa macchina (anche su una porta USB diversa) verra' nuovamente montato sullo
stesso mount point precedente fino al reboot successivo.