Mit Version RELEASE.2022-10-29T06-21-33Z vom 29. Oktober 2022 von MinIO wurde das zuvor bereits als deprecated markierte alte lokale Storage-Backend “fs” entfernt. Aktualisierte man nun MinIO konnte dieses mit Verweis darauf nicht mehr gestartet werden.

Man erhält folgende Fehlermeldung:

ERROR Unable to use the drive F:\S3: Drive F:\S3: found backend type fs, expected xl or xl-single: Invalid arguments specified

Leider gibt es keine direkte Möglichkeit den bisherigen genutzten Speicherplatz zu konvertieren. Unpassende Aussagen wie “don’t upgrade” wie man sie an manchen Stellen lesen konnte helfen da nicht weiter. Alleine schon wegen Fehlerbehebungen und der Sicherheit sollte MinIO auf dem aktuellen Stand gehalten werden.

Der bislang einzig offizielle Weg für den Wechsel besteht darin, den MinIO Client (mc) zu verwenden. In der Dokumentation wird darauf verwiesen das man mit mc mirror von der bisherigen veralteten Installation auf eine Neue umziehen kann. Der Nachteil dieser Methode liegt darin das man alle Benutzer, Buckets und Policies manuell neu anlegen muss. Der Vorteil dabei wiederum ist, das “mc mirror” ähnlich die rsync agiert, soll heißen: Man kann mehreren Sync-Durchläufe ausführen und dabei werden immer nur die Änderungen übertragen.

Dieses Verhalten bietet die Möglichkeit, das man zunächst eine Erst-Synchronisation durchführt und zum angedachten Wechsel-Termin dann nur noch die Änderungen abgleichen muss.

Genau solch eine Umstellung wurde kürzlich auf einem stand-alone/single-node Server unter Windows Server 2019 durchgeführt. Es stand ausreichend Speicherplatz zur Verfügung, das auf dem Storage wie gehabt zunächst die alte Version weiterlaufen konnte, während parallel hierzu eine zweite MinIO-Instanz (mit anderen Ports, beispielsweise 10000 und 10001 und anderem Speicherpfad) gestartet wurde um dann die Daten der Buckets mittels des MinIO Clients zu übernehmen:

mc alias set alias oldsrv http://localhost:9000 <ACCESS_KEY> <SECRET_KEY>
mc alias set alias newsrv http://localhost:10000 <ACCESS_KEY> <SECRET_KEY>

mc mirror oldsrv/<bucket>/<subfolder> newsrv/<bucket>/<subfolder>

Das Ganze hat bei mehreren Terrabyte an Daten eine Woche gedauert, wobei die meiste Zeit für die Erst-Synchronisation benötigt wurde. Der finale Abgleich, das Beenden der bisherigen MinIO-Instanz, das Ersetzen der mino.exe und anpassen des Pfads dauerte dann nur ein paar Minuten.

Nach dem Wechsel auf die neue MinIO-Version wurden die Daten geprüft, in der Hauptsache liegen auf diesem Server restic-Repositories die relativ leicht auf Konsistenz abgeklopft werden können.

Einzig seltsam war ein Bucket, in dem zwei 7-Zip-Archive abgelegt waren und aus denen “mc mirror” irgendwelche Ordner mit vielen kryptisch-anmutenden Dateien erzeugt hat. Der Einfachheit halber wurde dieses Bucket bereinigt und die Archive neu abgespeichert.

Ansonsten ist bislang nichts weiter aufgefallen.