Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Glusterfs: un filesystem altamente versatile
1. GlusterFS: un file system parallelo
altamente versatile
Ivan Rossi
ivan@biodec.com
2013
2. Mi presento
BioDec S.r.l. è una società di informatica che, fin dalla
fondazione (2003), ha scelto di usare esclusivamente
software libero o open-source.
Tutte le attività aziendali sono gestite senza usare
prodotti proprietari
●
–
Desktop e portatili
–
Private cloud
–
Networking & intranet
–
Filesystem distribuito.
Dettagli: http://www.biodec.com
●
2013
Ferrara LUG, Linuxday 2013
3. La richiesta
“Ivan, ci serve una cartella condivisa …
(Tutto qua? Perchè mi chiami? Usa ... )
...da 40 Terabytes”
(Vabbé, allora è meglio se ci penso un attimo)
2013
4. La soluzione canonica
Un SAN “PVnRT”
I dischi costano molto
●
–
una cifra ridicola
Cinque anni di vita
●
–
la migrazione dati ...
●
Quante licenze???
●
Un monolite
●
Si è (già) rotto pure lui
Molte valgono anche per un NAS
“Sibilla” basato su “ZeFinalFS”
2013
5. La soluzione eretica
Uno storage cluster
(software-defined storage*)
Aggregando diversi
server con un filesystem
distribuito posso creare
un NAS virtuale
●
–
Componenti standard
e/o non proprietari
(ndt. costa meno)
–
Scalabile
–
Maggiore resistenza
all'obsolescenza
*buzzword compliance
2013
6. La reazione
L'hanno presa bene
a) Ma cos'è questa strana roba?
b) Te sei matto!! Sta roba qui non la usa nessuno!!!
Aziende
●
–
Google, Yahoo, Amazon … (le solite)
Ricerca
●
–
CERN, NCAR, EMBL, EBI … (li hanno inventati)
Altri pericolosi sovversivi
●
–
Biblioteca Nazionale, Banca d'Italia
2013
7. Il candidato
GlusterFS
un file system distribuito
●
–
TCP/IP (10 GbE rocks!) o Infiniband
–
Alternative:
●
Ceph, Lustre, XtreemFS, MooseFS
scalabile ed elastico
●
http://gluster.org
http://gluster.org
–
esistono installazioni multi-petabytes
–
è possibile sia espandere che ridurre un
filesystem GlusterFS,
●
(è molto più semplice espandere)
Software libero
●
–
Supporto commerciale: RedHat (RHAS)
2013
Ferrara LUG, Linuxday 2013
8. GlusterFS features
●
File system Posix
●
Supporto ACL e quota
●
Esportabile nativamente, NFSv3, CIFS (con samba)
●
Peer-to-peer
●
Fault-tolerance (opportunamente configurato)
●
High availability (export nativo, CTDB)
●
Self-healing
●
Installazione molto semplice e veloce
–
Poi quando vuoi ottimizzare il tutto, un pò meno
2013
Ferrara LUG, Linuxday 2013
9. Alcuni dettagli
●
Architettura a plugins
●
Componenti
–
Peers: componenti del cluster (glusterfs-server)
–
Brick: filesystem locale su cui opera GlusterFS
–
Translator: componente sw che opera su brick o
subvolume, e genera un subvolume con particolari
proprietà.
–
Distribute, replicate, stripe: speciali translator che
generano configurazioni simil-RAID
–
Volume: il risultato finale, uno share glusterfs
2013
Ferrara LUG, Linuxday 2013
10. Semplice da installare
●
Procurarsi un paio di “server”
–
installarci glusterfs-server e far partire glusterfsd
●
–
●
Preparare filesystems per i brick (XFS)
Creare un “trusted pool” dei server
–
●
Usate i pacchetti di gluster.org (no distribuzioni)
gluster peer probe (numero.ip.del.server)
Creare un volume gluster
–
–
●
gluster volume create gv1 srv1.my.net:/export/brick1
srv2.my.net:/export/brick1
gluster volume start gv1; gluster volume info
Montare il filesystem distribuito
–
Usando NFS o il client nativo
2013
Ferrara LUG, Linuxday 2013
11. RAID-like
●
●
gluster volume create (vol) replica (n) stripe (m)
transport (tcp,rdma) server1:brick1 server2:brick2
…
Distribute
–
–
I files creati vengono scritti interamente su uno dei brick
–
●
Il default (replica 0 stripe 0)
Nessuna forma di ridondanza (JBOD ma “bilanciato”)
Replicate
–
I files vengono replicati interamente su diversi bricks
●
●
simile a un RAID1 (un insieme di RAID1 “bilanciati”)
Stripe
–
I files venfono spezzati in m stripes su m bricks
2013
Ferrara LUG, Linuxday 2013
13. Peer-to-Peer
Nessun metadata server
●
–
I metadati sono immagazzinati negli extended
attributes del file system (xfs -i 512 raccomandato)
–
Localizzazione files deterministica (hashing)
–
Uso intensivo di caching lato client
Tutti i peer sono server Gluster & NFSv3
●
–
Non solo i peer che forniscono i bricks
–
Previsto anche CIFS nativo (v3.5?)
Accesso client
●
–
Il client nativo fornisce fault-tolerance e load-balancing
–
Il client NFS no, se non si usano sistemi esterni.
2013
Ferrara LUG, Linuxday 2013
14. NFS server disponibile e bilanciato: CTDB
CTDB (Cluster temporary DB) è un progetto Samba
●
–
Andrew Tridgell (samba, rsync)
CTDB assicua la consistenza di dati e locks TDB
●
–
Molto veloce e leggero
CTDB dispone di High-Aavilability features
●
–
node monitoring,
–
node failover,
–
IP takeover
http://ctdb.samba.org
http://ctdb.samba.org
Accoppiato con un rrDNS ci permette di bilanciare e
rendere fault-tolerant le connessioni NFS ai peers
2013
Ferrara LUG, Linuxday 2013
15. Una nota di realismo
Con hardware scadente non si va fortissimo
●
–
La velocità sarà funzione del componente più scadente
(come sempre!) che è il networking nel 90% dei casi.
Le performance degradano molto con grandi numeri
di files piccoli
●
–
Anche una directory con 10.00 files flat è un problema
–
traffico metadati
Peak performance richiede ottimizzazioni al kernel
●
–
Soprattutto con client nativo e replica
●
–
Deadline scheduler, TCP stacks
Nondimeno su 10 GbE, c'è chi ha fatto 800 MB/sec
2013
16. L'area “scratch”
Elaborazione dati (grossi data set bioinformatici)
●
–
In produzione da 4 anni
–
Evoluta nel tempo
–
Mai perso dei dati, nonostante il progetto
Il sistema
●
–
2x server Xeon (4 core) di 4 anni fa
●
●
–
2x GbE bonding
6x 2 TB HD (Raid-6)
GlusterFS 3.2
●
●
Semplice distribute (16 TB)
Accesso via client nativo
2013
17. La cartella condivisa
Due server
●
–
12 core Xeon E5
–
16x HD 3 TB (RAID)
–
2x GbE NIC bonding (user's clients)
–
1x 10 GbE NIC (data + KVM clients)
GlusterFS
●
–
Versione 3.4.x
–
Distribute + replica 2
–
Bricks su LVM
Acceduto via NFS (TCDB + round-robin DNS)
●
2013