Dioptas (NAS)

Der Host Dioptas fungiert als dedizierter Fileserver auf der Basis von TrueNAS mit einer Nutzkapazität von ca. 14 Terabyte. Er vereint die Datensicherheit von ZFS, User und Berechtigungsverwaltung durch Active Directory und ACLs und verschiedene Share-Typen, darunter das universell kompatible SMB, mit einem intuitiven Web-Interface, das die Wartung erleichtert.


Features

  • hohe Datensicherheit
  • gute Performance
  • intuitive Administration
  • leichte Wartbarkeit
  • viel Datenspeicher
  • Datensicherheit
    • Hardwareebene
      • NAS-taugliche Festplatten: Details siehe Festplatten
      • Enterprise Festplatten-Controller: Details siehe Sata-Controller
      • ECC RAM: Fehler auf Bit-Ebene im Arbeitsspeicher werden automatisch erkannt und korrigiert
      • Superschnelle Logging-SSD: Schreibt 2GB/s mit einer Latenz unter 10µs hat -> siehe Ausfallsicherheit
    • Dateisystemebene: ZFS, das ausgereifteste Dateisystem für Festplattenpools
      • Festplattenpool: Alle Festplatten werden zu einem Pool zusammengefasst, verhalten sich also nach außen wie ein riesiger Datenträger.
        • Spiegelung: Jede Festplatte wird durch eine andere gespiegelt. Der Ausfall einer Platte hat keinen Datenverlust zur Folge. Wiederherstellungszeiten werden minimiert.
        • Striping: Siehe Performance
        • Hot-Spare: Eine Reserve-Platte steht bereit und springt sofort für eine ausgefallene Platte ein
        • Logging-Drive: Siehe Ausfallsicherheit
      • Datenkorrektur: ZFS korrigiert Datenfehler durch defekte Speicherblöcke, schleichende Datenkorruption, Lesefehler, Schreibfehler, usw.
        • Prüfsummen: Jeder Datenblock hat eine Prüfsumme. Beim Lesen, beim Schreiben und bei regelmäßigen Routineprüfungen (Scrubs) wird die gespeicherte Prüfsumme mit der aus den Daten errechneten verglichen. Sollte ein Fehler gefunden werden wird sofort korrigiert.
        • Bad Block Resilienz: Findet das System einen kaputten Datenblock beginnt es nicht zu stottern. Zuden verteilt es sicherheitshalber Metadaten über die ganze Festplatte. Überdies behebt ggf. es den Fehler dank der gespiegelten Platten.
      • Ausfallsicherheit: Was passiert bei Stromausfall oder System-Crash mit im Schreibvorgang befindlichen Daten?
        • Copy-on-Write: Wenn etwas geschrieben wird, dann an eine neue, freie Stelle. Erst bei erfolgreichem Schreiben kann der alte Speicherblock freigegeben werden. Es gibt daher auch bei Stromausfall keine halbgeschiebenen Blöcke.
        • Logging-SSD: Alle zum abspeichern eintreffenden Daten1 werden zusätzlich auf einer superschnellen SSD gespeichert. Bei einem Ausfall gehen dadurch keine im Flug befindlichen Daten verloren.
    • Betriebssystemebene: TrueNAS erlaubt es viele Aufgaben zu automatisieren.
      • Schrubbing: In fixen Intervallen werden alle Prüfsummen (siehe oben) geprüft.
      • SMART-Tests: Bei TrueNAS werden die Festplatten regelmäßigen geprüft um Ausfälle vorherzusagen
      • Backups: Mittels nächtlichem Rsync wird jede Veränderung des Datenbestands auf einen anderen Filesserver kopiert (Testsystem funktioniert, finaler Fileserver in Arbeit). Details siehe Artikel Backup-Strategie.
  • Performance
    • 10Gbit Ethernet: Extrem schnelle Netzwerkanbindung. Das Bottleneck ist das WLAN der Endgeräte.
    • Pufferspeicher:
      • Riesiger RAM als Cache: Dank der großen Menge vorhandenen Arbeitsspeichers kann ZFS derzeit knapp 47 Gigabyte an Daten gepuffert werden.
      • Intelligeneter Cache: Das System hält sowohl die meistbenutzten und als auch die zuletzt benutzten Daten im Cache vor um die Zugriffszeiten zu verringern.
    • Festplattenpool: Der Pool hat noch weitere Vorteile…
      • Striping: Dateien werden über alle Platten verteilt -> deutlich höhere Geschwindigkeiten als mit einer einzelnen Festplatte.
      • Logging-SSD: Dem Gerät, dass Daten an den Fileserver sendet kann bereits “grünes Licht” (also Daten erfolgreich gesichert) gegeben werden noch ehe die Daten die Festplatten erreichen, da die Daten1 bereits auf der Logging SSD sicher verwahrt sind (und zusätzlich auch im RAM).
  • Administration und Wartung
    • Web-Interface: TrueNAS bietet ein übersichtliches, intuitives Web-Interface für alle Einstellungen
    • User aus dem Active Directory: TrueNAS erlaubt das Nutzen von Usern und Zugangsdaten aus unserem zentralen Benutzerverwaltungssystem
    • Feingranulare Zugriffsberechtigungen über ACLs: per User, per Personengruppe, per Themenkreis. Diese können für jeden Order und jede Datei gesetzt werden. Details siehe Berechtigungsstrurktur.
    • Viele Netzwerkprotokolle: Unter anderem SMB, ein Standard, den fast alle Geräte heutzutage beherrschen. Anleitung siehe Netzwerkordner.
    • Hot-Swap für alle Festplatten: Das Gerät muss nicht heruntergefahren oder geöffnet werden um ausgefallene Festplatten auszutauschen.
  • Sonstiges
    • Snapshots: Speicherabbilder können erstellt werden ohne das System anhalten zu müssen oder Daten zu kopieren (Copy-on-Write).
    • 14 Terabyte Nutzkapazität

1 Synchron Writes. Einn Feature, dass sowohl Sender als auch Empfänger erzwingen können.

Genaue Informationen zu dem Dateisystem ZFS, auf dem das alles aufsetzt:

ZFS 25.7.2019 01:23 by Adrian Kowar Posted in: System-Software ZFS ist ein fortschrittliches, gleichzeitig bereits gut etabliertes Dateisystem, das gleichzeitig ein Datenträger-Management bereitstellt. Der Fokus dieses Dateisystems liegt ganz klar auf der Gewährleistung der Sicherheit… Weiterlesen

Zielsetzung

Wir brauchen generell einen gemeinsamen Datenspeicher im Haus Mauerseglerei für

  • betriebliche Daten
  • vereinsinterne Daten
  • Daten der IT
  • private Daten

Dies im hier etwas genauer aufgeschlüsselt:

Gemeinsamer Datenspeicher 21.11.2019 13:11 by Adrian Kowar Posted in: Service Ein Haufen Festplatten Im Verein Mauerseglerei werden Dateien, die wir gemeinsam benutzen, in gemeinsamen Datenspeichern gelagert. Kurzzusammenfassung für Anwender_innen aus der Mauerseglerei: Der Zugang zum aktuellen… Weiterlesen

In folgendem Artikel haben wir beschrieben, weshalb wir uns für dieses Konzept entschienden haben:

Self-hosted TrueNAS-Server 7.12.2020 17:21 by Adrian Kowar Posted in: Konzept Dieser Artikel behandelt Features, Einsatzzweck, Vor-/Nachteile eines selbst gehosteten TrueNAS-Fileservers und Anforderungen an einen solchen. Die Mauerseglerei verfügt über einen solchen in Form des Servers Dioptas-NAS.… Weiterlesen

Historie

  • 2017: Zunächst war dieses Gerät als Testgerät gedacht (Dioptas-PVE)
  • Danach habe ich versucht hier FreeNAS zu virtualisieren – mit mäßigem Erfolg
  • Schließlich habe ich beschlossen FreeNAS (Dioptas-FreeNAS) als dediziertes System laufen zu lassen. Im April 2019 habe ich den Server entsprechend adaptiert.
  • Seit Ende November 2020 läuft nun erfolgreich TrueNAS auf diesem Gerät.

Die weitere Geschichte wird hier gepflegt:

Dioptas (Server) 17.6.2019 07:53 by Adrian Kowar Posted in: Server Dioptas ist der Name eines Computers, als Server fungiert. Ich (Adrian) habe mir die Kiste ursprünglich als Test-Computer gekauft. Seine Rolle hat sich im Laufe der… Weiterlesen

Zugriff

Adresse

Für alle nachfolgenden Zugriffsmethoden braucht man eine Adresse.
Der Server ist unter folgenden Adressen erreichbar:

Netzwerkordner

Netzwerkordner 28.7.2019 23:16 by Adrian Kowar Posted in: Service Hierbei handelt es sich um eine Methode um auf unseren gemeinsamer Datenspeicher in der Mauerseglerei zuzugreifen. Du suchst nur nach der Anleitung? Springe hinunter zu den… Weiterlesen

Web-Interface

Das Web-Interface dient der Konfiguration des Fileservers. Für nicht-Admin-User gibt es hier keine nutzbaren Features. Dieses Interface ist kein Web-basierter File-Manager.
Eine der obigen Adressen in einen gängigen Webbrowser eingeben und schon gelangt man zur Eingabemaske.

SSH

TrueNAS hört auf Port 22. Man kann sich nicht als root anmelden, dein User muss sudo verwenden dürfen.

Hardware

  • 9 Festplatten zu je 4TB in Wechselschächten
  • 3 verschiedene SSDs optimiert für Betriebssystem, Logging und Performacnetests
  • Enterprise-Level Festplattencontroller
  • Netzwerkkarte mit 10Gbit/s
  • 64GB Arbeitsspeicher mit ECC (Fehlerkorrektur)
  • Quad-Core Prozessor mit bis zu 3,7GHz und 8 Threads

Details findest hier:

Dioptas (Host) 28.7.2019 15:06 by Adrian Kowar Posted in: Server-Host Dieser Artikel beschreibt den Server-Host "Dioptas", also das physikalsiche Gerät (die Hardware), das den Betrieb von Servern darauf ermöglicht. Derzeit beherbergt das Gerät einzig den Fileserver… Weiterlesen

Hier ein Paar Bilder von unserem Server:

Installation & Konfiguration

Komponenten im Host

Die Verfügbare Hardware ist im Artikel Dioptas (Host) beschrieben. Im Wesentlichen hat das Gerät 64GB Arbeitsspeicher, damit ZFS gut Daten puffern kann und Hot-Swap-Bays, für 9 Festplatten (HDD) im Format 3,5″ und für 1 SSD im Format 2,5″. Diese Hot-Swap-Bays dienen dazu, dass wir kaputte Datenträger rasch austauschen können bzw. im Falle eines Schadens am Host die Datenträger schnell in eine andere Maschine übersiedeln können. Die Datenträger sind alle mit SATA an das Mainboard bzw an einen SATA-Controller angebunden. Ferner habe ich noch eine kleine M.2 SSD am Mainboard installiert, die aufgrund ihrer enormen Geschwindigkeit (über 2GB/s lesen und 1GB/s schreiben) als Testmaterial und als Rangierbahnhof dienen soll. Außerdem gibt es in dem Gerät eine 10GbE Netzwerkkarte.

OS Installation

Die Installation erfolgte von einem USB-Stick, der als Installationsmedium diente, auf eine SSD mit Power-loss-protection (für ruhende Daten). Die Arbeitsgeschwindigkeit ist nicht von Bedeutung, da diese nur beim Boot-Vorgang zum Tragen kommt, nicht im laufenden Betrieb.

Bei der Installation selbst wurden keine nennenswerten Einstellungen vorgenommen.

OS-Einstellungen

Die IP-Adresse wird erst nach der Installation vergeben, vorzugsweise gleich über die Konsole. Hier habe ich ein neues VLAN-Interface „vlan100“ erstellt, damit das Gerät im Server-VLAN kommunizieren kann, ihm den Master „ix0“ (das ist der obere Anschluss der Netzwerkkarte) zugeteilt und die IP-Adresse 172.18.2.106 vergeben. Diese IP-Adresse wurde im Router so eingestellt, dass ein Zugriff auf diese mittels SMB aus allen User-VLANs im Haus und aus der DMZ heraus möglich ist. Die Konfiguration für das Ethernet-Interface ix0 (oder was am Anfang initialisiert wurde) habe ich gelöscht, damit es zu keien Konflikten kommen kann.

Außerdem setzt man hier das Default Routing aka Gateway auf 172.18.2.254 und den DNS ebenso.

Nun ist das System bereit und man kann über das Web-Interface darauf zugreifen.

  • Zeitzone: Vienna
  • Keyboard: German

ZFS-Pools und Datasets

hdd-pool

Als Pool wird ein Verband aus Datenträgern bezeichnet, die sich gegenüber zugreifenden Instanzen verhalten, als wäre es ein Datenträger. Der wichtigste Pool in diesem System ist der Festplattenpool, auf dem die Daten des Vereins, aber auch einzelner Gemeinschaftsmitglieder, Familien und Freunden als Speicherplatz zur Verfügung gestellt wird. Die Haus-IT wird sich bemühen die Daten so sicher als möglich zu verwahren, übernimmt allerdings keine Haftung. Dieser Pool, genannt „hdd-pool“ besteht aus folgenden Komponenten:

  • 1 Datenspeicher über den alle Daten gleichmäßig verteilt (Striping) werden um die Geschwindigkeit zu maximieren. Bestandteile:
    • 4 Paare aus gespiegelten Festplatten (Mirror). Fällt eine aus, dann hat die andere immer noch alle Informationen. Konkret sind das 8 WD Red Festplatten mit je 4TB Kapazität, die speziell für den Einsatz in einer NAS konzipiert sind. Die Kapazität einer Platte mit 4TB wurde so gewählt, dass das Resilvering (siehe ZFS) ca. 7 Stunden, also eine Nacht, dauert. Nutzkapazität gesamt etwa 14TB.
  • 1 SLOG-Device. Man könnte vereinfacht sagen, ein Schreibpuffer, was dem allerdings nicht gerecht. Details im Artikel ZFS. Das ist ein Datenträger, der den Inhalt aller synchronen Schreibprozesse aufbewahrt bis sie tatsächlich im Speicher-Pool abgelegt werden und daher erlaubt, dass das Antwort-„Acknwoledge“ des Schreibprozesses vorzeitig zurückgesendet wird. Nach außen hin wirkt der Pool daher viel zackiger. Das SLOG-Device ist eine Intel 900P die eine Schreiblatenz von nur 200µs hat.
  • 1 Hot Spare: Noch eine WD Red Platte mit 4TB die auf ihren Einsatz wartet, wenn es zum automatischen Resilvering kommen sollte.

nvme-pool

Ich habe noch einen zweiten Pool eingerichtet, der „nvme-pool“ heißt. Dieser dient wie erwähnt nur zu Performance-Tests und als Rangierbahnhof und besteht aus

  • 1 Datenspeicher aus 1 M.2 NVME-SSD SM951 von Samsung mit 256GB

Datasets

ZFS-Datasets sind Order, die ein bisschen mehr können. Datasets können auch in Datasets geschachtelt werden. Wichtig ist, dass wir bei jenen Datasets, die uns später als SMB-Shares dienen sollen auch den Typ SMB auswählen. An ZFS-Datasets habe ich im HPP-Pool folgendes angelegt:

  • group
    • Familie
      • <Nachnamen>
    • Server
      • Proxmox
        • smb
        • zvol
    • Thema
      • Mauerseglerei
  • user
    • home
    • manual
  • system
    • truenas
    • test
      • download
      • upload
      • backup

Un im NVME-Pool:

  • test
    • download
    • upload
  • temp

Überall verwende ich default-einstellungen außer bei

  • Datasets, die SMB-Shares werden sollen. Da wird der Typ auf SMB gesetzt womit der Case-Typ automatisch auf insensitiv springt.
  • vm ist kein Dataset sondern ein zvol
  • home ist ein homes-Share, aber dazu später
  • temp ist ein guest-Share, auch hierzu später

User und Gruppen ACLs kann man erst nach der AD-Integration erstellen.

Active Directory Integration

CA Certifikat

Um sich erfolgreich mit dem zentralen Benutzerverwaltungssystem, bei uns ist das der Univention Corporate Server (UCS), verbinden zu können, müssen wir die Forderung von FreeNAS nach einem anerkannten SSL-Zertifikat erfüllen. Natürlich hat unser UCS ein selbstsigniertes Zertifikat. Um dieses FreeNAS schmackhaft zu machen muss man das CA-Zertifikat des UCS importieren.

Dazu verbindet man sich mit SSH mit dem UCS.

cat /etc/univention/ssl/ucsCA/CAcert.pem

Den Bereich

-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----

kopieren.

Dies kann nun im FreeNAS-Webinterface unter System > CAs > Add > Type > Import CA (wähle name, no private key, no passphrase) eingefügt werden.

DNS-Server

Es ist unumgänglich, dass die DNS-Setting stimmen, denn sonnst klappt das Kommando kinit, das vom WebGUI beim Beitritt zur AD-Domain aufgerufen wird, nicht. im WebGUI gehe man daher zur Rubrik Network und dort zu Global Configuration.

Hostname: dioptas-nas

Nameserver:

  • 172.18.2.104 (unser AD-Domaincontroller)
  • 172.17.2.254 (unser Router, falls der AD-DC mal offline ist)
  • 8.8.8.8 (Google-DNS, just in Case)

Ich habe auch die Domain auf IT.MAUERSEGLEREI.AT gesetzt.

Kerberos Realm

Gehe im FreeNAS GUI zu den Directory Services und darin zu Kerberos Realms. Datin gege auf „Add“ und auf „Advanced Mode“. Gib folgende Parameter ein und speichere dann:

  • Realm: IT.MAUERSEGLEREI.AT
  • KDC: 172.18.2.104
  • Admin Server: 172.18.2.104
  • Pasword Server: 172.18.2.104

Ich hege die Vermutung, dass dies bei korrekt konfiguriertem DNS-Server gar nicht nötig ist, aber die Info habe ich noch nicht verifiziert.

SMB Service

Gehe im FreeNAS GUI zu den Services und in der Zeile SMB auf Configure. Dort stelle die Workgroup um. Die Workgroup in der Mauerseglerei heißt „IT“.

Starte und Autostarte den SMB-Service.

Active Directory Service

Ich habe mir angewöhnt zuerst die Daten einzutragen, vorerst nicht zu enablen, dann die Daten zu checken, dann das Passwort eintragen und dann erst enablen. So passieren weniger Fehler. Außerdem notiere ich im Folgenden nur die aktiven neuen Eintragungen und Änderungen. Standardwerte werden belassen und nicht weiter erwähnt.

Als erstes klicke man mal auf „advanced mode“ und beginne mit den Eintragungen:

  • Domain Name: IT.MAUERSEGLEREI.AT
  • Domain Account Name: Administrator (dies ist der quasi-root aufm Univention Corporate Server)
  • Kerberos Realm: Select IT.MAUERSEGLEREI.AT

Save. Ich schließe den Vorgang noch nicht ab, damit ich die Settings zwischenzeitlich speichern kann, falls der Join schiefgeht.

  • Domain Account Passwort
  • Enable

Save. Nun ist ein Button „leave domain“ erschienen. Das ist ein gutes Zeichen. Wir sind in der Domain.

ACLs für User und Gruppen setzen

ACLs lassen sich im Web-Interface für Pools, Datasets und zVOLs erstellen. Ich spreche fortan von Datasets, meine allerdings alle drei.
Um ACLs für Datasets zu bearbeiten kehrt man zurück zum Menü Storage > Pools
Für jedes Dataset gibt es am Ende der Zeile das Symbol mit den drei Punkten um an das Kontextmenü zu gelangen. Hierin findet sich „Edit Permissions“.

Per default haben alle Datasets das klassische Benutzer(Owner)/Gruppe(Ownergroup)/Andere(Everyone) Berechtigungsschema, welches von ACLs abgelöst werden kann.
Wir verwenden ACLs nur bei Datasets, die wir sharen (z.B. via SMB) und deren Unterordnern.

Beim User (Owner) eines Datatsets belasse ich meistens root.
Bei dem Gruppen (Ownergroup) trage ich üblicherweise die Berechtigungsgruppe oder Usergruppe ein, die ich tatsächlich schreibend zugreifen lassen möchte. Dies spart mir einen zusätzlichen ACL Eintrag. Hier nicht auf das Hakerl bei „Apply Group“ vergessen. Wenn man für eine Gruppe die Ownergroup verwendet steht beim ACL-Item im Feld „Who“ der Wert „@group“, während, wenn man nicht die Ownergroup verwendet ist es einfach „Group“ und die Gruppe wird im Feld darunter ausgewählt.

Im Dropdown für User und Gruppen erscheinen nach erfolgreicher AD-Integration sowohl die lokalen User und Gruppen als auch jene von unserem zentralen Userverwaltungssystem. Letztere beginnen mit IT\… . Das Dropdown listet nicht alle User/Gruppen sofort, da die Liste längenlimitiert ist, daher beginne man zu tippen um die besten Matches zu erhalten.

SMB-Shares einrichten

Im Web-Interface unter Sharing werden die tatsächlichen Shares eingerichtet. Wir verwenden zwecks möglichst weitreichender Kompatibilität SBM-Shares. Wenn man einen Share Einrichtet werden einem anfänglich keine Einstellungsparameter angeboten, sondern nur Presets. Für viele Anwendungszwecke reichten die „Deault Settings“ aus. Will man manuelle Anpassungen an den Einstellungen vornehmen (z.B. um einen home-Share oder guest-Share zu errichten) ist es nötig auf „keine Defaults“ zu wechseln. Dann finden sich unter „Advanced“ alle verfügbaren settings.

Nachdem man die Shares erstellt hat kann man deren Berechtigungen einrichten. Dabei gibt es zwei Aspekte

  • Filesystem Permissions: Dies gilt für die Datasets zu den Shares, siehe oben
  • Share Permissions: Dies git für die SMB Permissions. Eingentlich reicht es aus mit den Permissions auf Datasets zu arbeiten. Diese Persmissions sind interessant, wenn man Access Based Enumeration verwendet (d.h. der Share wird beim Browsing nur dargestellt, wenn der browsende User Berechtigungen hat). Hierzu löscht man die SID raus, trägt als Domain ID ein und bei Gruppe ebendiese. Die korrekte SID wird dann beim Speichern ermittelt.

Wichtiger Hinweis: Die Shares funktionieren nur, wenn der Pfad bis dahin (alle Datasets in der Kette bis zu jenem das geshared wird) zumindest Lese und/oder (?) Ausführungsberechtigungen für „other“/“Everyone“/“Jeder“ haben.

Automatische Tasks

  • SMART Tests:
    Zur Tauglichkeitsprüfung laufen wöchentlich SMART Tests aller Datenträger. Jeden Sonntag um 1:00 nachts.
  • Scrub Tests:
    Prüfsummentestes aller Datenblöche aller Datenträger. Läuft jeden Samstag um 1:00nachts.
  • Snapshots:
    Speicherabbilder für die Wiederherstellung von alten Versionen aller veränderten Dateien im gesamten hdd-pool (d.h. von allen Datasets) werden erstellt. In der Testphase werden Snapshots 2 Wochen behalten, dann automatisch gelöscht. Läuft täglich um 0:00 nachts.
  • RSync:
    Backups werden via SSH und RSync an den Backupserver übertragen (siehe hier). Das Backupkonzept ist noch nicht fertig (siehe Backup-Strategie). Läuft täglich um 2:00 nachts.

Performance

Es sieht so aus, als könnten wir auf den HDD-Pool (wenn wir von der NVME große Dateien kopieren) mit rund 500MB/s konstant schreiben. Wenn man über das Netzwerk schreibt und der Cache zum Einsatz kommt kann man kurzftistig 1GB/s erreichen. Realistische Geschwindigkeiten für Uploads liegen bei konstanten 350MB/s. Für Downloads verhält es sich ähnlich, vielleicht etwas besser. Im Alltag erweist sich die 1Gbit/s (120MB/s) Netzwerkleitung in den Wohneinheiten bzw. das WLAN als Bottleneck. Was sich bei den Tests ebenfalls als Bottlenech kerausstellt ist, dass bei SSDs (auch bei NVME) dir hiohen Geschwindigkeiten nur solange erreicht werden, solange deren Cache nicht voll ist. Sobald der Cache gefüllt ist gibt es einen massiven Einbruch in der Geschwindigkeit und dann eine Erholung zu einem Steady State. Ebenfalls macht sich der Cache am ZFS-system bemerkbar. Beim zweiten mal Herunterladen ist die Geschwindigkeit fast am Maximum der Netzwerkgeschwindigkeit.

Die Probleme mit Network Congestion bei 10GBit-Network die wir bei FreeNAS 11 hatten (siehe Dioptas-FreeNAS) sind bei TrueNAS 12 verschwunden.

Zuletzt bearbeitet am 10. Juli 2022 von Adrian Kowar

Schreibe einen Kommentar