Dischi di storage esterni


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 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: 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.