Server/storage-ng: Unterschied zwischen den Versionen
Astro (Diskussion | Beiträge) |
Vater (Diskussion | Beiträge) |
||
(34 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
Storage-ng nutzt [http://www.ceph.com ceph] um einen verteilten Speicher anzubieten. | Storage-ng nutzt [http://www.ceph.com ceph] um einen verteilten Speicher anzubieten. | ||
== storage-ng.hq.c3d2.de == | == storage-ng.hq.c3d2.de == | ||
Zeile 11: | Zeile 12: | ||
* tftp | * tftp | ||
* TODO: webdav | * TODO: webdav | ||
Es eine virtuelle Machine im HA modus die direkt auf der Storage Hardware läuft. | Es eine virtuelle Machine im HA modus die direkt auf der Storage Hardware läuft. | ||
[https://github.com/c3d2/server-config/tree/master/nix/storage-ng Konfiguration] über nixos. | <s>[https://github.com/c3d2/server-config/tree/master/nix/storage-ng Konfiguration]</s> über nixos. | ||
== Tips == | == Tips == | ||
Zeile 30: | Zeile 29: | ||
Leider beim Schreiben spürbar langsamer. Wenn es schnell gehen soll in ein normales Verzeichnis schieben und dann auf storage im screen verschieben. | Leider beim Schreiben spürbar langsamer. Wenn es schnell gehen soll in ein normales Verzeichnis schieben und dann auf storage im screen verschieben. | ||
== | == CephFS == | ||
Ceph ist ein verteiltes Dateisystem über mehrere Nodes, daher spricht man auch von einem Ceph Cluster. | |||
Eine gute Einführung über die Grundlagen und Architektur von CephFS erhält man unter [https://www.thomas-krenn.com/de/wiki/Ceph] | |||
[[Datei:ceph_basic_concepts_principles_architecture.png]] | |||
Es gibt 4 verschiedenen Zugriffswege auf den Ceph-Storage | |||
* radosgw | |||
* RADOS Block Device | |||
* CephFS | |||
* librados | |||
=== Dashboard === | |||
Um sich eine einfache Übersicht zu verschaffen sei auf das [http://server6.core.zentralwerk.org:8080/#/dashboard Ceph-Dashboard] verwiesen. | |||
Mit dem Nutzer k-ot einloggen. Das Dashboard bietet eine guten Überblick über alle involvierten Server und kann einem die Hosts, OSDs, Crush-Maps, Pools | |||
und viele weitere Details mit samt Konfiguration im Browser darstellen. | |||
=== Pools === | |||
Daten sind in unterschiedlichen Pools organisiert die unterschiedliche Charakteristiken besitzen. | |||
: <code lang=shell>rados lspools</code> | |||
: <code lang=shell>ceph osd lspools</code> | |||
{| class="wikitable" | {| class="wikitable" | ||
| Name | |- | ||
! Name | |||
! Funktion | |||
! Hardware | |||
! Replikation | |||
|- | |- | ||
| vms | | vms | ||
Zeile 73: | Zeile 83: | ||
| SSD von allen Servern. | | SSD von allen Servern. | ||
| cephfs_metadata (mirror 2/3) | | cephfs_metadata (mirror 2/3) | ||
|- | |||
|} | |} | ||
Zeile 99: | Zeile 110: | ||
| osd, mon, mds | | osd, mon, mds | ||
| | | | ||
|- | |||
|} | |} | ||
== Konten für Clients == | |||
[[Datei:ceph-user-mgt.png|class=fullwidth]] | |||
[https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/5/html/administration_guide/ceph-user-management Die Dokumentation zu ''Red Hat Ceph Storage'' ist eine gute Dokumentation für die Verwaltung von Konten (und ihren Berechtigungen) für Ceph.] | |||
[https://docs.ceph.com/en/latest/rados/operations/user-management/ Aber es gibt auch die "normale" Dokumentation direkt für Ceph von Ceph.] | |||
Für die Verwendung - also auch den Zugriff - auf den Speicher (mit Ceph) braucht es einen Schlüsselbund. | |||
Erst einmal Anmelden auf einem Gerät, wo der Speicher (mit Ceph) liegt: | |||
: <code>ssh root@</code>… | |||
Dann gibt es zwei Möglichkeiten, einen komplizierten (legacy) Weg, der der Vollständigkeit halber hier aufgeführt wird | |||
und einen sehr einfachen Einzeiler, welcher erst ab neueren Ceph-Versionen zur Verfügung steht und somit auch im HQ. | |||
=== Einfach === | |||
Einen beispielhaften User ''fnord'' anlegen und den Zugriff auf eigene Dateien (''/fnord'') und auf ''/c3d2/files'' geben. | |||
: <code>ceph fs authorize cpool client.fnord /fnord rw /c3d2/files rw</code> | |||
<pre> | |||
[client.fnord] | |||
key = XXXXXXXXXXXXXXX | |||
</pre> | |||
Fortfahren mit der [[#Einrichtung des Clients]] | |||
Um dem User ''fnord'' wieder alle Rechte zu entziehen: | |||
: <code>ceph auth del client.fnord</code> | |||
=== Kompliziert === | |||
Erstellen von einem Schlüsselbund (für Ceph) für ein Konto mit einer beispielhaften Bezeichnung ''fnord'' | |||
: <code>ceph-authtool --create-keyring /etc/ceph/ceph.client.fnord.keyring --gen-key -n client.fnord</code> | |||
Ändern der Berechtigung für das beispielhafte Konto ''fnord'' | |||
:: beispielhafte, aber zweckmäßige, Berechtigungen für das Lesen und Schreiben im Pool (für Ceph) [[{{ns:100}}:Server/cluster01#Proxmox Ceph CephFS Pool cpool_*|cpool_]]data (dem Speicher (für Ceph) vom [[C3D2]]) | |||
: <code>ceph-authtool -n client.fnord --cap mds 'allow' --cap osd 'allow rw pool=cpool_data' --cap mon 'allow r' /etc/ceph/ceph.client.fnord.keyring</code> | |||
Importieren vom Schlüsselbund (für Ceph) für das beispielhafte Konto ''fnord'' | |||
: <code>ceph auth import -i /etc/ceph/ceph.client.fnord.keyring</code> | |||
Wir können uns in dem wir folgendes eingeben | |||
Anzeigen der Informationen für das Authentifizieren vom Client (für Ceph) für das beispielhafte Konto ''fnord'' | |||
:: … um sich vom Erfolg der Einrichtung zu überzeugen | |||
:: … samt dem geheimen Schlüssel | |||
:: … samt den Berechtigungen | |||
: <code>ceph auth get client.fnord</code> | |||
<pre> | |||
[client.fnord] | |||
key = XXXXXXXXXXXXXXXXXXXXX | |||
caps mds = "allow" | |||
caps mon = "allow r" | |||
caps osd = "allow rw pool=cpool_data" | |||
</pre> | |||
mds - wird benötigt wenn man mit einem mount befehl den CephFS mounten will (bei RADOS block device reicht OSD Zugriff) | |||
<!-- | |||
vater@: unterbrechung der überarbeitung | |||
!--> | |||
=== Einrichtung des Clients === | |||
Das secret sollte in eine Datei geschrieben werden und auf den Client verschoben werden | |||
: <code>ceph auth print-key client.fnord > /path/to/secret-file</code> | |||
Nun kann der Storage gemounted werden (Dafür muss man sich im Netz des C3D2 befinden): | |||
: <code>mount.ceph 172.20.77.5,172.20.77.6,172.20.77.8:/ /mnt/hq/ceph -o name=fnord,secretfile=/path/to/secret-file</code> | |||
; Siehe auch: | |||
* https://docs.ceph.com/en/mimic/start/quick-cephfs/#kernel-driver |
Aktuelle Version vom 11. Januar 2022, 08:44 Uhr
Storage-NG
Storage-ng nutzt ceph um einen verteilten Speicher anzubieten.
storage-ng.hq.c3d2.de
Um es einfach zu machen den storage zu erreichen, kann man storage-ng.hq.c3d2.de nutzten. Er bietet verschiedene Dienste an, um das darunter liegdende Dateisystem zu erreichen.
* http * samba * tftp * TODO: webdav
Es eine virtuelle Machine im HA modus die direkt auf der Storage Hardware läuft.
Konfiguration über nixos.
Tips
Der default storage pool für das cephfs ist auf mäßige Geschwindigkeit ausgelegt, nicht auf Effizienz. Um ein Verzeichnis effizient zu nutzen kann der archive pool genutzt werden:
setfattr -n ceph.dir.layout.pool -v cephfs_archive [folder]
Siehe auch Ceph Docu
Leider beim Schreiben spürbar langsamer. Wenn es schnell gehen soll in ein normales Verzeichnis schieben und dann auf storage im screen verschieben.
CephFS
Ceph ist ein verteiltes Dateisystem über mehrere Nodes, daher spricht man auch von einem Ceph Cluster.
Eine gute Einführung über die Grundlagen und Architektur von CephFS erhält man unter [1]
Es gibt 4 verschiedenen Zugriffswege auf den Ceph-Storage
- radosgw
- RADOS Block Device
- CephFS
- librados
Dashboard
Um sich eine einfache Übersicht zu verschaffen sei auf das Ceph-Dashboard verwiesen. Mit dem Nutzer k-ot einloggen. Das Dashboard bietet eine guten Überblick über alle involvierten Server und kann einem die Hosts, OSDs, Crush-Maps, Pools und viele weitere Details mit samt Konfiguration im Browser darstellen.
Pools
Daten sind in unterschiedlichen Pools organisiert die unterschiedliche Charakteristiken besitzen.
rados lspools
ceph osd lspools
Name | Funktion | Hardware | Replikation |
---|---|---|---|
vms | Backing store für VMS | z.Z. alle SAS und ~300 GB Platten | replicated_osd (soll replicated_rule) |
cephfs_data | Default storage fur cephfs | alle 2 TB+ Plaaten. | cephfs_data (mirror 1/2) |
cephfs_archive | Langsamer aber effizienter backing store | alle 2 TB+ Plaaten. | cephfs_archive (~raid5 k=2 m=1) |
cephfs_metadata | Metadata cephfs | SSD von allen Servern. | cephfs_metadata (mirror 2/3) |
Hardware Server
Alle Server des Verbundes nehmen proxmox als Betriebsystem.
Server | Hardware | Services | Bemerkungen |
server3.hq.c3d2.de | osd, mon, mds | Default für storage VM | |
server4.hq.c3d2.de | osd, mon | ||
server5.hq.c3d2.de | osd, mon, mds |
Konten für Clients
Die Dokumentation zu Red Hat Ceph Storage ist eine gute Dokumentation für die Verwaltung von Konten (und ihren Berechtigungen) für Ceph. Aber es gibt auch die "normale" Dokumentation direkt für Ceph von Ceph.
Für die Verwendung - also auch den Zugriff - auf den Speicher (mit Ceph) braucht es einen Schlüsselbund.
Erst einmal Anmelden auf einem Gerät, wo der Speicher (mit Ceph) liegt:
ssh root@
…
Dann gibt es zwei Möglichkeiten, einen komplizierten (legacy) Weg, der der Vollständigkeit halber hier aufgeführt wird und einen sehr einfachen Einzeiler, welcher erst ab neueren Ceph-Versionen zur Verfügung steht und somit auch im HQ.
Einfach
Einen beispielhaften User fnord anlegen und den Zugriff auf eigene Dateien (/fnord) und auf /c3d2/files geben.
ceph fs authorize cpool client.fnord /fnord rw /c3d2/files rw
[client.fnord] key = XXXXXXXXXXXXXXX
Fortfahren mit der #Einrichtung des Clients
Um dem User fnord wieder alle Rechte zu entziehen:
ceph auth del client.fnord
Kompliziert
Erstellen von einem Schlüsselbund (für Ceph) für ein Konto mit einer beispielhaften Bezeichnung fnord
ceph-authtool --create-keyring /etc/ceph/ceph.client.fnord.keyring --gen-key -n client.fnord
Ändern der Berechtigung für das beispielhafte Konto fnord
- beispielhafte, aber zweckmäßige, Berechtigungen für das Lesen und Schreiben im Pool (für Ceph) cpool_data (dem Speicher (für Ceph) vom C3D2)
ceph-authtool -n client.fnord --cap mds 'allow' --cap osd 'allow rw pool=cpool_data' --cap mon 'allow r' /etc/ceph/ceph.client.fnord.keyring
Importieren vom Schlüsselbund (für Ceph) für das beispielhafte Konto fnord
ceph auth import -i /etc/ceph/ceph.client.fnord.keyring
Wir können uns in dem wir folgendes eingeben
Anzeigen der Informationen für das Authentifizieren vom Client (für Ceph) für das beispielhafte Konto fnord
- … um sich vom Erfolg der Einrichtung zu überzeugen
- … samt dem geheimen Schlüssel
- … samt den Berechtigungen
ceph auth get client.fnord
[client.fnord] key = XXXXXXXXXXXXXXXXXXXXX caps mds = "allow" caps mon = "allow r" caps osd = "allow rw pool=cpool_data"
mds - wird benötigt wenn man mit einem mount befehl den CephFS mounten will (bei RADOS block device reicht OSD Zugriff)
Einrichtung des Clients
Das secret sollte in eine Datei geschrieben werden und auf den Client verschoben werden
ceph auth print-key client.fnord > /path/to/secret-file
Nun kann der Storage gemounted werden (Dafür muss man sich im Netz des C3D2 befinden):
mount.ceph 172.20.77.5,172.20.77.6,172.20.77.8:/ /mnt/hq/ceph -o name=fnord,secretfile=/path/to/secret-file
- Siehe auch