Inhaltsverzeichnis

GlusterFS

Features

  1. asynchrone Replikation (Geo-Replikation), rsync über SSH. serieller Prozess und leidet an den von »rsync« bekannten Skalierungsproblemen, root-Zugriff im Zielsystem. Ab v3.5 soll das anders gelöst sein
  2. Seit Version 3.3 beherrscht GlusterFS Quorum-Mechanismen
  3. Eigenschaft eines Volumes werden über Translatoren abgewickelt

Erweiterbarkeit bei GlusterFS

  1. GlusterFS-Mitglied muss neues Mitglied kontaktieren
  2. Replikation: die Anzahl der gewünschten Kopien setzt man per Volume fest.
  3. Einschränkungen: „Die Anzahl der Bricks muss zum Setup des Volumes passen, insbesondere, wenn Replikation im Spiel ist. Bei einem Kopierfaktor von 3 erlaubt GlusterFS nur eine Erweiterung um »n« „Ziegelsteine“, wenn »n« durch drei teilbar ist. Dies gilt auch beim Entfernen von Bricks.“

Achtung: Volume replizierend und verteilt? → Der Admin muss aufpassen, dass die Reihenfolge der Bricks stimmt. Sonst laufen Replikation und Verteilung kreuz und quer. Leider ist hier die Verwaltungsschnittstelle nicht sehr hilfreich. Ändert sich die Anzahl der Bricks, ändert sich auch die Partitionierung des Namensraums.

:!: wenn neue bricks hinzugekommen sind:

  1. Struktur des Volumes in den Konfigurationsdateien anpassen: gluster volume rebalance $volumeName fix-layout start
  2. Daten migrieren: gluster volume rebalance $volumeName migrate-data start

:!: kein automatisches rebalancing für vorhandene Dateien: Hier muss der Admin den Prozess »rebalance« anschieben:

Begriffe

Komponenten:

Bricks:

Metadaten bei GlusterFS

Objektorientierung bei GlusterFS:

  1. bis einschließlich Version 3.2 war GlusterFS eine Datei-basierte Storage-Lösung
  2. v. 3.3. UFO – Unified File and Object (Store)
  3. Version 3.4 ersetzte dann UFO durch G4O (GlusterFS fo(u)r OpenStack) und brauchte eine verbesserte RESTful-API

Zugriff: - native GlusterFS-Dateisystemtreiber (FUSE) kennt die Verteilung auf die Bricks - Beim Zugriff über den eigenen NFS-Server (nur v3, TCP) regelt GlusterFS das intern

Betriebsmodi Merkmale Eignung zu beachten
Standalone Storage ein einzelner Server, der das Dateisystem über das Netzwerk bereitstellt (ähnlich NFS)
Distributed Storage mehrere Server, die die Daten untereinander verteilt speichern und diese den Clients bereitstellen temporäre Daten ohne Ausfallsicherheit, da nur auf einem Server
Replicated Storage mehrere Server, die die Daten untereinander gespiegelt speichern und diese den Clients bereitstellen wichtige Daten, Anzahl der Repliken einstellbar, mehrere Server empfohlen: replica-Wert auf die Anzahl der Bricks zu setzen + verschiedene Server
Distributed Replicated Storage mehrere Server, die die Daten untereinander verteilt und gespiegelt speichern Kompromiss aus Datensicherheit und Geschwindigkeit
Striped Storage mehrere Server, bei welchen die Daten gestriped werden, um eine höhere Performance und Disk-IO-Bandbreite zu liefern temporäre Daten (hohes Ausfallrisiko, entspricht etwa raid 0) stripe-Wert sollte Anzahl der Bricks entsprechen +
Cloud/HPC Storage siehe Distributed Replicated Storage
NFS-like Standalone Storage Server-2 ähnlich Standalone Storage, es wird mehr als nur ein Dateisystem bereitgestellt
Aggregating Three Storage Servers with Unify drei Server, die ein einheitliches Dateisystem mittels Unify bereitstellen, ohne Redundanz
Gruppenzugehörigkeit der Translatoren
Gruppe Funktion
Storage Bestimmt das Verhalten der Datenablage im Backend-Dateisystem
Debug Schnittstelle zur Fehleranalyse und anderem Debugging
Cluster Grundstruktur der Storage-Lösung, wie Replikation oder Verteilung von Daten
Encryption Ver- und Entschlüsselung der gespeicherten Daten (noch nicht implementiert)
Protocol Kommunikation und Authentisierung für Client-Server und Server-Server
Performance Tuning-Parameter
Bindings Erweiterung zu anderen Sprachen, beispielsweise Python
Features Weitere Eigenschaften wie Locks oder Quotas
Scheduler Verteilung von neuen Schreiboperationen im GlusterFS-Verbund
System Schnittstelle zum System, insbesondere der Dateisystem-Zugriffskontrolle

Installation

Paket
glusterfs-client clustered file-system (client package)
glusterfs-client-dbgsym Debug symbols for glusterfs-client
glusterfs-common GlusterFS common libraries and translator modules
glusterfs-common-dbgsym Debug symbols for glusterfs-common
glusterfs-server clustered file-system (server package)
glusterfs-server-dbgsym debug symbols for glusterfs-server

Konfiguration

Firewalling/Ports

Volume einrichten

sudo apt install glusterfs-server
# debian9:
systemctl enable glusterfs-server.service
systemctl start glusterfs-server.service
# promox 6.4x / debian10
systemctl enable glusterd.service
systemctl start glusterd.service

Cluster zusammensetzen

# auf node1
gluster peer probe node2.domain.tld
gluster peer probe node3.domain.tld

Staus:

gluster peer status
# by-id, by-uuid, by-partlabel, ...
mkfs.xfs /dev/disk/by-partlabel/glusterlabel
# mount-point erstellen:
mkdir -p /mnt/gluster-brick1

Datenverzeichnis erzeugen (NACH mount!):

mkdir /mnt/gluster-brick1/data

Volume erzeugen (hier je 1 brick auf 3 nodes)

gluster volume create volumeName replica 3 transport tcp node1.domain.tld:/mnt/gluster-brick1/data node2.domain.tld:/mnt/gluster-brick2/data node3.domain.tld:/mnt/gluster-brick3/data
gluster volume start volumeName

manuell mounten

# on nodes:

mount -t glusterfs node1.domain.tld:/volumeName /local/mountpoint

in /etc/fstab:

node1.domain.tld:/volumeName /local/mountpoint glusterfs defaults,_netdev 0 0

https://stanislas.blog/2018/10/how-to-mount-local-glusterfs-volume-boot-fstab-systemd-fix/

!!! warned: the file must be named exactly for its target mount point. mounted at /mnt/backups → /etc/systemd/system/mnt-backups.mount.d

mkdir /etc/systemd/system/gluster-volumeName.mount.d

/etc/systemd/system/gluster-volumeName.mount.d/override.conf

 
[Unit]
After=glusterfs-server.service
Wants=glusterfs-server.service