Cos’e’ QFS
QFS e’ un file system ad alte prestazioni, recente acquisizione di Sun. Sta per Quick File System ed e’ strettamente legato a SAM-FS, un file system di tipo gerarchico, che permette di gestire lo storage virtualizzandolo e suddividendolo in tiers costituiti da tecnologie di archiviazione diverse, di diverso costo e prestazioni. Utilizzato “standalone”, ovvero senza la parte SAM, introduce interessanti novita’ in Sun Cluster dove, usato assieme a OBAN (Multi-owner Disksets di Sun Volume Manager aka SDS), offre una alternativa all’accoppiata raw devices/VxCVM, per implementare uno shared filesystem su soluzioni di tipo scalabile come Oracle RAC.
(brevi) Cenni sulla composizione
QFS e’ composto di un file system dove la parte riguardante i metadati viene preferibilmente separata (contiene gli inodes ed e’ direttamente responsabile del numero di files che il filesystem puo’ contenere) e fatta risiedere su altra LUN o slice; ogni file richiede 512bytes di spazio, il device dedicato ai metadati puo’ essere accresciuto a bisogno. Inoltre QFS e’ in grado di essere “spalmato” su piu’ LUNs (fino a 252 per 16 Tb) in RAID0, sia striped, sia simple (concatenate); quest’ultima modalita’ permette il grow del filesystem in un secondo tempo, aggiungendo un device alla configurazione (oltre a una seconda opzionale device su cui mettere i metadati): c’e’ da segnalare una pecca, a differenza dei moderni filesystems e dello stesso UFS il growfs va effettuato con filesystem smontato,e questo, in situazioni di produzione puo’ essere parecchio fastidioso. C’è da dire, tuttavia, che la versione 5.0 ovvierà a questo problema consentendo il grow del filesystem online, almeno questo è quanto si può leggere nell’elenco delle novità che vi saranno introdotte. Alcuni demoni completano il framework: hanno il compito, tra le altre cose, nella configurazione shared, di far comunicare un master server che detiene il controllo del filesystem e i vari clients per un’accesso e il mantenimento dei dati coerente. Il master, quando non disponibile, viene sostituito da un potenziale server master secondario, che prende il controllo del filesystem. Lo “switch” a un’altro server puo’ anche essere indotto tramite comando da cli. Il cambio di metadata server e’ trasparente ad utenti ed applicativi, se si eccettua un freeze di durata variabile (da pochi secondi in configurazioni semplici, che ho visto diventare anche un minuto in Sun Cluster sotto agente QFS; questo tempo dipende dal numero di filesystems controllati dall’agente) solitamente trascurabile e privo di perdite di dati. Per quanto riguarda Sun Cluster, QFS e’ completamente integrabile tramite apposito agente; in questo modo e’ possibile il controllo del cluster sui filesystems e sui demoni e relativa gestione delle dipendenze. Per le Zones, e’ in fase di sviluppo l’integrazione che permettera’ di montare i filesystems qfs appartenenti alla zona al boot della stessa. Allo stadio attuale (v4.6), questo e’ possibile solo a mano o tramite custom shell scripts non forniti da Sun e quindi non supportati.
How-to: Aggiungere hosts a uno shared QFS filesystem
Ecco gli steps necessari ad aggiungere dei servers al gruppo di hosts che “sharano” un filesystem QFS denominato “qfs”.
I files da configurare sono 2 + 1 da verificare. La directory contenente la configurazione è /etc/opt/SUNWsamfs.
root@box3 # ls /etc/opt/SUNWsamfs/ VERSION.4.6 hosts.qfs notify.cmd startup mcf scripts
- hosts.qfs – basta editarlo su uno degli hosts e copiarlo sugli altri.
root@box3 #cat hosts.qfs box1 172.30.10.1 1 - server box2 172.30.10.2 2 - box3 172.30.10.3 3 -
Si commenta da sè. Il server è la macchina 1, gli altri sono potenziali metadata servers nell’ordine di diritto dato dal numero nella terza colonna.
- mcf
root@box3 # cat mcf qfs 10 ma qfs - shared /dev/dsk/c4t6d0s0 11 mm qfs - /dev/dsk/c4t6d0s7 12 mr qfs -
Contiene la struttura di volume e filesystem. Va definito uno stesso filesystem su tutte le macchine, specificando un identico nome (in questo caso “qfs”) e definendo come sopra data e metadata slices (o devices), mettendo la dicitura shared.
Attenzione a un errore banale ma in cui e’ facile incappare. Il logical device path del device in uso dalle 4 macchine ha significanza locale. Ad esempio su box1 è /dev/dsk/c3t6d0 mentre sulla 3 /dev/dsk/c4t6d0. Cambia il controller per lo stesso device sharato tra gli hosts. E’ un errore non accorgersene andando a inserire un device diverso e anche errato nell’mcf.
mcf è il file dove si va ad agire quando si intende ingrandire il filesystem. Qui si aggiungono le luns da assegnare come spazio per dati e metadati.
- /etc/inittab – Contiene la riga:
sf:023456:respawn:/usr/lib/fs/samfs/sam-fsd
Verificare che non sia stata precedentemente commentata (ad esempio in seguito a shutdown del demone QFS conseguente a rimozione del filesystem shared dall’host).
Potrebbe essere necessario avviare i demoni:
/etc/init.d/samfs.shared start
Si lancia il comando
root@box3 # samsharefs -u qfs
…che rilegge il file hosts.qfs e aggiorna la configurazione del demone in accordo ad esso.
Se il filesystem è smontato su uno degli hosts, allora è da usare:
root@box1 # samsharefs -u -R qfs # !!! ATTENZIONE !!! usare l'opzione -R solo se il FS è SMONTATO # Se è MONTATO si rischia una corruzione, usare solo -u root@box1 # samd config Configuring SAM-FS
partendo dal metadata server e passando poi alle altre macchine.
Quest’ultimo comando applica i cambiamenti. E’ possibile montare i filesystems se non lo si è già fatto.
Un paio di comandi di verifica, utili anche nel caso di problemi durante operazioni del genere:
- samsharefs qfs
- samfsinfo qfs
root@box3 # samsharefs qfs # # Host file for family set 'qfs' # # Version: 4 Generation: 28 Count: 4 # Server = host 2/box3, length = 138 # box1 172.30.10.1 1 - box2 172.30.10.2 2 - box3 172.30.10.3 3 - server
root@box3 # samfsinfo qfs samfsinfo: filesystem qfs is mounted. name: qfs version: 2 shared time: SatAug 1 22:00:00 CET 2008 count: 2 capacity: 000000000047f000 DAU: 64 space: 0000000000370a40 meta capacity: 0000000000080000 meta DAU: 16 meta space: 00000000000706e0 ord eq capacity space device 0 11 0000000000080000 00000000000706e0 /dev/dsk/c4t6d0s0 1 12 000000000047f000 0000000000370a40 /dev/dsk/c4t6d0s7
Rimane da testare il corretto switch del server; il freeze del filesystem durante lo switch è abbastanza trasparente, discretamente veloce, e comunque tutte le operazioni vengono messe in attesa e portate a termine appena il sistema torna disponibile.
E’ possibile forzare lo switch così:
root@box3 # samsharefs -s HOSTNAME qfs
Si vedrà qualcosa di molto simile:
Aug 1 15:36:06 box1 samfs: [ID 145691 kern.notice] NOTICE: SAM-QFS: qfs: Failing over to new server box3, frozen (2000821) Aug 1 15:36:06 box1 samfs: [ID 668864 kern.notice] NOTICE: SAM-QFS: qfs: Set client: new server box3 (2000821), 1.3, fl=0 Aug 1 15:36:06 box1 samfs: [ID 665295 kern.notice] NOTICE: SAM-QFS: qfs: Reset leases, then send resync message to new server box3, thawing (4000821) Aug 1 15:36:10 box1 samfs: [ID 999740 kern.notice] NOTICE: SAM-QFS: qfs: New server box3 (8800811) responded to resync message, thawing (4800821) Aug 1 15:36:10 box1 samfs: [ID 515541 kern.notice] NOTICE: SAM-QFS: qfs: Waiting for new server box3 (8800811): thawing (4800821) Aug 1 15:36:12 box1 samfs: [ID 206251 kern.notice] NOTICE: SAM-QFS: qfs: Received faildone message from new server box3, thawing (4c00821) Aug 1 15:36:12 box1 samfs: [ID 685965 kern.notice] NOTICE: SAM-QFS: qfs: Failed over to new server box3: (21)
Conclusione
Su QFS si potrebbero dire tantissime altre cose: dalle sue altre features, come directI/O e pagedI/O, il tuning tramite definizione dei DAU, il Fast File System Recovery, l’incremento delle prestazioni dato dall’uso di piu’ metadata devices per minimizzare il movimento delle testine nei dischi e accelerare l’accesso ai dati, e naturalmente il supporto client per sharare qfs con sistemi linux… e queste sono cose che magari qualcuno avra’ interesse di approfondire e magari di scriverci qualcosa su queste pagine.
Dovrebbe essere tutto. Per aggiunte, correzioni, estensioni, commenti: [email protected].