GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was sind Sparse-Dateien in Linux?

Haben Sie jemals einen Unterschied in der Festplattennutzung einer Datei beobachtet, während Sie die Befehle du und ls verwendet haben? Zum Beispiel:

$ du -sh /u02/ticoprd/redo/*
515M redo1a.rdo
524M redo3b.rdo
518M redo4a.rdo
$ ls -ltrh /u02/ticoprd/redo/*
-rw-r----- 1 oticoprd dba 1.1G Aug 4 01:09 redo1a.rdo
-rw-r----- 1 oticoprd dba 1.1G Aug 4 02:32 redo3b.rdo
-rw-r----- 1 oticoprd dba 1.1G Aug 4 03:51 redo4a.rdo

Wir können sehen, dass der Befehl „ls“ die Dateigröße mit 1,1 GB anzeigt, während die Dateigröße mit dem Befehl „du“ nur 515 MB beträgt. Diese Dateien sind Sparse-Dateien. Das „ls“ zeigt die scheinbare Größe der Datei an und „du“ zeigt die tatsächliche Größe der auf der Festplatte befindlichen Datei an.

Eine Sparse-Datei ist eine Art von Computerdatei, die versucht, den Platz im Dateisystem effizienter zu nutzen, wenn der Datei zugewiesene Blöcke größtenteils leer sind. Dies wird erreicht, indem kurze Informationen (Metadaten), die die leeren Blöcke darstellen, auf die Festplatte geschrieben werden, anstatt den tatsächlichen „leeren“ Speicherplatz, aus dem der Block besteht, wodurch weniger Speicherplatz verbraucht wird (d zugewiesener Speicherplatz auf der Festplatte). Die volle Blockgröße wird nur dann als tatsächliche Größe auf die Festplatte geschrieben, wenn der Block „echte“ (nicht leere) Daten enthält.

Beim Lesen von Dateien mit geringer Dichte konvertiert das Dateisystem Metadaten, die leere Blöcke darstellen, zur Laufzeit transparent in „echte“ Blöcke, die mit null Bytes gefüllt sind. Die Anwendung ist sich dieser Konvertierung nicht bewusst. Sparse-Dateien werden häufig für Disk-Images, Datenbank-Snapshots, Protokolldateien usw. verwendet.

Der Vorteil von Sparse-Dateien besteht darin, dass Speicherplatz nur dann zugewiesen wird, wenn er tatsächlich benötigt wird:Speicherplatz wird gespart und große Dateien können erstellt werden, selbst wenn nicht genügend freier Speicherplatz im Dateisystem vorhanden ist.

Nachteile sind, dass Dateien mit geringer Dichte fragmentiert werden können. Die Berichte über den freien Speicherplatz des Dateisystems können irreführend sein, und das Kopieren einer Datei mit geringer Dichte mit einem Programm, das sie nicht explizit unterstützt, kann die gesamte, unkomprimierte Größe der Datei kopieren, einschließlich der Bereiche mit geringer Dichte, meist null, die sich nicht auf der Festplatte befinden – wodurch die Vorteile verloren gehen der Sparse-Eigenschaft in der Datei.

Wir können dieses Verhalten mit /var/log/lastlog file.

sehen
# ls -lh /var/log/lastlog
-rw-r--r--. 1 root root 144K Sep 8 22:45 /var/log/lastlog
# du -sh /var/log/lastlog
40K /var/log/lastlog 

Sparse-Datei erstellen

Wir können eine Sparse-Datei mit dem dd-Befehl erstellen:

# dd if=/dev/zero of=sparse_file bs=1 count=0 seek=512M
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000381714 s, 0.0 kB/s
# ls -hl sparse_file
-rw-r--r--. 1 root root 512M Sep 9 00:13 sparse_file
# du -sh sparse_file
0 sparse_file

Um die Festplattennutzung der Datei mit dem Befehl „ls“ anzuzeigen, können wir die Option „-s“ verwenden:

# ls -lhs sparse_file
0 -rw-r--r--. 1 root root 512M Sep 9 00:13 sparse_file

Um die scheinbare Größe der Datei mit „du“ zu sehen, können wir die Option –apparent-size verwenden:

# du -h --apparent-size sparse_file
512M sparse_file 

Sparse-Datei mit „cp“-Befehl kopieren

Das 'cp' unterstützt Sparse-Dateien und kann das gut erkennen, also reicht es aus, 'cp' auszuführen. Aber cp hat eine Option –sparse=WHEN.

# cp --sparse=always sparse_file sparse_file.2


Linux
  1. Kopieren Sie Dateien im Linux-Terminal

  2. Verschieben Sie Dateien im Linux-Terminal

  3. Was ist die Inode-Nummer unter Linux?

  4. Was sind .run-Dateien?

  5. So erstellen Sie Sparse-Dateien in Linux mit dem Befehl „dd“.

Cp-Befehl in Linux (Dateien kopieren)

Was ist umask unter Linux?

So benennen Sie eine Datei (en) in Linux um

Was sind Inodes unter Linux?

Was ist eine .bashrc-Datei unter Linux?

So komprimieren Sie eine Datei unter Linux