Unerwartete Probleme bei der Software Raid5 Erweiterung

vorhergehende Artikel in: Linux
01.05.2024

Ich bin an die Grenzen meiner Storagelösung gestoßen - es musste mehr Platz her...

Die Storagelösung bestand aus einem dedizierten Gehäuse mit 4 hot-swappable 3,5-Zoll Festplatteneinschüben. Darin war ein Mikro-ATX-Board versteckt, das ich mit einem relativen Standard-Linux betreibe. Die Platten hatte ich mittels Software-Raid zu einem Raid5 zusammengefasst und auf diesem daraus resultierenden Device ein LVM-Setup erstellt. Zugriff erfolgt meist per sshfs, seltener mittels Samba (CIFS). Weitere Interfaces sind nicht aktiviert.

Nachdem ich an die Grenzen der Speicherkapazität stieß, überlegte ich, wie ich diese erweitern könnte. Es wäre möglich gewesen, größere Platten einzubauen, aber da dies bedeutet hätte, alle vier Platten tauschen zu müssen und damit die Überwindung eines nicht unerheblichen Anschaffungswiderstandes einhergegangen wäre - nicht zu reden von der Tatsache, dass ich nur ungern funktionierende Hardware entsorge - erschien diese Option nicht als erste Wahl. Zweite Option war die Konfiguration und der Bau eines komplett neuen Rechners. Diese Option erwog ich vor allem in der Zeit der RMA bei Crucial - wäre es mit dem Umtausch nichts geworden, hätte ich schweren Herzens meinen Dockerserver beerdigt und einen Server für Docker- als auch Storagezwecke geschaffen.

Die Ersatzspeichermodule kamen aber nach über 2 Monaten doch noch an und so entschied ich mich dafür, ein geräumiges Gehäuse für mindestens 6 Platten und ein neues Netzteil anzuschaffen. Da ich die Speicherkapazität erhähen wollte kam dazu noch eine neue Platte und - da das Mainboard extra für das damalige NAS angeschafft wurde, enthielt es nur Konnektoren für 4 Platten - eine Interfacekarte mit weiteren Sata-Anschlüssen, die der einzige PCIe-Slot des Mainboards aufnehmen konnte. So bin ich immer noch flexibel genug, später auf ein schnelleres Mainboard umzusteigen, habe aber auch mein unmittelbares Ziel erreicht.

Nachdem die Hardware endlich vollständig eingetroffen war, konnte es an den Umbau gehen. Der eigentliche Vorgang der Verpflanzung der alten Komponenten in das neue Gehäuse war erfreulich unkompliziert. Nun ging es an das Hinzufügen der neuen Platte.

Nach dem Hinzufügen ist die Platte zunächst einmal als "Spare" gekennzeichnet. Man muss sie noch aktivieren, was ein reshape des Raid-Verbunds auslöst. Wer das schon einmal versucht hat, wird wissen, dass das einen deutlich messbaren Zeitraum lang dauert - bei mir waren es tatsächlich deutlich über 24 Stunden.

Es existieren im Internet natürlich viele Tipps, wie man diesen Prozess beschleunigen kann. Allerdings sollte man beachten, dass man den Wert dev.raid.speed_limit_min nicht zu hoch einstellt - damit kann man dafür sorgen, dass der Rechner nur noch mit dem Raid beschäftigt ist und man es nicht mehr nutzen kann. Wer also so wie ich nebenher ein paar Filme ansehen möchte, die auf dem Raid gespeichert sind, sollte diesen Wert nicht zu hoch einstellen. Bei mir war das Raid nicht mehr benutzbar, wenn ich hier 50000 angab. Bei einem Wert von 10000 hingegen konnte ich ganz normal damit arbeiten - wenn auch nicht bei voller Geschwindigkeit. Wichtig ist hier der Wert dev.raid.speed_limit_max - den nämlich versucht das System immer dann zu erreichen, wenn keine andere IO-Last mit höherer Priorität da ist.

Danach kann man - in meinem Fall - die neue Speicherkapazität auf die vorhandenen logical volumes verteilen oder neue anlegen - ganz nach Bedarf. In der Zwischenzeit hatte ich Gelegenheit, die Telegraf-Konfiguration entsprechend abzuändern, sodass das Monitoring in Grafana auch mit der neuen Platte funktionierte.

Dadurch stellte ich auch ein sehr seltsames Phänomen fest: nämlich, dass meine Platten nicht mehr in den Standby-Modus gingen, nachdem die neue Platte integriert war. Der Grund dafür war ein spezieller Modus für EXT4-Dateisysteme, die nicht mehr alle INodes sofort allozieren, sondern dies während des laufenden Betriebs nach und nach tun. Dadurch wird ständig in kurzen Abständen auf die Platten geschrieben, die dadurch natürlich nicht in Standby-Modus gehen können... Ich fand die Lösung dafür natürlich auch im Internet!

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Fährnisse des Buildprozesses unter Windows

    17.07.2019

    Nachdem ich begonnen hatte, mich mit der Beschleunigung der Berechnung des Mandelbrot-Fraktals unter Zuhilfenahme der Shadereinheiten in Graphikkarten zu beschäftigen und erste Erfolge feiern konnte, wollte ich das mal auf einer richtigen Graphikkarte ausprobieren...

    Weiterlesen...

Neueste Artikel

  • Datenvalidierung UTF8 mit BiDi-Steuerzeichen (TrojanSource 2.0)

    Ich bin heute nochmal inspiriert worden, weiter über die Trojan Source Vulnerability nachzudenken. Meiner Meinung nach bestehen hier noch Probleme - speziell bei Nutzereingaben oder Daten, die über externe Schnittstellen ampfangen werden.

    Weiterlesen...
  • OpenStreetMap Navi als Docker-Container

    Ich habe die auf OpenStreetMap basierende OpenSource Navigationslösung Graphhopper in einen Docker-Container gepackt und als neuestes Mitglied in meinem Docker-Zoo willkommen geheißen.

    Weiterlesen...
  • SQL-Aggregatfunktionen in SQLite als BeanShell-Scripts

    Ich habe neulich über eine Möglichkeit berichtet, SQLite mittels der sQLshell und Beanshell-Skripten um SQL-Funktionen zu erweitern. In diesem Artikel versprach ich auch, über eine solche Möglichkeit für Aggregatfunktionen zu berichten.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.