Sparse-File

Jürgen Tress
2009-01-01 08:00

Ein Sparse-File ist eine auf einem Netware Volume angelegte Datei, deren tatsächliche (physikalische) Größe sich von der logischen (von DOS oder anderen BS) erkannten Größe unterscheidet. Die angezeigte Größe kann sogar höher als der verfügbare Speicherplatz auf diesem Volume sein.

Ein Sparse-File wird von der Netware angelegt, wenn folgende Situation auftritt: Eine Anwendung erzeugt eine Datei und schreibt unmittelbar an dessen Anfang einige Daten.

Zu einem späteren Zeitpunkt macht nun die Anwendung einen "seek", der (weit) über das derzeitige physikalische Ende der Datei hinausgeht und schreibt dort nochmals einige Daten.

In diesem Fall belegt Novell nur den Speicherplatz, der notwendig ist, um die Daten am Datei-Anfang und am (neuen) Datei-Ende zu speichern. Der ungenutzte Rest der Datei in der Mitte wird von Novell nur in der Verwaltung der Datei berücksichtigt, belegt aber keinen Platz. Bei einem Zugriff auf diesen "ungenutzten" Mittelteil liefert Novell der Anwendung einen mit binären Nullen gefüllten Record zurück.

Sparse-Files entstehen oft dadurch, wenn Applikationen abstürzen oder einen Seek mit nicht-initialisierten Variablen durchführen, meistens bei Datenbanken. Viele Datenbankprogramme erzeugen ihre Dateien allerdings absichtlich als Sparse-Dateien, so z.B. MS Access, erzeugen aber nur recht kleine "Löcher".

Ein weiteres Beispiel für Sparse-Dateien sind die Images von CD-ROMs, die vom CDROM.NLM in SYS:CDROM$$.ROM abgelegt werden.

Sparse Files kann man auf die folgende Weise erzeugen:

FILE *f = fopen("irgend.was","w"); 
fseek(f,1000000l,SEEK_SET);
fwrite(buffer,1,1,f);
fclose(f);

Damit hat man eine Datei erzeugt, die aus nur 0en und einem Byte am Ende besteht. Solange diese Datei auf dem Server verbleibt, ist sie absolut unkritisch.

Anzeigen kann man Sparse-Dateien mit SPAR101B.ZIP oder TSPARSE.ZIP (beide aus den Netware-server.de).

Probleme bekommt man vielleicht, wenn man die Datei auf eine lokale Platte kopiert, weil DOS die Datei "komplett" anlegt oder die Datei per COPY auf einen anderen Server kopiert. Auch dabei wird sie expandiert. Probleme gibt es je nach Sicherungssoftware auch beim Backup der Datei.
Abhilfe: bei Server -> Server NCOPY benutzen. Dann bleibt sie sparse.

Da die Datei erst einmal viel weniger Platz auf der Platte braucht als ihre Größe angibt, läßt man sie im Normalfall auf dem Server oder versucht, mit datenbankeigenen Routinen die Datenbank wieder neu aufzubauen.

Durchschnittliche Bewertung: 0 (0 Abstimmungen)

Kommentieren nicht möglich