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:
gluster volume rebalance $volumeName fix-layout start
gluster volume rebalance $volumeName migrate-data start
kein automatisches rebalancing für vorhandene Dateien: Hier muss der Admin den Prozess »rebalance« anschieben:
gluster volume rebalance $volumeName start
gluster volume rebalance $volumeName status
gluster volume rebalance $volumeName stop
Komponenten:
Bricks:
gluster volume replace-brick $volumeName OLD.server:/data NEW.server:/ersatz start
(„status“ zeigt Fortschritt)Metadaten bei GlusterFS
Objektorientierung bei GlusterFS:
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 |
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 |
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
# 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
# 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