GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Striping su quattro nodi di archiviazione con GlusterFS 3.2.x su Ubuntu 12.10

Questo tutorial mostra come eseguire lo striping dei dati (segmentazione di dati logicamente sequenziali, come un singolo file, in modo che i segmenti possano essere assegnati a più dispositivi fisici in modo round-robin e quindi scritti contemporaneamente) su quattro singoli server di archiviazione (che esegue Ubuntu 12.10) con GlusterFS. Il sistema client (anche Ubuntu 12.10) sarà in grado di accedere allo storage come se fosse un filesystem locale.GlusterFS è un file system in cluster in grado di scalare a diversi peta-byte. Aggrega vari blocchi di archiviazione su Infiniband RDMA o interconnessione TCP/IP in un unico file system di rete parallelo di grandi dimensioni. I mattoni di archiviazione possono essere realizzati con qualsiasi hardware di consumo come server x86_64 con RAID SATA-II e HBA Infiniband.

Si noti che questo tipo di archiviazione non fornisce alcuna funzionalità di disponibilità elevata/tolleranza ai guasti, come nel caso dello spazio di archiviazione replicato.

Non garantisco che questo funzionerà per te!

1 Nota preliminare

In questo tutorial utilizzo cinque sistemi, quattro server e un client:

  • server1.example.com:indirizzo IP 192.168.0.100 (server)
  • server2.example.com:indirizzo IP 192.168.0.101 (server)
  • server3.example.com:indirizzo IP 192.168.0.102 (server)
  • server4.example.com:indirizzo IP 192.168.0.103 (server)
  • client1.example.com:indirizzo IP 192.168.0.104 (client)

Poiché eseguiremo tutti i passaggi di questo tutorial con i privilegi di root, possiamo anteporre tutti i comandi in questo tutorial con la stringa sudo, oppure diventare root in questo momento digitando

sudo su 

Tutti e cinque i sistemi dovrebbero essere in grado di risolvere i nomi host degli altri sistemi. Se ciò non può essere fatto tramite DNS, dovresti modificare il file /etc/hosts in modo che appaia come segue su tutti e cinque i sistemi:

vi /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1
192.168.0.101   server2.example.com     server2
192.168.0.102   server3.example.com     server3
192.168.0.103   server4.example.com     server4
192.168.0.104   client1.example.com     client1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

(È anche possibile utilizzare indirizzi IP invece di nomi host nella configurazione seguente. Se preferisci utilizzare indirizzi IP, non devi preoccuparti se i nomi host possono essere risolti o meno.)

2 Configurazione dei server GlusterFS

server1.example.com/server2.example.com/server3.example.com/server4.example.com:

GlusterFS è disponibile come pacchetto per Ubuntu 12.10, quindi possiamo installarlo come segue:

apt-get install glusterfs-server

Il comando

glusterfsd --version

ora dovrebbe mostrare la versione GlusterFS che hai appena installato (3.2.5 in questo caso):

[email protected]:~# glusterfsd --version
glusterfs 3.2.5 costruito il 31 gennaio 2012 07:39:58
Revisione del repository:git://git.gluster.com/glusterfs.git
Copyright (c) 2006-2011 Gluster Inc.
GlusterFS viene fornito con ASSOLUTAMENTE NESSUNA GARANZIA.
È possibile ridistribuire copie di GlusterFS secondo i termini del GNU General Public License.
[email protected]:~#

Se utilizzi un firewall, assicurati che le porte TCP 111, 24007, 24008, 24009-(24009 + numero di mattoni su tutti i volumi) siano aperte su server1.example.com, server2.example.com, server3.example.com e server4.example.com.

Successivamente dobbiamo aggiungere server2.example.com, server3.example.com e server4.example.com al pool di archiviazione attendibile (si noti che sto eseguendo tutti i comandi di configurazione GlusterFS da server1.example.com, ma è possibile come eseguili bene da server2.example.com o server3.example.com o server4.example.com perché la configurazione viene replicata tra i nodi GlusterFS - assicurati solo di utilizzare i nomi host o gli indirizzi IP corretti):

server1.example.com:

Su server1.example.com, esegui

gluster peer probe server2.example.com
gluster peer probe server3.example.com
gluster peer probe server4.example.com

L'output dovrebbe essere il seguente:

[email protetta]:~# gluster peer probe server2.example.com
Esame riuscito
[email protetto]:~#

Lo stato del pool di archiviazione attendibile dovrebbe ora essere simile a questo:

gluster peer status

[email protetta]:~# stato peer gluster
Numero di peer:3

Nome host:server2.example.com
Uuid:600ff607-f7fd-43f6-af8d-419df703376d
Stato:peer in cluster (connesso)

Nome host:server3.example.com
Uuid:1d6a5f3f-c2dd-4727-a050-0431772cc381
Stato:peer in cluster (connesso)

Nome host:server4.example.com
Uuid:0bd9d445-0b5b-4a91-be6f-02b13c41d5d6
Stato:peer in cluster (connesso)
[email protected]:~#

Quindi creiamo la condivisione con striping denominata testvol (tieni presente che il numero di striping è uguale al numero di server in questo caso) su server1.example.com, server2.example.com, server3.example.com e server4.example .com nella directory /data (verrà creata se non esiste):

gluster volume create testvol stripe 4 transport tcp server1.example.com:/data server2.example.com:/data server3.example.com:/data server4.example.com:/data 

[email protetto]:~# gluster volume create testvol stripe 4 transport tcp server1.example.com:/data server2.example.com:/data server3.example.com:/data server4.example.com:/data
La creazione del volume testvol è riuscita. Avvia il volume per accedere ai dati.
[email protected]:~#

Avvia il volume:

gluster volume start testvol

È possibile che il comando precedente ti dica che l'azione non è andata a buon fine:

[email protected]:~# gluster volume start testvol
L'avvio di testvol volume non è riuscito
[email protected]:~#

In questo caso dovresti controllare l'output di...

server1.example.com/server2.example.com/server3.example.com/server4.example.com:

netstat -tap | grep glusterfsd

su entrambi i server.

Se ottieni un output in questo modo...

[email protetta]:~# netstat -tap | Grep Glusterfsd
TCP 0 0*:24009*:*Ascolta 1110 /Glusterfsd
TCP 0 0 localhost.localdom:1019 localhost.localdo:24007 stabilito 1110 /glusterfsd
[e -mail protetto]:~ #

... va tutto bene, ma se non ottieni alcun output...

[email protetta]:~# netstat -tap | grep glusterfsd
[email protetta]:~#

[email protetta]:~# netstat -tap | grep glusterfsd
[email protetta]:~#

[email protetta]:~# netstat -tap | grep glusterfsd
[email protetta]:~#

... riavvia il demone GlusterFS sul server corrispondente (server2.example.com, server3.example.com e server4.example.com in questo caso):

server2.example.com/server3.example.com/server4.example.com:

/etc/init.d/glusterfs-server restart

Quindi controlla l'output di...

netstat -tap | grep glusterfsd

... ancora su questi server - ora dovrebbe apparire così:

[email protetta]:~# netstat -tap | Grep Glusterfsd
TCP 0 0*:24009*:*Ascolta 1152 /Glusterfsd
TCP 0 0 LocalHost.Localdom:1018 LocalHost.Localdo:24007 stabilito 1152 /Glusterfsd
[e -mail protetto]:~ #

[email protetta]:~# netstat -tap | Grep Glusterfsd
TCP 0 0*:24009*:*Ascolta 1311 /Glusterfsd
TCP 0 0 localhost.localdom:1018 localhost.localdo:24007 stabilito 1311 /glusterfsd
[e -mail protetto]:~ #

[email protetta]:~# netstat -tap | Grep Glusterfsd
TCP 0 0*:24009*:*Ascolta 1297 /Glusterfsd
TCP 0 0 LocalHost.Localdom:1019 LocalHost.Localdo:24007 IMBORTANDO 1297 /GLUSTERFSD
[e -mail protetto]:~ #

Ora torniamo a server1.example.com:

server1.example.com:

Puoi controllare lo stato del volume con il comando

gluster volume info
[email protected]:~# gluster volume info

Nome volume:testvol
Tipo:Stripe
Stato:avviato
Numero di mattoni:4
Tipo di trasporto:tcp
Mattoni:
Brick1:server1. example.com:/data
Brick2:server2.example.com:/data
Brick3:server3.example.com:/data
Brick4:server4.example.com:/data
[email protetta]:~#

Per impostazione predefinita, tutti i client possono connettersi al volume. Se desideri concedere l'accesso solo a client1.example.com (=192.168.0.104), esegui:

gluster volume set testvol auth.allow 192.168.0.104

Si noti che è possibile utilizzare caratteri jolly per gli indirizzi IP (come 192.168.*) e che è possibile specificare più indirizzi IP separati da virgole (es. 192.168.0.104,192.168.0.105).

Le informazioni sul volume dovrebbero ora mostrare lo stato aggiornato:

gluster volume info
[email protected]:~# gluster volume info

Nome volume:testvol
Tipo:Stripe
Stato:avviato
Numero di mattoni:4
Tipo di trasporto:tcp
Mattoni:
Brick1:server1. example.com:/data
Brick2:server2.example.com:/data
Brick3:server3.example.com:/data
Brick4:server4.example.com:/data
Opzioni riconfigurate:
auth.allow:192.168.0.104
[email protetta]:~#

3 Configurazione del client GlusterFS

client1.example.com:

Sul client, possiamo installare il client GlusterFS come segue:

apt-get install glusterfs-client

Quindi creiamo la seguente directory:

mkdir /mnt/glusterfs

Questo è tutto! Ora possiamo montare il filesystem GlusterFS su /mnt/glusterfs con il seguente comando:

mount.glusterfs server1.example.com:/testvol /mnt/glusterfs

(Invece di server1.example.com puoi anche utilizzare server2.example.com o server3.example.com o server4.example.com nel comando precedente!)

Ora dovresti vedere la nuova condivisione negli output di...

mount

[email protetta]:~# mount
/dev/mapper/server5-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid, nodev)
sysfs su /sys tipo sysfs (rw,noexec,nosuid,nodev)
fusectl su /sys/fs/fuse/connections tipo fusectl (rw)
none su /sys/kernel /debug tipo debugfs (rw)
none su /sys/kernel/security tipo securityfs (rw)
udev su /dev tipo devtmpfs (rw,mode=0755)
devpts su /dev/ pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda1 on /boot type ext2 (rw)
server1.example.com:/testvol on /mnt/glusterfs digita fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
[email protected]:~#

... e...

df -h

[email protected]:~# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/server5-root
                      29G  1.1G   27G   4% /
ude 238M 4.0K 238m 1%/dev
TMPFS 99M 212K 99m 1%/RUN
Nessuno 5,0m 0 5,0m 0%/Run/Lock
Nessuno 247m 0 247m 0%/RUN/SHM
/dev/sda1             228M   24M  193M  11% /boot
server1.example.com:/testvol
                     116G  4.2G  106G   4% /mnt/glusterfs:
][email:
] ~#

Invece di montare manualmente la condivisione GlusterFS sul client, è possibile modificare /etc/fstab in modo che la condivisione venga montata automaticamente all'avvio del client.

Apri /etc/fstab e aggiungi la seguente riga:

vi /etc/fstab 
[...]
server1.example.com:/testvol /mnt/glusterfs glusterfs defaults,_netdev 0 0

(Di nuovo, invece di server1.example.com puoi anche usare server2.example.com o server3.example.com o server4.example.com!)

Per verificare se il tuo /etc/fstab modificato funziona, riavvia il client:

reboot 

Dopo il riavvio, dovresti trovare la condivisione negli output di...

df -h 

... e...

mount

4 Test

Ora creiamo un grande file di prova sulla condivisione GlusterFS:

client1.example.com:

dd if=/dev/zero of=/mnt/glusterfs/test.img bs=1024k count=1000
ls -l /mnt/glusterfs

[email protetta]:~# ls -l /mnt/glusterfs
total 1024032
-rw-r--r-- 1 radice radice 1048576000 2012-12-17 17:31 test.img
[email protetta]:~#

Ora controlliamo la directory /data su server1.example.com, server2.example.com, server3.example.com e server4.example.com. Dovresti vedere il file test.img su ogni nodo, ma con dimensioni diverse (a causa dello striping dei dati):

server1.example.com:

ls -l /data

[email protetta]:~# ls -l /data
totale 256008
-rw-r--r-- 1 radice radice 1045430272 2012-12-17 17:31 test.img
[email protetta]:~#

server2.example.com:

ls -l /data

[email protetta]:~# ls -l /data
totale 256008
-rw-r--r-- 1 radice radice 1046478848 2012-12-17 17:27 test.img
[email protetta]:~#

server3.example.com:

ls -l /data

[email protetta]:~# ls -l /data
totale 256008
-rw-r--r-- 1 radice radice 1047527424 2012-12-17 17:26 test.img
[email protetta]:~#

server4.example.com:

ls -l /data

[email protetta]:~# ls -l /data
totale 256008
-rw-r--r-- 1 radice radice 1048576000 2012-12-17 17:30 test.img
[email protetta]:~#

  • GlusterFS:http://www.gluster.org/
  • Documentazione di GlusterFS 3.2:http://download.gluster.com/pub/gluster/glusterfs/3.2/Documentation/AG/html/index.html
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. Archiviazione ad alta disponibilità con GlusterFS su Debian 8 - Mirroring su due server di archiviazione

  2. Archiviazione distribuita su quattro nodi di archiviazione con GlusterFS su Debian Lenny

  3. Archiviazione replicata distribuita su quattro nodi di archiviazione con GlusterFS su Debian Lenny

  4. Striping su quattro nodi di archiviazione con GlusterFS su Debian Lenny

  5. Archiviazione replicata distribuita su quattro nodi di archiviazione con GlusterFS su CentOS 5.4

Archiviazione ad alta disponibilità con GlusterFS su Ubuntu 18.04 LTS

Archiviazione distribuita su quattro nodi di archiviazione con GlusterFS 3.2.x su Ubuntu 12.10

Archiviazione replicata distribuita su quattro nodi di archiviazione con GlusterFS 3.2.x su Ubuntu 12.10

Replica automatica dei file (mirror) su due server di archiviazione con GlusterFS 3.2.x su Ubuntu 12.10

Archiviazione replicata distribuita su quattro nodi di archiviazione con GlusterFS su Fedora 12

Striping su quattro nodi di archiviazione con GlusterFS su Fedora 12