Aus 4 KB werden exakt 4 GB

Post Reply
Message
Author
friedrich
Posts: 46
Joined: 29. Jan 2002 0:46

Aus 4 KB werden exakt 4 GB

#1 Post by friedrich »

Hallo,

ich habe ein Problem, für daß ich trotz intensiven suchens und nachfragens bei Bekannten immernoch keine Lösung gefunden habe. Und jetzt versuche ich mein Glück bei Euch ;o)

Ich habe auf einem Linux-Server (Kernel 2.2.19 + Sicherheitpatches) "gelegentlich" eine Datei - meistens niucht immer dieselbe sondern wahllos irgendeine -, die von "ls" plötzlich als 4GB groß angezeigt ist, obwohl Sie normalerweise nur einige KB groß sein sollte. Mit "du" hingegen wird mir statt 4GB der Wert von 4KB angezeigt (nein, ich habe mich nicht vertan. Hier z.B.:

--
# ls -kl default.htm_cmp_safari010_hbtn_a.gif
-rw-r--r-- 1 user user 4294967295 Jul 10 2000 default.htm_cmp_safari010_hbtn_a.gif
# du -k default.htm_cmp_safari010_hbtn_a.gif
4 default.htm_cmp_safari010_hbtn_a.gif
--

Ich habe mal spasseshalber die Datei versuch zu kopieren, der Server hat gerattert und geratter, ich habe dann nach mehreren Sekunden aufgehört und die Datei die ich angefangen hatte mit der kopie zu erstellen war schon ziug MB groß - es kann also nicht nur ein Anzeigefehler in ls sein.

Kann sich da jemand einen Reim darauf machen?

jensemann
Posts: 189
Joined: 08. Dec 2001 15:18
Location: Krefeld (obwohl mir Kölsches Bier lieber ist)
Contact:

Re: Aus 4 KB werden exakt 4 GB

#2 Post by jensemann »

Hi
Hört sich nach nem Dateisystem Fehler an. Hast du zufällig ReiserFS?
Mfg jensemann
Hilfe bei LFS Problemen: <a href="http://www.lfsforum.org" target="_blank"><!--auto-->http://www.lfsforum.org</a><!--auto-->

friedrich
Posts: 46
Joined: 29. Jan 2002 0:46

Re: Aus 4 KB werden exakt 4 GB

#3 Post by friedrich »

Hallo jensemann,

nein, ganz normales ext2-Filesystem. Da könnte das dann ja auch solch ein Fehler sein, nur ne Idee wie ich das "beheben" kann?

Jürgen

Re: Aus 4 KB werden exakt 4 GB

#4 Post by Jürgen »

Dafür gibbet IMHO "ckfs -e2fs"

Jürgen

friedrich
Posts: 46
Joined: 29. Jan 2002 0:46

Re: Aus 4 KB werden exakt 4 GB

#5 Post by friedrich »

"ckfs"? Ist das ein Synonym für fsck? Tja, genau das bringt ja nie einen Fehler.

Jochen

Re: Aus 4 KB werden exakt 4 GB

#6 Post by Jochen »

Klingt nach einem "sparse file". Die kann man (in C) einfach erzeugen: Datei öffnen, ein Byte reinschreiben, dann mittels lseek an die Position 1048576 (1 MB) springen und noch mal ein Byte schreiben. ls zeigt einem an, dass die Datei 1048577 Bytes gross wäre, df zeigt 2 belegte Blöcke - einen, um das erste Byte zu speichern, einen für das letzte. Kopiert man so eine Datei ohne Vorsichtsmassnahmen (wie die Option --sparse= beim cp), wird eine Datei angelegt, die tatsächlich den Platz belegt, wie sie ls bei der Quelldatei angibt, denn immer, wenn von einem Block gelesen wird, der in der Quelldatei gar nicht belegt ist, schickt das OS einfach einen Block voller Binär-Nullen. Und die werden tatsächlich in die Zieldatei geschrieben und belegen daher Platz.

Ein fsck beschwert sich auch nicht über "sparse files", da die vollkommen legal sind. (It's not a bug, it's a feature!)

Das wäre also meine Erklärung für das Verhalten. Wie es aber dazu kommt, dass solche Dateien bei Dir auftauchen - da bin ich überfragt. Vielleicht hilft Dir die Information über das Prinzip der Sache ja weiter.

Jochen

Petermann

Re: Aus 4 KB werden exakt 4 GB

#7 Post by Petermann »

Hallo zusammen!
Falls das Filesystem im Eimer ist, kann es sein, dass der Default-Superblock, der beim Check verwendet wird, i. O. ist. Also muss der Checker dazu verdammt werden, nach einem anderen, (hoffentlich) korrekten Superblock zu suchen. Also:
e2fsck -f -b <superblock> bzw.
e2fsck -f -B <blocksize>
-f forciert die Überprüfung, auch wenn alles i. O. aussieht.
<superblock> gibt an, wo der Superblock zu finden ist: bei 4K grossen Blöcken bei 32768, 98304, 163840, 229376, 294912
<blocksize> gibt die Grösse der Blocks an. Bei mir war das 4K bzw. 4096B.
Alles nachzulesen bei man e2fsck.
Dies alles half mir ein total zerschossenes Filesystem in ca. 5 Min. wieder flott zu krigen!

Viel Glück! Petermann

Post Reply