MinIO — eine großartige Lösung, wenn man ein objektorientiertes Storage einfach und unkompliziert einrichten möchte. Die einfache Konfiguration, zahlreiche Plattformen und die gute Leistung haben sich im Bereich der Beliebtheit bewährt. Daher gab es für uns keinen anderen Weg, als vor einem Monat die Kompatibilität anzukündigen. . Einschließlich einer so wichtigen Funktion wie der Unveränderlichkeit. Tatsächlich gibt es in der Dokumentation einen gesamten Abschnitt, der unserer Integration gewidmet ist.
Deshalb werden wir heute darüber sprechen, wie man:
- MinIO sehr schnell einrichtet.
- MinIO etwas weniger schnell, aber deutlich qualitativ hochwertiger einrichtet.
- es als Archivtier für ein skalierbares Veeam SOBR-Repository verwendet.

Was bist du?
Eine kurze Einführung für diejenigen, die noch nicht mit MinIO zu tun hatten. Es handelt sich um ein Open-Source-Objektspeichersystem, das mit dem Amazon S3 API kompatibel ist. Es wird unter der Apache v2 Lizenz veröffentlicht und folgt der Philosophie des spartanischen Minimalismus.
Das bedeutet, dass es keine aufwändige GUI mit Dashboards, Grafiken und zahlreichen Menüs gibt. MinIO startet einfach seinen Server mit einem Befehl, auf dem man Daten speichern kann, wobei die gesamte Leistung des S3 API genutzt wird. Aber man muss anmerken, dass diese Einfachheit täuschend sein kann, wenn es um die verwendeten Ressourcen geht. RAM und CPU werden hervorragend beansprucht, aber dazu später mehr. Übrigens verwenden solche Kombis wie FreeNAS und TrueNAS unter der Haube genau MinIO.
Damit kann die Einführung beendet werden.
Die Einrichtung von MinIO geht sehr schnell
Die Einrichtung erfolgt so schnell, dass wir sie für Windows und Linux betrachten werden. Es gibt Optionen für Docker, Kubernetes und sogar für macOS, aber das Prinzip wird überall gleich sein.
Also, im Fall von Windows gehen wir auf die offizielle Website und laden die neueste Version herunter. Dort finden wir auch die Anleitung zur Ausführung:
minio.exe server F:Data
Und dort gibt es auch einen Link zu einer etwas ausführlicheren . Es macht keinen Sinn, den Anweisungen nicht zu glauben; also starten wir und erhalten eine ungefähr solche Antwort.
Das war's! Das Storage funktioniert und man kann anfangen, damit zu arbeiten. Ich habe nicht übertrieben, als ich sagte, dass MinIO Minimalismus ist und einfach funktioniert. Wenn man dem angebotenen Link beim Start folgt, besteht die maximale Funktionalität darin, einen Bucket zu erstellen. Und man kann anfangen, Daten zu schreiben.
Für die Liebhaber von Linux bleibt alles nicht weniger einfach. Die einfachste Anleitung:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /dataDas Ergebnis wird nicht von dem zuvor Gesehenen zu unterscheiden sein.
Die Konfiguration von MinIO ist etwas sinnvoller.
Wie wir verstehen, ist der vorherige Absatz ein Scherz zu Testzwecken. Und um ehrlich zu sein, wird MinIO bei uns sehr umfassend für Tests verwendet, dafür schämen wir uns nicht. Natürlich funktioniert es, aber es ist peinlich, es über Testumgebungen hinaus zu bringen. Deshalb nehmen wir uns eine Feile zur Hand und beginnen, es zu optimieren.
HTTPS
Der erste notwendige Schritt in Richtung Produktion ist die Verschlüsselung. Im Internet gibt es bereits eine Million und tausend Handbücher zur Hinzufügung von Zertifikaten zu MiniIO, aber der allgemeine Plan sieht folgendermaßen aus:
- Ein Zertifikat erstellen.
- Im Fall von Windows legen wir es in C:Users%User%.miniocerts.
- Im Fall von Linux in ${HOME}/.minio/certs.
- Den Server neu starten.
Das banale Let’s Encrypt ist langweilig und bereits überall beschrieben, also ist unser Weg der Weg eines Samurai. Daher laden wir im Fall von Windows herunter. Im Fall von Linux prüfen wir einfach, ob openssl installiert ist. Und wir machen etwas Konsolenmagie:
- Schlüssel erstellen: openssl ecparam -genkey -name prime256v1 | openssl ec -out private.key.
- Zertifikat aus dem Schlüssel erstellen: openssl req -new -x509 -days 3650 -key private.key -out public.crt.
- private.key und public.crt in den oben angegebenen Ordner kopieren.
- MinIO neu starten.
Wenn alles geklappt hat, erscheinen im Status etwa solche Zeilen.

MinIO Erasure Coding aktivieren.
Zuerst ein paar Worte zum Thema. Kurz gesagt: Dies ist ein softwarebasierter Schutz von Daten vor Beschädigung und Verlust. Ähnlich wie RAID, aber viel zuverlässiger. Wenn klassisches RAID6 zwei Laufwerke verlieren kann, übersteht MinIO ohne Probleme den Verlust der Hälfte. Eine genauere Beschreibung der Technologie finden Sie im Aber wenn man das Wesentliche betrachtet, dann ist es die Implementierung von Reed-Solomon-Codes: Alle Informationen werden in Form von Datenblöcken gespeichert, zu denen Paritätsblöcke gehören. Und es scheint, als wäre das alles schon mehrmals gemacht worden, aber es gibt ein wichtiges "aber": Wir können das Verhältnis der Paritätsblöcke zu den Datenblöcken für die gespeicherten Objekte explizit angeben.
Möchten Sie 1:1? Bitte sehr!
Möchten Sie 5:2? Kein Problem!
Eine sehr wichtige Funktion, wenn Sie mehrere Knoten gleichzeitig verwenden und Ihr eigenes Gleichgewicht zwischen maximaler Datensicherheit und eingesetzten Ressourcen finden möchten. Out of the box verwendet MinIO die Formel N/2 (wobei N die Gesamtanzahl der Festplatten ist), d.h. es verteilt Ihre Daten auf N/2 Datenträger und N/2 Paritätsdisketten. Um es einfach auszudrücken: Sie können die Hälfte der Festplatten verlieren und die Daten wiederherstellen. Dieses Verhältnis wird durch , das Ihnen erlaubt selbst zu wählen, was wichtiger ist: Zuverlässigkeit oder Kapazität.
Im Handbuch wird folgendes Beispiel gegeben: Angenommen, Sie haben eine Installation mit 16 Festplatten und möchten eine Datei mit einer Größe von 100 MB speichern. Wenn die Standardkonfiguration verwendet wird (8 Festplatten für Daten, 8 für Paritätsblöcke), nimmt die Datei letztendlich praktisch das Doppelte an Platz ein, also 200 MB. Bei einem Verhältnis von 10/6 wären 160 MB erforderlich. 14/2 — 114 MB.
Ein weiteres wichtiges Unterscheidungsmerkmal zu RAID: Im Falle eines Festplattenausfalls arbeitet MinIO auf Objektebene und stellt diese nacheinander wieder her, ohne den Betrieb des gesamten Systems zu stoppen. Während ein reguläres RAID gezwungen ist, das gesamte Volume wiederherzustellen, was unvorhersehbar lange dauert. Der Erinnerung des Autors nach hat ein Festplattenschrank, der nach dem Ausfall von zwei Festplatten eine Neuberechnung benötigte, anderthalb Wochen gebraucht. Das war sehr unangenehm.
Und ein wichtiger Hinweis: MinIO unterteilt alle Festplatten für Erasure Coding in Sets von 4 bis 16 Festplatten und nutzt die maximal mögliche Set-Größe. In Zukunft wird ein Informationselement nur innerhalb eines Sets gespeichert.
Das klingt alles sehr gut, aber wie kompliziert wird die Einrichtung sein? Lassen Sie uns nachsehen. Wir nehmen den Befehl zum Starten und listen einfach die Festplatten auf, auf denen der Speicher erstellt werden soll. Wenn alles korrekt gemacht wurde, sehen wir im Bericht die Anzahl der verwendeten Festplatten. Und ein Hinweis, dass es nicht gut ist, zur gleichen Zeit die Hälfte der Festplatten zu einem einzelnen Host hinzuzufügen, da dies zu Datenverlust führen kann.
c:minio>minio.exe server F: G: H: I: J: K:
Um den MinIO-Server zu verwalten und zu konfigurieren, benötigen wir einen Agenten, den Sie alles von der offiziellen Website herunterladen können.
Um nicht jedes Mal die Adresse und die Zugangsschlüssel einzutippen (und das ist auch unsicher), ist es praktisch, beim ersten Start sofort ein Alias nach der Formel mc alias set [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY] zu erstellen.
mc alias set veeamS3 https://172.17.32.52:9000 YOURS3ACCESSKEY YOURSECERTKEOder Sie können sofort Ihren Host hinzufügen:
mc config host add minio-veeam https://minio.jorgedelacruz.es YOURS3ACCESSKEY YOURSECERTKEYUnd dann erstellen wir einen immutable Bucket mit diesem schönen Befehl
mc mb --debug -l veeamS3/immutable
mc: PUT /immutable/ HTTP/1.1
Host: 172.17.32.52:9000
User-Agent: MinIO (windows; amd64) minio-go/v7.0.5 mc/2020-08-08T02:33:58Z
Content-Length: 0
Authorization: AWS4-HMAC-SHA256 Credential=minioadmin/20200819/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-bucket-object-lock-enabled;x-amz-content-sha256;x-amz-date, Signature=**REDACTED**
X-Amz-Bucket-Object-Lock-Enabled: true
X-Amz-Content-Sha256: UNSIGNED-PAYLOAD
X-Amz-Date: 20200819T092241Z
Accept-Encoding: gzip
mc: HTTP/1.1 200 OK
Content-Length: 0
Accept-Ranges: bytes
Content-Security-Policy: block-all-mixed-content
Date: Wed, 19 Aug 2020 09:22:42 GMT
Location: /immutable
Server: MinIO/RELEASE.2020-08-16T18-39-38Z
Vary: Origin
X-Amz-Request-Id: 162CA0F9A3A3AEA0
X-Xss-Protection: 1; mode=block
mc: Response Time: 253.0017ms—debug zeigt nicht nur die endgültige Nachricht, sondern auch detailliertere Informationen an.
-l Das bedeutet —with-lock, was immutable bedeutet.
Wenn wir jetzt zur Weboberfläche zurückkehren, wird unser neuer Bucket angezeigt.

Das ist alles für den Moment. Wir haben einen gesicherten Speicher erstellt und sind bereit, zur Integration mit Veeam überzugehen.
Wir können auch sicherstellen, dass alles einwandfrei funktioniert:
c:minio>mc admin info veeamS3
● 172.17.32.52:9000
Uptime: 32 Minuten
Version: 2020-08-16T18:39:38Z
Netzwerk: 1/1 OK
Laufwerke: 6/6 OK
0 B Verwendet, 1 Bucket, 0 Objekte
6 Laufwerke online, 0 Laufwerke offlineMinIO und Veeam
Achtung! Wenn Sie aus irgendeinem unglaublichen Grund über HTTP arbeiten möchten, erstellen Sie im Verzeichnis HKEY_LOCAL_MACHINESOFTWAREVeeamVeeam Backup and Replication einen DWORD-Schlüssel SOBRArchiveS3DisableTLS. Setzen Sie den Wert auf 1 und denken Sie daran, dass wir dieses Verhalten entschieden nicht unterstützen und niemandem empfehlen.
Achtung noch einmal! Wenn Sie aufgrund eines Missverständnisses weiterhin Windows 2008 R2 verwenden, erhalten Sie beim Versuch, MinIO mit Veeam zu verbinden, wahrscheinlich eine Fehlermeldung wie: Failed to establish connection to Amazon S3 endpoint. Dies kann mit dem offiziellen Patch von .
Nun, die Vorbereitungen sind abgeschlossen, lassen Sie uns die VBR-Oberfläche öffnen und zum Tab Backup-Infrastruktur wechseln, wo wir den Assistenten zum Hinzufügen eines neuen Repositories aufrufen.

Selbstverständlich interessiert uns die Object Storage, genauer gesagt die S3-kompatible. Im geöffneten Assistenten geben wir einen Namen ein und gehen die Schritte mit der Angabe der Adresse und des Kontos durch. Wenn erforderlich, vergessen Sie nicht, das Gateway anzugeben, über das die Anfragen an den Speicher weitergeleitet werden.

Danach wählen wir den Bucket, den Ordner aus und setzen das Häkchen bei "Make recent backups immutable". Oder wir lassen es weg. Aber da wir einen Speicher mit dieser Funktion erstellt haben, wäre es nachlässig, dies nicht zu nutzen.

Next > Finish und genießen Sie das Ergebnis.
Jetzt muss er als Capacity Tier zum SOBR-Repository hinzugefügt werden. Dazu erstellen wir entweder einen neuen oder bearbeiten einen bestehenden. Uns interessiert der Schritt Capacity Tier.

Hier müssen wir wählen, nach welchem Szenario wir arbeiten werden. Alle Optionen sind in einem anderen , gut beschrieben, daher möchte ich mich nicht wiederholen.
Nach Abschluss des Assistenten werden automatisch Aufgaben zum Kopieren oder Verschieben von Backups gestartet. Falls es jedoch nicht in Ihren Plänen liegt, sofort alle Systeme zu belasten, sollten Sie unbedingt die zulässigen Intervalle für die Arbeit über die Schaltfläche Window festlegen.

Und natürlich können auch separate Backup Copy-Aufgaben erstellt werden. Einige halten das für praktischer, da sie etwas transparenter und vorhersehbarer für den Benutzer sind, der sich nicht mit den Einzelheiten des Capacity Tiers befassen möchte. Und davon gibt es einige, also empfehle ich nochmals den entsprechenden Artikel über den obigen Link.
Und schließlich die Antwort auf die hinterhältige Frage: Was wird passieren, wenn man versucht, ein Backup aus dem Immutable-Speicher zu löschen?
Hier ist die Antwort:

Das ist alles für heute. Wie gewohnt, hier ist eine Liste nützlicher Themen zum Thema:
- Handbuch
- Beispiel zur Verwendung von .
- Allgemeines Handbuch zur Konfiguration .
- Strang auf unserem über S3-Speicher.
Quelle: habr.com
