GlusterFS: un file system parallelo
altamente versatile
Ivan Rossi
ivan@biodec.com

2013
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
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

 
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

 
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

 
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

 
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
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
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
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
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
Elasticità
Espandere un volume

●

–

gluster peer probe (server)

–

gluster volume add-brick (vol) (server:nuovobrick)

–

gluster volume rebalance (vol) fix-layout start

Ridurre un volume

●

1. gluster volume remove-brick (vol) (srv:brick) start
2. gluster volume remove-brick (vol) (srv:brick) status;
3. ...aspettare... ; repeat 2 until ready
4. gluster volume remove-brick (vol) (srv:brick) commit
5. gluster volume rebalance (vol) fix-layout start

2013

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

 
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

 
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

 
Qualche numero
Accesso da macchina virtuale KVM

●

–

NFS su connessione 10 GbE

–

Test: Bonnie++

Version

1.96

Concurrency
Machine
KVM gl-nfs
Latency

------Sequential Output------ --Sequential Input- --Random1

-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--

Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP
8G

1495

98 247834 38

10098us

4661

178ms

600s

2013

 

2

3473

99 447219 35

60477us

11641us

/sec %CP
1476 186
4547ms
GRAZIE PER L'ATTENZIONE
Gluster community
http://gluster.org

Domande?

2013

Ferrara LUG, Linuxday 2013

Glusterfs: un filesystem altamente versatile

  • 1.
    GlusterFS: un filesystem 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, ciserve 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 UnSAN “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 Unostorage 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 presabene 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 filesystem 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 systemPosix ● 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 aplugins ● 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 ● Procurarsiun 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
  • 12.
    Elasticità Espandere un volume ● – glusterpeer probe (server) – gluster volume add-brick (vol) (server:nuovobrick) – gluster volume rebalance (vol) fix-layout start Ridurre un volume ● 1. gluster volume remove-brick (vol) (srv:brick) start 2. gluster volume remove-brick (vol) (srv:brick) status; 3. ...aspettare... ; repeat 2 until ready 4. gluster volume remove-brick (vol) (srv:brick) commit 5. gluster volume rebalance (vol) fix-layout start 2013  
  • 13.
    Peer-to-Peer Nessun metadata server ● – Imetadati 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 disponibilee 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 direalismo 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 Dueserver ● – 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  
  • 18.
    Qualche numero Accesso damacchina virtuale KVM ● – NFS su connessione 10 GbE – Test: Bonnie++ Version 1.96 Concurrency Machine KVM gl-nfs Latency ------Sequential Output------ --Sequential Input- --Random1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP 8G 1495 98 247834 38 10098us 4661 178ms 600s 2013   2 3473 99 447219 35 60477us 11641us /sec %CP 1476 186 4547ms
  • 19.
    GRAZIE PER L'ATTENZIONE Glustercommunity http://gluster.org Domande? 2013 Ferrara LUG, Linuxday 2013