Fazzke
Anmeldungsdatum: 28. Oktober 2021
Beiträge: 12
|
Hallo ihr Lieben alle zusammen 😊 Vielleicht kann mich jemand auf die Richtige Spur schubsen,
da ich seit Tagen am Suchen bin, wie ich mein
verschlüsseltes dd Image etwas verkleinern kann, damit es wieder auf jede 8GB CF Card passt 😬 Ich habe einen kleinen Ubuntu 18.04 Server mit SSH am Laufen und bei der Installation angegeben, dass das Laufwerk verschlüsselt werden soll.
Es gibt 3 Partitionen boot root und swap auf einer 8 GB Cf Karte im Igel Winestra.
Und das dd Image ist natürlich 8 GB groß, aber belegt sind nur ca. 3 GB. Wie es ohne diese Verschlüsselung gehen würde, habe ich glaube ich verstanden: Zum Schluss wird mit truncate das Ende abgeschnitten.
Aber wie geht das, wenn das Image per dd von einem verschlüsselten System stammt?
Kann mir da jemand einen Tipp geben? Mounten und bearbeiten?
Entschlüsseln und bearbeiten und wieder alles verschlüsseln?
Über loop devices? Ich danke euch schon mal 😀
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7657
|
Ein Dateisystem ist so groß wie es ist, egal wieviel davon belegt. Da kannst du nichts mit truncate abschneiden, ohne es kaputt zu machen. Wenn du auf der Schiene arbeiten willst, müsstest du es mit resize2fs schrumpfen. Wenn das dd Image eine Datei ist, und das Dateisystem sparse / punch_hole unterstützt, kannst du es mit losetup --find --show --partscan / cryptsetup open --allow-discards öffnen und dann mit fstrim den freien Speicher aufräumen. Das Image ist dann immer noch 8GB groß aber belegt nicht mehr den vollen Speicherplatz. Das Image hat dann Löcher dort wo das Dateisystem freien Speicherplatz getrimmt hat. 8GB ist ja nun nicht weltbewegend viel, wenn es darum geht diese Images häufig / in mehreren Ausführungen zu sichern, könntest du es auch mit borg oder sonst einem Deduplizierer versuchen. Solange sich nicht viele Daten ändern, werden die 8GB dann nur einmal voll belegt...
|
Fazzke
(Themenstarter)
Anmeldungsdatum: 28. Oktober 2021
Beiträge: 12
|
Danke dir 👍 Klar wird vor dem abschneiden die Partition verkleinert und dann der nicht zugewiesene Speicherplatz abgeschnitten.
So habe ich es zumindest verstanden bei nicht-verschlüsselten Images. Aber das bekomme ich mit meiner verschlüsselten .img Datei nicht hin, da ich durch die Verschlüsselung nicht genau angezeigt bekomme, wo die belegte Partition endet…
Ich bekomme immer nur die gesamte Größe des Images angezeigt. Oder beim Erstellen mit dd wird count verwendet um die Größe zu begrenzen. Aber das habe ich nicht hinbekommen (auch wegen der Verschlüsselung) 😐 Ist es noch wichtig dass es ein ext2-Filesystem ist?
Das hatte ich genommen um die CF Card zu schonen (Logs liegen in tempfs und swap ist Off). frostschutz schrieb: …mit fstrim den freien Speicher aufräumen. Das Image ist dann immer noch 8GB groß aber belegt nicht mehr den vollen Speicherplatz. Das Image hat dann Löcher dort wo das Dateisystem freien Speicherplatz getrimmt hat.
Würde es dann trotzdem auf eine 8GB Card passen, auch wenn sie produktionsbedingt ein paar Byte kleiner ist? Ich möchte nur eine Sicherung haben, und im Fall der Fälle die neue CF Card booten, da ich als Anfänger lange an der Einrichtung gesessen habe 😇
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7657
|
Hast du denn unpartitionierten Platz am Ende frei? sudo parted /dev/disk unit mib print free Dann ist das mit truncate schon möglich. Ich war jetzt davon ausgegangen, daß du freien Platz im Dateisystem meinst.
Würde es dann trotzdem auf eine 8GB Card passen, auch wenn sie produktionsbedingt ein paar Byte kleiner ist?
Aaah. Sorry, da hab ich dich ja völlig falsch verstanden. Mea culpa. Beim Partitionieren am Ende 16MB frei lassen dann hast du etwas Puffer. Das Image selber verkleinern brauchst deswegen gar nicht, es ist dann einfach egal, ob die paar Bytes zurück geschrieben werden konnten oder nicht. Ist ja eh nur unpartitionierter Speicher. Es sei denn du benutzt GPT Partitionen statt MSDOS. Da GPT auch ein Backup am Ende speichert, muss der GPT Header / Footer mit parted oder sonst einem Partitionierungsprogramm neu geschrieben werden, damit das GPT Backup wieder da ist. Aber es funktioniert erstmal auch so. Probleme gibts nur wenn die Partition selbst übers Ende hinausschießt. Das kann man nur vermeiden indem die Partition im Vorfeld klein genug gemacht wird. Ist sie jetzt schon zu groß musst du wieder mit resize2fs ran um das etwas zu verkleinern
|
Fazzke
(Themenstarter)
Anmeldungsdatum: 28. Oktober 2021
Beiträge: 12
|
frostschutz schrieb: Hast du denn unpartitionierten Platz am Ende frei?
Leider nein, im dd .img geht die Partition voll bis zum Ende, er hat das ja 1:1 ins Image geschrieben mit dd.
sudo parted /dev/disk unit mib print free Dann ist das mit truncate schon möglich. Ich war jetzt davon ausgegangen, daß du freien Platz im Dateisystem meinst.
Würde es dann trotzdem auf eine 8GB Card passen, auch wenn sie produktionsbedingt ein paar Byte kleiner ist?
Aaah. Sorry, da hab ich dich ja völlig falsch verstanden. Mea culpa.
Oder ich habe schlecht erklärt ☺ Beim Partitionieren am Ende 16MB frei lassen dann hast du etwas Puffer. Das Image selber verkleinern brauchst deswegen gar nicht
Ich habe ja eine .img Datei.
Kann ich da die Partition verkleinern, obwohl verschlüsselt?
Es sei denn du benutzt GPT Partitionen statt MSDOS
Ja ist MSDOS Danke für deinen Support 👍
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7657
|
Fazzke schrieb: Leider nein, im dd .img geht die Partition voll bis zum Ende, er hat das ja 1:1 ins Image geschrieben mit dd.
dd hat mit der Partitionierung nichts zu tun. Wenn du das am Gerät selbst nicht machen kannst, dann mit dem Image so: sudo losetup --find --show --read-only datei.img
sudo parted /dev/loopX unit mib print free Wenn da am Ende dann nichts frei ist... bleibt nur verkleinern. Um das Dateisystem im Image zu verkleinern, musst du entschlüsseln. # Loop Device anlegen
sudo losetup --find --show --partscan datei.img
# Entschlüsseln und Verkleinern
sudo cryptsetup open /dev/loopXpY cryptname
sudo resize2fs /dev/mapper/cryptname <wunschgröße>
sudo cryptsetup close cryptname
# Partition verkleinern
sudo parted /dev/loopX resizepart Y <wunschende>
# Loop Device aufräumen
sudo losetup --delete /dev/loopX
# Truncate
truncate -s <wunschende> datei.img Bei parted kann man leider keine Partitionsgröße angeben, nur den gewünschten Endsektor, daher musst du ende = start + größe selber ausrechnen. EDIT: Hierbei beachten daß der LUKS Header selbst auch noch Platz braucht (2MiB bei LUKS1, 16MiB bei LUKS2, nachzuschauen in cryptsetup luksDump) und die Partition also die Größe des Dateisystems plus Größe des LUKSHeaders groß sein muss. Die Partition darf nicht kleiner als das Dateisystem sein, sonst geht nichts mehr selbst wenn nur 1 Sektor fehlt. Wenn du mit parted nicht vertraut bist kannst du statt parted auch jedes andere Partitionierungsprogramm anwenden. So grob ist das die Richtung wie du das anhand des Images machen könntest. Ob es danach tatsächlich funktioniert, wäre dann noch zu testen. (Am besten von dem Image zuerst eine Kopie machen und darauf dann experimentieren,.)
|
Fazzke
(Themenstarter)
Anmeldungsdatum: 28. Oktober 2021
Beiträge: 12
|
Dann werde ich mich am Sonntag mal austoben 👍 Danke für Anleitung, das sollte ich hinbekommen. Werde dann berichten 😉
|
Fazzke
(Themenstarter)
Anmeldungsdatum: 28. Oktober 2021
Beiträge: 12
|
Ich habe nun das Dateisystem in der Imagedatei auf 4G geschrumpft und die Partition auf 6G.
Das Image ist 7.5G gross. Nun kopiere ich es gerade auf eine andere 7.5G CF Card. Mal sehen ob es dann booted... Etwas verwirrend war für mich das mit dem loop-Device, mappern, Crypt-Device... Das habe ich dann durch googlen und ausprobieren irgendwie hinbekommen. Mal sehen ob es läuft 😬 😇
|
Fazzke
(Themenstarter)
Anmeldungsdatum: 28. Oktober 2021
Beiträge: 12
|
cp: Fehler beim Schreiben von '/dev/sdd': Auf dem Gerät ist kein Speicherplatz mehr verfügbar Das kam nun zum Ende, war aber ja zu erwarten. Jetzt schon sehen ob das Dateisystem intakt ist kann ich nicht, oder?
|
dingsbums
Anmeldungsdatum: 13. November 2010
Beiträge: 3547
|
Hast du schon probiert, das Image beim Erzeugen on-th-fly zu komprimieren? Siehe https://www.marksanborn.net/howto/make-a-backup-image-of-your-hard-drive-with-dd/
|
Fazzke
(Themenstarter)
Anmeldungsdatum: 28. Oktober 2021
Beiträge: 12
|
Danke dir 😊 Ja hatte ich in der Tat, aber ich denke (wenn ich richtig liege), dass es hierbei nur um die Dateigröße auf dem Backup-Device geht. Das (mein) Problem wird dadurch nicht gelöst:
Wenn ich das Image dekomprimiere, und der neue Zieldatenträger
produktionsbedingt ein paar Byte kleiner ist als der Quelldatenträger
( zum Beispiel 8GB CF Card auf andere 8GB CF Card),
dann passt das Image auch wieder nicht drauf. Liege ich da richtig? Am besten wäre es wohl, am Server (8GB CF Card) die Root-Partition zu verkleinern,
z.B. auf 5GB und dann das Image zu erstellen.
Dann ist da am Ende ein unbelegter Teil von ca. 2.5GB
der beim Zurückschreiben einfach irgendwann unvollständig ist.
Oder man könnte den hinteren Teil truncaten um 1GB!?
Dann passt es auf jede 8GB Card. Wenn ich das alles so richtig verstanden habe 😬😊
|
dingsbums
Anmeldungsdatum: 13. November 2010
Beiträge: 3547
|
Fazzke schrieb: Wenn ich das Image dekomprimiere, und der neue Zieldatenträger
produktionsbedingt ein paar Byte kleiner ist als der Quelldatenträger
( zum Beispiel 8GB CF Card auf andere 8GB CF Card),
dann passt das Image auch wieder nicht drauf.
Ich hatte deinen Eingangsbeitrag so verstanden, daß dein Sicherungs-Zielmedium zu klein ist. Wenn die Größe des Wiederherstellungs-Zielmediums das Problem ist, bringt das Komprimieren des Images natürlich nichts.
Oder man könnte den hinteren Teil truncaten um 1GB
Dann ist aber evtl. der LUKS-Container unvollständig und damit defekt. Ausprobieren. Kann mir nicht vorstellen, daß das so funktioniert.
|
Fazzke
(Themenstarter)
Anmeldungsdatum: 28. Oktober 2021
Beiträge: 12
|
Hello again 😊 Also die geklonte CF Card mit verkleinerter Partition startet zwar, ABER mit Fehlern: WARNING: Device /dev/mapper/sda5_crypt has size of 14608352 sectors which is smaller than corresponding PV size of 14753792 sectors. Was device resized?
Oct 31 11:35:27 SERVER lvm[1039]: One or more devices used as PVs in VG SERVER-vg have changed sizes.
Oct 31 11:35:27 SERVER lvm[1039]: device-mapper: resume ioctl on (253:2) failed: Invalid argument
Oct 31 11:35:27 SERVER lvm[1039]: Unable to resume SERVER--vg-swap_1 (253:2)
Oct 31 11:35:27 SERVER lvm[1039]: 2 logical volume(s) in volume group "SERVER-vg" now active
Oct 31 11:35:27 SERVER lvm[1039]: SERVER-vg: autoactivation failed.
Oct 31 11:35:27 SERVER systemd[1]: lvm2-pvscan@253:0.service: Main process exited, code=exited, status=5/NOTINSTALLED
Oct 31 11:35:27 SERVER systemd[1]: lvm2-pvscan@253:0.service: Failed with result 'exit-code'.
Oct 31 11:35:27 SERVER systemd[1]: Failed to start LVM2 PV scan on device 253:0.
Oct 31 11:35:27 SERVER systemd[1]: dev-disk-by\x2duuid-0f0950a9\x2d398a\x2d4b1c\x2d9da5\x2d379af2e47227.device: Job dev-disk-by\x2duuid-0f0950a9\x2d398a\x2d4b1c\x2d9da5\x2d379af2e47227.device/start timed out.
Oct 31 11:35:27 SERVER systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-0f0950a9\x2d398a\x2d4b1c\x2d9da5\x2d379af2e47227.device.
Oct 31 11:35:27 SERVER systemd[1]: Dependency failed for Cryptography Setup for cryptswap1.
Oct 31 11:35:27 SERVER systemd[1]: Dependency failed for dev-mapper-cryptswap1.device.
Oct 31 11:35:27 SERVER systemd[1]: Dependency failed for /dev/mapper/cryptswap1.
Oct 31 11:35:27 SERVER systemd[1]: Dependency failed for Swap.
Oct 31 11:35:27 SERVER systemd[1]: swap.target: Job swap.target/start failed with result 'dependency'.
Oct 31 11:35:27 SERVER systemd[1]: dev-mapper-cryptswap1.swap: Job dev-mapper-cryptswap1.swap/start failed with result 'dependency'.
Oct 31 11:35:27 SERVER systemd[1]: dev-mapper-cryptswap1.device: Job dev-mapper-cryptswap1.device/start failed with result 'dependency'.
Oct 31 11:35:27 SERVER systemd[1]: Dependency failed for Local Encrypted Volumes.
Oct 31 11:35:27 SERVER systemd[1]: cryptsetup.target: Job cryptsetup.target/start failed with result 'dependency'.
Oct 31 11:35:27 SERVER systemd[1]: systemd-cryptsetup@cryptswap1.service: Job systemd-cryptsetup@cryptswap1.service/start failed with result 'dependency'.
Oct 31 11:35:27 SERVER systemd[1]: dev-disk-by\x2duuid-0f0950a9\x2d398a\x2d4b1c\x2d9da5\x2d379af2e47227.device: Job dev-disk-by\x2duuid-0f0950a9\x2d398a\x2d4b1c\x2d9da5\x2d379af2e47227.device/start failed with result 'timeout'.
Oct 31 11:45:19 SERVER systemd[1]: Dependency failed for Cryptography Setup for cryptswap1.
Oct 31 11:45:19 SERVER systemd[1]: Dependency failed for dev-mapper-cryptswap1.device.
Oct 31 11:45:19 SERVER systemd[1]: Dependency failed for /dev/mapper/cryptswap1.
Oct 31 11:45:19 SERVER systemd[1]: dev-mapper-cryptswap1.swap: Job dev-mapper-cryptswap1.swap/start failed with result 'dependency'.
Oct 31 11:45:19 SERVER systemd[1]: dev-mapper-cryptswap1.device: Job dev-mapper-cryptswap1.device/start failed with result 'dependency'.
Oct 31 11:45:19 SERVER systemd[1]: systemd-cryptsetup@cryptswap1.service: Job systemd-cryptsetup@cryptswap1.service/start failed with result 'dependency'.
Oct 31 11:45:19 SERVER systemd[1]: dev-disk-by\x2duuid-0f0950a9\x2d398a\x2d4b1c\x2d9da5\x2d379af2e47227.device: Job dev-disk-by\x2duuid-0f0950a9\x2d398a\x2d4b1c\x2d9da5\x2d379af2e47227.device/start failed with result 'timeout'.
Offenbar wurde etwas vom SWAP abgeschnitten beim Verkleinern...
Kann man die Partitionen nun im laufenden System "reorganisieren", dass das System weiß wie groß die nun sind? Es läuft nun aber immerhin seit 1 Std ☺ Danke euch 👍
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7657
|
Bislang war nur von Partitionen die Rede, daß da noch LVM im Spiel ist, war nicht erwähnt (okay, hätte ich erraten können, aber man kann auch nicht immer an alles denken). Das wär dann analog zu resize2fs mit lvresize --resizefs und pvresize zu verkleinern. Je nachdem wo die LVs im PV liegen auch mit pvmove --alloc=anywhere um den pvresize durchführen zu können. Es wird halt stets komplizierter da nachträglich nochmal was abzuschneiden. Wenn es nur am Swap hängt, kannst du das auch löschen und stattdessen mit einer Swapdatei arbeiten (sofern Swap überhaupt benötigt wird).
|
Fazzke
(Themenstarter)
Anmeldungsdatum: 28. Oktober 2021
Beiträge: 12
|
frostschutz schrieb: Bislang war nur von Partitionen die Rede, daß da noch LVM im Spiel ist, war nicht erwähnt (okay, hätte ich erraten können, aber man kann auch nicht immer an alles denken).
Sorry mir war nicht bewusst, dass das so entscheidend ist. Zudem kenne ich den Unterschied nicht wirklich 😬
Bin noch recht frisch in Linux. Dann bitte konkret die Frage:
Wie würdest Du vorgehen? Doch alles entschlüsselten und dann bearbeiten?
Oder am laufenden Original-System resizen?
Oder neu installieren mit angepassten Partitionsgrössen und am Ende 1GB nicht zugeordneten Speicher freilassen? Ich weiß nicht was der beste Weg wäre ? 😇 Es soll schon ohne Fehler laufen auf der geclonten Karte. Danke nochmals! 😊
|