Software > Speichermanagement

AnswerBook NonReloc Object Files of CD-ROM w/ UFS-Filesystem into TAR ?

(1/2) > >>

escimo:
Hallo zusammen,

ich bin aktuell (wieder) beschäftigt neben dem RAW-Abbild auch den Inhalt von CD-ROMs mit UFS-Dateisystem in TAR-Dateien zu übertragen. Beispielsweise sind auf der SPARCworks/SPARCompiler 2.0.1 CD-ROM im eingehängten Zustand zusammengefasst circa 300 MB an Dateien enthalten.


# uname -a
SunOS toosy 5.4 Generic_101945-64 sun4c sparc

# mount -F ufs -o ro,nosuid /dev/c0t6d0s2
(macht keinen Unterschied beim TAR, ob Slice 0 oder Slice 2)

# du -sk /cdrom
298926   /cdrom

Wenn man die Dateien dann bswp mit...

# mount -F nfs -o rw,nosuid,hard jumper:/export/share /mnt
# cd /cdrom && tar cvlBf /mnt/704-3386-RevA-V2N2.tar .

...bekommt am am Ende ein TAR mit einer Größe...

# du -sk 704-3386-12-RevA-V2N2.tar
461808  704-3386-12-RevA-V2N2.tar

Schon in der Vergangenheit ist aufgefallen, dass die Kopie um einiges größer ausfällt als die Quelle. Den Ursprung konnte ich nun ausmachen (Auszug):

$ find . \( -name "*.dir" -o -name "*.pag" \) -exec ls -gilds {} \;
(...)
52760 2336 -rw-r--r--   1 sys      14327808 Dec  2  1992 ./Solaris_2.0/NonReloc_SPROabsp1/_data/PASCALREF.pag
52761    8 -rw-r--r--   1 sys         4096 Dec  2  1992 ./Solaris_2.0/NonReloc_SPROabsp1/_data/PASCALREF.dir
52762 1520 -rw-r--r--   1 sys      7320576 Dec  2  1992 ./Solaris_2.0/NonReloc_SPROabsp1/_data/PASCALUG.pag
52763    8 -rw-r--r--   1 sys         4096 Dec  2  1992 ./Solaris_2.0/NonReloc_SPROabsp1/_data/PASCALUG.dir
(...)

Das scheinen Binärdateien für das AnswerBook1-Dokumentensystem zu sein.
Die Größe habe ich erwartet...

$ du -sk Solaris_2.0/NonReloc*
4256   Solaris_2.0/NonReloc_SPROabada
10807   Solaris_2.0/NonReloc_SPROabsp1
$ du -sk Solaris_1.0/SunPro_AB/_data
61711   Solaris_1.0/SunPro_AB/_data

Nachstehend die zusammengefasste Größe die letztlich im TAR auf dem Zielsystem (NFS-Mount) angekommen ist

bash-3.2# uname -a
SunOS jumper 5.10 Generic_147148-26 i86pc i386 i86pc

bash-3.2# du -sk Solaris_2.0/NonReloc*
34032   Solaris_2.0/NonReloc_SPROabada
80935   Solaris_2.0/NonReloc_SPROabsp1
bash-3.2# du -sk Solaris_1.0/SunPro_AB/_data
131839  Solaris_1.0/SunPro_AB/_data

Ist eine Mehrung von etwas um die 170 MB !!!
Quell- (CD-ROM) und Ziel-Filesystem (host jumper, Solaris 10) haben nicht die selbe Block-Size (512 vs 4096). Es könnte also auch damit zusammenhängen

Habt ihr Erfahrung mit diesen Dateien?
Wozu sind die gut?
Wie kan man diese Dateien 1:1 in das TAR bekommt, ohne "Zuwachs"?

Im Zweifel könnte ich die auslassen. Schöner wäre allerdings wenn es vollständig wäre.

Gruß, Stephan

Fleedwood:
Vermutlich sind die Dateien sparse, sprich da sind vielen Nullen im File für die auf dem Ursprungsfilesystem keine Blöcke alloziert sind. Beim Auspacken des tar files werden die idr. aber geschrieben und damit Blöcke alloziert. Der gnu-tar hat Support zum effektiveren Umgang mit sparse Files eingebaut, wäre also ein Versuch wert...

Thomas.

vab:
Hi Stephan!

Das tar-Format ist "geblockt".  Das bedeutet, daß die Dateien bis zum nächsten 512-Byte-Block aufgefüllt werden.   Wenn man viele kleine Dateien hat, kann das durchaus einiges ausmachen.  Aber auch bei größeren Dateien hat man im Mittel einen halben Block = 256 Byte "Verlust".  Kann man leicht selbst testen, indem man z.B. 10 Dateien mit Länge 1 Byte einpackt.  Bei mir kam grad unter Solaris 11.3 eine Gesamtgröße des tar-Files von 11 KB raus... ein Block tar-Header, je ein Block file-Header und ein Block Daten, dann am Ende noch ein "end"-Block, macht 22 Blöcke = 11 KB.

Ich glaube übrigens nicht, daß HSFS sparse files unterstützt.  Im Übrigen werden sparse files schon beim Einpacken "komplett" in das Archiv geschrieben.  Das Aufblähen passiert also schon beim Einpacken.  Gnu tar hat dafür "-S", das normale Solaris-tar kennt das leider nicht.

Gruß -- Volker

escimo:
Hallo Thomas, Hallo Volker,

danke für eure Empfehlung! Das klingt vielversprechend. :)

Ich versuche mein Glück mal mit gtar vom Zielhost (Solaris 10 in VM) mit der Sparse-Option.

Die CD-ROM nutzt UFS als Dateisystem, kein ISO9660 oder HSFS.

Gruß, Stephan

escimo:
# df -k | head -1 ; df -k | grep cdrom
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c0t6d0s0     554125  298926  255199    54%    /cdrom

Ergebnis:
bash-3.2# uname -a
SunOS jumper 5.10 Generic_147148-26 i86pc i386 i86pc
bash-3.2# mount -F nfs -o ro,nosuid,hard 192.168.60.2:/cdrom /mnt/cdrom
bash-3.2# cd /mnt/cdrom
bash-3.2# ls
Solaris_1.0  Solaris_2.0
bash-3.2# /usr/sfw/bin/gtar --version
tar (GNU tar) 1.26
bash-3.2# /usr/sfw/bin/gtar cvlBSf /export/share/V2N2.gtar .
./
./Solaris_1.0/
./Solaris_1.0/bin/
./Solaris_1.0/bin/Session.icon
./Solaris_1.0/bin/cdruninstall
./Solaris_1.0/bin/extract_unbundled
./Solaris_1.0/SC2.0.1_SunC++/
./Solaris_1.0/SC2.0.1_SunC++/SC2.0.1/
./Solaris_1.0/SC2.0.1_SunC++/SC2.0.1/README/
(...)
./Solaris_1.0/SunPro_AB/_data/PERFTUNAPP/files_to_print
NFS server 192.168.60.2 not responding still trying
NFS server 192.168.60.2 ok
./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/
./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/files_to_print
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/files_to_print: Read error at byte 0, while reading 391 bytes: No such device or address
./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/Credits
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/Credits: Read error at byte 0, while reading 6144 bytes: No such device or address
./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/Contents
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/Contents: Read error at byte 0, while reading 512 bytes: No such device or address
./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/Figures
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/Figures: Read error at byte 0, while reading 3584 bytes: No such device or address
./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/Preface
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/Preface: Read error at byte 0, while reading 3584 bytes: No such device or address
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/01.Evolution_of_C++: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/02.An_Introduction_to_C++: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/03.An_Overview_of_C++: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/04.Object-Oriented_Programming: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/05.Multiple_Inheritance: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/06.Parameterized_Types: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/07.Template_Instantiation__-__Overview: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/08.Template_Instantiation__-__User_Guide: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/09.Type-Safe_Linkage_for_C++: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/10.Access_Rules_for_C++: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/Index: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/11.Inline_Functions_in_C++: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/12.Close_as_Possible_to_C_But_No_Closer: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPREADINGS/Cover: Cannot stat: I/O error
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/SPARCWTR/: Cannot savedir: No such device or address
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/MAKETOOL/: Cannot savedir: No such device or address
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CLIBREF/: Cannot savedir: No such device or address
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CPPPG/: Cannot savedir: No such device or address
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/VTCUG/: Cannot savedir: No such device or address
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CODEMGRUG/: Cannot savedir: No such device or address
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/FORTRANREF/: Cannot savedir: No such device or address
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/DISTMAKEUG/: Cannot savedir: No such device or address
./Solaris_1.0/SunPro_AB/_data/list_of_books
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/list_of_books: Read error at byte 0, while reading 238 bytes: No such device or address
./Solaris_1.0/SunPro_AB/_data/FORTRANUG.pag
./Solaris_1.0/SunPro_AB/_data/FORTRANUG.dir
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/FORTRANUG.dir: Read error at byte 0, while reading 4096 bytes: No such device or address
./Solaris_1.0/SunPro_AB/_data/BROWSESC.pag
./Solaris_1.0/SunPro_AB/_data/BROWSESC.dir
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/BROWSESC.dir: Read error at byte 0, while reading 1024 bytes: No such device or address
./Solaris_1.0/SunPro_AB/_data/CTRANGUIDE.pag
./Solaris_1.0/SunPro_AB/_data/CTRANGUIDE.dir
/usr/sfw/bin/gtar: ./Solaris_1.0/SunPro_AB/_data/CTRANGUIDE.dir: Read error at byte 0, while reading 2048 bytes: No such device or address
./Solaris_1.0/SunPro_AB/_data/MERGE.pag
/usr/sfw/bin/gtar: /export/share/V2N2.gtar: Wrote only 2048 of 10240 bytes
/usr/sfw/bin/gtar: Error is not recoverable: exiting now

Mmm!? What's going on? - Konsolenmeldung Jumper (Sol10 Host)

bash-3.2# tail /var/adm/messages
(...)
Jul  8 17:44:14 jumper nfs: [ID 333984 kern.notice] NFS server 192.168.60.2 not responding still trying
Jul  8 17:44:14 jumper genunix: [ID 333984 kern.notice] NFS server 192.168.60.2 not responding still trying
Jul  8 17:44:37 jumper nfs: [ID 563706 kern.notice] NFS server 192.168.60.2 ok
Jul  8 17:44:37 jumper genunix: [ID 563706 kern.notice] NFS server 192.168.60.2 ok
Jul  8 17:47:38 jumper ufs: [ID 845546 kern.notice] NOTICE: alloc: /export/share: file system full

WHAT ??? 16GB mit Sparse voll? Unklar.
Das erfordert weitere Analysen beim Filesystem auf der CD-ROM.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln