PDA

View Full Version : cloop-2.02.1+eb.10 von mir geaendert



DirkS
06-14-2006, 10:10 AM
Hi nochmal,

ich hab mir das cloop-2.02.1+eb.10-Paket aus den Debian-Sourcen gegriffen und ein paar Änderungen dran vorgenommen, damit ich es unter einem SuSE-OS mit einem Vanilla-Kernel (2.6.16.20 von kernel.org) ausprobieren konnte.

Außerdem: Falls man ein Image mit einer Blockgröße komprimiert, durch die die Größe des Images nicht ohne Rest teilbar ist (z.B: Imagegröße: 96KB, Blockgröße: 64KB) und man extrahiert/entkomprimiert das Image wieder, dann ist es hinterher um den Rest größer (also, z.B. vorher: 96KB, nachher: 128KB bei einer Blockgröße von 64KB).
Mit meiner Änderung wird die Größe des letzten Blocks im Header eingetragen und beim Auspacken wird der letzte Block auf die ursprüngliche Größe gekürzt.
Diese Änderung ist auf-und abwärtskompatibel:
- Alte Cloop-images enthalten an der Stelle 0, das wird von der geänderten extract_fs-version als "volle Größe" interpretiert.
- Neue Images enthalten an der Stelle 0 oder etwas anderes, aber ein altes extract_fs betrachtet diese Stelle gar nicht.

Ausprobiert hab ich es mit einer 15GB großen Kopie von einer Festplatten-Partition (wurde auf 4GB komprimiert, mit 1GB RAM im Rechner) :
- 'create_compressed_fs -L -1 -B 64K hda2_orig.img hda2_7zip.cloop' (= Komprimieren mit 7zip-Algorithmus ) funktioniert.
- 'extract_compressed_fs hda2_7zip.cloop > hda2_.img' funktioniert auch, letzter Block wird gekürzt.
- 'cmp hda2_orig.img hda2_.img' findet keinen Unterschied
- 'losetup /dev/cloop1 /tmp/hda2_7zip.cloop; mount -o ro -t auto /dev/cloop1 /tmp/test1' erzeugt ein Bereich unter /tmp/test1, der in Ordnung aussieht. Ein 'diff' zwischen diesem und einem unkomprimiert gemounteten loop-image hab ich noch nicht gemacht.

Hintergrund:
Ich wollte etwas haben, dass es mir ermöglicht in Partition-Images, die ich zu Backup-Zwecken von Festplatten gezogen habe, reinzuschauen. D.h. ich kann mir die Filesysteme und deren Größe nicht aussuchen. Die Images werden komprimiert gespeichert, sonst verbrauchen sie zuviel Platz. Die Komprimiermethode kann ich mir aussuchen.

Bislang musste ich ein Image entpacken, reinschauen, und danach die entpackte Version wieder löschen.

Von Anfang an dachte ich, dass "cloop" einer der besten Kandidaten für eine bessere Lösung wäre, das Problem war nur, dass das komprimierte Image in den Speicher passen musste - bei 10-40GB kann man das vergessen. Ich wollte es schon selbst umschreiben, aber dann entdeckte ich, dass mir jemand zuvorgekommen war :) Beim Testen trat dann das "Problem" mit der Größenveränderung zutage, aber das war nicht schwer zu lösen.


Meine Fragen:
- Interessiert das überhaupt jemanden?
- Falls ja, was soll ich nun mit den Änderungen machen:
-- hier einen Patch posten?
-- den Patch an die Debian-Leute schicken?
-- beides?
-- irgendwas anderes, und zwar:....

Viele Grüße
Dirk