[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Was ist euer beliebtes "Umzugsprogramm"? [PROBLEM!]



Gerhard Gaussling schrieb:
> und ich dachte, trotz meiner fast (immer noch :-( ) nicht
> vorhandenen  Shellkenntnisse das schon richtig verstanden zu haben
> und entsprechend abwandeln zu können.

Kein Vorwurf. Ist auch für mich hilfreich zu sehen, an welchen Stellen 
solche Tipps nicht ganz narrensicher sind oder schlecht funktionieren. 
Und zu guter letzt habe ich peinlicherweise genau den gleichen Fehler 
gemacht und etwas gewohntes mal noch ein klein wenig abgeändert, in dem 
Glauben, dass es keine Nebenwirkungen hat.

Ich hoffe, Du bist so weise und testest die neue Partitionsinstallation 
erst ausführlich, bevor die alte wegfliegt und Du hast schon gemerkt, 
dass die absoluten symbolischen Links (z.B. in /etc/alternatives) im 
Eimer sind. Die Ursache ist die Option "S" bei tar. Ich dachte, auch 
diese (eher seltene) Eventualität noch mit abzufangen, wobei die 
Nebenwirkung ist, dass er absolute symbolische Links, die während des 
Kopierens nicht auflösbar sind, auf Null eindampft - böse Falle.

Nun, was sind eigentlich "sparse" Dateien?

Vielleicht dazu erst eine kurze Erklärung. Von alleine, wirst Du 
typischerweise keine auf Deinem System haben. Man kann bei Dateien, die 
zu grossen Teilen aus Nullwerten bestehen, diese Bereiche aussparen. 
Das heisst, es wird nur die Grösseninformation in den Verzeichnissen 
gespeichert. Eigentliche Datensektoren werden nicht belegt. Ein 
Beispiel:

dd if=/dev/zero of=testdatei bs=1k count=1 seek=1G

erzeugt eine Datei mit ca. 1 GiB (exakt 1GiB+1KiB). Das geht aber nicht 
nur überraschend schnell, sondern es wurde neben den Verzeichnis-
informationen auch tatsächlich nur 1KiB auf der Platte verbraucht. 
Durch den seek wird nur der letzte Datensektor wirklich geschrieben. 
Den wirklichen Platzverbrauch kann man mit "ls -lsa" sehen. Erst wenn 
weitere Daten innerhalb der Datei verändert werden, werden die dazu 
nötigen Sektoren angelegt.

Dieser Mechanismus ist hilfreich, wenn man Dateisystem-Images angelegt, 
die beispielsweise mit User-Mode-Linux verwendet werden. Dann befindet 
sich dessen Dateisystem innerhalb einer Datei, die im normalen 
Dateisystem des Hosts gespeichert wird. Nach der Grundinstallation 
eines Debian-Linux, wird innerhalb so einer Datei dann nur Platz für 
100 MiB benötigt. Auf der anderen Seite, will man noch Freiraum für die 
Zukunft haben. Also lege ich eine Containerdatei mit 1 GiB an. Und wenn 
ich zwei dutzend solcher Installationen habe, dann habe ich in den 
Verzeichnis Dateien im Umfang von 24 GiB stehen, die auf der Platte 
aber im Moment nur 2,4 GiB Platz verbrauchen. Und genau an diesem Punkt 
liegt das Problem mit dem Umkopieren begraben. Bei einem normalen 
Umkopieren, werden aus den gelöcherten sparse Dateien, ganz normale 
Dateien in voller Grösse, ausser man macht entsprechende Angaben.

Ich denke, dass man weiss, wenn man solche Dateien hat, weil Sie 
meistens absichtlich angelegt werden. Selbst zum nachträglichen Löchern 
gibt es Tools (Kommando "zum" - Paket "perforate").

Von daher widerufe ich mein Geschwätz von (vor-)gestern und denke, dass 
folgende Verfahren alle Eventualitäten abdeckt:

o Booten von Rettungsystem
o Verzeichnisse /neu und /alt in der Ramdisk anlegen 
o mount /dev/altbla /alt -r
o mkfs.bla /dev/neubla ; mount /dev/neubla /neu
o cp --sparse=always -av /alt/. /neu 2>errors | tee listing

Wobei das "--sparse=always" ein ziemlicher Durchsatzfresser (nicht 
getestet) sein dürfte. Wenn man also weiss, keine solchen Dateien in 
grossem Umfang zu haben, kann man sich's komplett sparen.

-- 
rainer@ellinger.de



Reply to: