openhabian installation bzw. partition verkleinern

Moderatoren: seppy, udo1toni

Antworten
wise
Beiträge: 9
Registriert: 3. Nov 2020 13:26

openhabian installation bzw. partition verkleinern

Beitrag von wise »

Ich würde gerne einen Mirror meiner SD-Karte (64 GB) erstellen. Zu diesem Zweck habe ich einen SD-Card Reader mit einer weiteren SD-Karte angeschlossen (64 GB). Leider sagt mir openhabian-config, dass die SD-Karte für den Mirror zu klein ist.

Kann ich die bestehende Partition der openhabian-Installation ggf. verkleinern, bevor ich das Backup erstelle? Oder hat jmd. eine bessere Möglichkeit für einen Mirror?

Ich möchte im Anschluss auf OH3 upgraden, zuvor aber die bestehende Installation vollständig mirrorn.

Danke euch!

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: openhabian installation bzw. partition verkleinern

Beitrag von udo1toni »

Ich möchte bezweifeln, dass Du aus dem laufenden System heraus ein sauberes Image ziehen kannst. Das dürfte allenfalls gelingen, wenn die interne SD-Karte ReadOnly eingebunden ist. Das Größenproblem bleibt davon unberührt.

Das Verkleinern der Partition ist aus dem laufenden System heraus auch nicht möglich, schließlich handelt es sich zumindest bei der 2. Partition (das ist die, die Du verkleinern möchtest) um die Systempartition.

Du hast mehrere Möglichkeiten:
  1. Entweder, Du richtest auf einer SD-Karte (eine kleine reicht) ein Raspberry Pi OS oder etwas ähnliches ein und bootest den Pi von dieser Karte.
    1. Oder Du installierst ein GNU/Linux Deiner Wahl auf einem PC mit SD-Kartenleser und bootest den PC unter GNU/Linux (Manchmal hat man ja noch eine alte Kiste rumstehen).
    2. Alternativ kannst Du auch mit Dualboot arbeiten, was aber zumindest Gefahren mit sich bringt, das ist ja eine Installation auf Deinem Windows PC.
  2. Oder Du richtest auf Deinem Windows PC z.B. VMware Player ein (aktuell Workstation 16, für nicht-kommerzielle Zwecke kostenlos). Du kannst natürlich auch andere Virtualisierer nehmen, sie müssen es aber ermöglichen, USB-Hardware in die VM hereinzureichen. Da schließt z.B. HyperV aus.
    Anschließend richtest Du im Virtualisierer eine VM ein und installierst darin ein GNU/Linux Deiner Wahl. Danach bootest Du die VM und reichst den Card-Reader in die VM herein (Achtung! In VMware Player gibt es einen "Bug", wegen dem man leider die Text-Konfigurationsdatei händisch anpassen muss, um das zu ermöglichen. Ist aber keine große Sache, man muss es nur wissen...)
Ich empfehle immer die 3. Variante, weil sie flexibel ist und nichts kostet (außer Zeit natürlich).

Ab dieser Stelle ist das Vorgehen gleich:
  • Du steckst die openHAB-SD-Karte in den leeren Card-Reader.
  • Du rufst gparted auf und lässt die Systempartition verkleinern. 16 GByte sind gewöhnlich mehr als ausreichend, es sei denn, man hat zusätzlich Datenbanken eingerichtet und sammelt extrem viele Daten ein.
  • Optional: Du richtest hinter der Systempartition eine weitere Partition ein, welche Du für Daten verwenden kannst (z.B. Backups).
  • Du beendest gparted und entfernst die SD-Karte. (Achte darauf, dass die SD-Karte bereits geschlossen ist. gparted sollte das beim Beenden sicherstellen.)
Nun, da die Partition verkleinert ist, kannst Du eine 1:1 Kopie der ersten beiden Partitionen auf eine 2. SD-Karte ziehen. Auf dieser Karte kannst Du anschließend ebenfalls eine 3. Partition für Daten erstellen, falls Du das mit der Hauptkarte gemacht hast.

Für ein reines Image kannst Du Klonsoftware unter Windows nutzen. Oder Du nutzt eines der Linux Systeme (was dann natürlich voraussetzt, dass Du neben dem Betriebssystem zwei SD-Karten anschließen kannst, sprich, beim Pi bräuchtest Du einen 2. externen SD-Kartenleser.
Bei der PC- oder VM-Variante kannst Du hingegen das Image bequem auf einem anderen Datenträger zwischenspeichern :) so denn der Platz dafür ausreicht.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

wise
Beiträge: 9
Registriert: 3. Nov 2020 13:26

Re: openhabian installation bzw. partition verkleinern

Beitrag von wise »

Die Openhabian-Config erlaubt unter 50 "Backup/Restore" unter Punkt 53 "Setup SD mirroring" ein vollständigen Mirror der SD Karte. Die wollte ich nutzten, scheitere aber an unterschiedlich großen SD-Karten. Ich hatte in einem Video gesehen, dass sich damit ein openhabian mirror erstellen lässt, der sich dann problemlos im RasPi betreiben lässt. Bist du der Meinung, dass das nicht der Fall wäre?

Ich habe nun auf einem zweiten RasPi Raspberry OS & gparted installiert. Mit dem VNC Viewer greife ich auf den RasPi zu. Mit Hilfe des Card-Readers wird mir die SD-Karte mit openhabian in gparted nun auch angezeigt. Wenn ich die 2. Partition verkleinern möchte, zeigt mir gparted sowohl für die minimale als auch maximale Größe 60656 Mib an. Muss ich die Partition zuvor unmouten um sie resizen zu können? Kann ich das problemlos tun oder mache ich damit etwas kaputt?

Edith: Ich habe die Partition nun unmounted und dann verkleinert. Alles gut. Allerdings hat das nicht geholfen. Openhabian teilt mir weiterhin mit, dass die neue SD-Karte für den Mirror zu klein ist. Es schaut so aus, als würde openhabian ebenfalls ungenutzten Speicher der SD-Karte berücksichtigen.

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: openhabian installation bzw. partition verkleinern

Beitrag von udo1toni »

Die in openhabian-config eingebaute Mirror Funktion ist unflexibel. Sie kann nur den gesamten Datenträger klonen. Da SD-Karten immer leicht abweichende Größen haben, kommt es zum von Dir beschriebenen Problem. Man kann aber mit Bordmitteln auch einzelne Partitionen (und natürlich auch die Partitionstabelle) klonen.
Ich selbst nutze das nicht, ich erstelle meine Images über das Hostsystem (mein eopenHAB läuft in einer virtuellen Umgebung).

Grundsätzlich kann openhabian-config den Mirror nur aus dem laufenden System heraus erstellen. Das bedeutet, dass mindestens die zweite Partiition als Systempartition gemountet ist. Gewöhnlich findet das read/write statt, so dass man davon ausgehen muss, dass im Zeitfenster des Klonvorgangs eine unbestimmte Menge Dateien verändert wird. Wenn es ungünstig läuft, ist der Klon deshalb nicht mal bootfähig. Im günstigsten Fall hast Du keinerlei Probleme, aber zwischen diesen beiden Extremen ist alles möglich, vor allem zerschossene logs und Persistences. Die Dateien liegen ja nicht fix auf dem Datenträger und beim Klonen merkt sich das System nicht, welche Speicherbereiche bereits kopiert wurden, um dann direkt alle Schreibvorgänge auf dem Klon nachzuvollziehen.

Man könnte dieses Problem umgehen, indem man die SD-Karte mit LVM einrichtet. Der Logical Volume Manager bietet die Funktion des Snapshottings, das heißt, der Zustand der Partition wird eingefroren. Alle Schreibzugriffe erfolgen nun in einen separaten Bereich. Der Snapshot wird gesichert/geklont. Anschließend wird der Snapshot gelöscht. Dabei werden alle Schreibzugriffe nachgeholt, so ist anschließend nur noch eine "normale" Partition mit dem laufenden System vorhanden.

SD-Karten werden gewöhnlich nicht mit LVM eingerichtet, weil dabei ungleich mehr Schreibzugriffe erfolgen. Auch ist es gewöhnlich nicht notwendig, schließlich läuft meist ein embedded System von der SD-Karte und man benötigt kein Klonen aus dem laufenden System heraus.

Der korrekte Weg, einen Kloon zu erstellen ist also, das System komplett zu beenden und die Karte "extern" zu klonen (wobei mit "extern" natürlich nur gemeint ist, dass es sich um ein anderes als das auf der Karte installierte Betriebssystem handeln muss).

Das Größenproblem schlägt eigentlich immer zu, wenn der gesamte Datenträger geklont wird. Man kann lediglich vermeiden, dass dies negative Konsequenzen hat, in dem man den hinteren Bereich des Datenträgers ungenutzt lässt. So kann man z.B. die 2. Partition auf 14 GByte schrumpfen, das Abbild auf eine 16 GByte Karte klonen (manuell mit dd) und anschließend die Partitionstabelle des Klons reparieren. Die Einträge für die vorhandenen Partitionen bleiben ja gleich, lediglich der ungenutzte Teil ist kleiner.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

wise
Beiträge: 9
Registriert: 3. Nov 2020 13:26

Re: openhabian installation bzw. partition verkleinern

Beitrag von wise »

Ich vermute den den letzten von dir beschrieben Weg gehe ich gerade. Ich habe nun ein Image mit Win32 Disk Imager erstellt und schreibe es auf eine kleinere SD-Karte.

Womit "repariere" ich später die Partitionstabelle? kann ich das wieder mit gparted machen, indem ich den ungenutzen (dann kleineren) Teil der 2. Partition hinzufüge?

Edith: Mit Win32 Disk Manager und der vorherigen Verkleinerung der Partition hat das nun tatsächlich funktioniert. Ich habe nun ein bootfähiges Image auf einer kleineren SD-Karte. :D Weil ich jetzt in Übung bin, werde ich die kleinere SD-Karte nun erneut mirrorn. Die große SD-Karte kann ich dann für andere Dinge verwenden.

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: openhabian installation bzw. partition verkleinern

Beitrag von udo1toni »

:)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten