GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa sono i file sparsi in Linux

Hai mai osservato la differenza nell'utilizzo del disco di alcuni file durante l'utilizzo del comando du e ls. Ad esempio:

$ 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

Possiamo vedere che il comando "ls" mostra la dimensione del file di 1,1 GB mentre la dimensione del file del comando "du" è di soli 515 MB. Questi file sono file sparsi. "ls" mostra la dimensione apparente del file e "du" mostra la dimensione effettiva del file che risiede sul disco.

Un file sparse è un tipo di file del computer che tenta di utilizzare lo spazio del file system in modo più efficiente quando i blocchi allocati al file sono per lo più vuoti. Ciò si ottiene scrivendo brevi informazioni (metadati) che rappresentano i blocchi vuoti su disco invece dell'effettivo spazio "vuoto" che costituisce il blocco, utilizzando meno spazio su disco (cioè i file sparsi contengono blocchi di zeri la cui esistenza è registrata, ma non hanno spazio allocato su disco). La dimensione del blocco intero viene scritta su disco come dimensione effettiva solo quando il blocco contiene dati "reali" (non vuoti).

Durante la lettura di file sparsi, il file system converte in modo trasparente i metadati che rappresentano blocchi vuoti in blocchi "reali" riempiti con zero byte in fase di esecuzione. L'applicazione non è a conoscenza di questa conversione. I file sparsi sono comunemente usati per immagini disco, snapshot di database, file di registro, ecc.

Il vantaggio dei file sparsi è che lo spazio di archiviazione viene allocato solo quando effettivamente necessario:lo spazio su disco viene salvato e possono essere creati file di grandi dimensioni anche se lo spazio libero sul file system è insufficiente.

Gli svantaggi sono che i file sparsi possono diventare frammentati. I rapporti sullo spazio libero del file system possono essere fuorvianti e la copia di un file sparso con un programma che non li supporta esplicitamente può copiare l'intera dimensione non compressa del file, comprese le sezioni sparse, per lo più zero, che non sono sul disco, perdendo i vantaggi della proprietà sparse nel file.

Possiamo vedere questo comportamento con il file /var/log/lastlog.

# 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 

Creazione di un file sparso

Possiamo creare file sparse usando il comando dd:

# 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

Per vedere l'utilizzo del disco del file con il comando "ls" possiamo usare l'opzione "-s":

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

Per vedere la dimensione apparente del file usando "du" possiamo usare l'opzione –apparente-dimensione:

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

Copia file sparse con il comando "cp"

Il 'cp' supporta il file sparse ed è bravo a rilevarlo, quindi è sufficiente eseguire "cp". Ma cp ha un'opzione –sparse=WHEN.

# cp --sparse=always sparse_file sparse_file.2


Linux
  1. Spostare file su Linux senza mv

  2. Che cos'è il numero di inode in Linux?

  3. Cosa sono i file .run?

  4. Qual è il limite massimo di file aperti su Linux?

  5. Qual è una buona soluzione per la codifica dei file in Linux?

Comando Cp in Linux (copia file)

Cos'è umask in Linux?

Come rinominare uno o più file in Linux

Cosa sono gli inode in Linux?

Che cos'è il file .bashrc in Linux?

Come comprimere un file in Linux