2015-07-13 13 views
10

Di solito, la dimensione fisica di un file è maggiore della dimensione logica. Mi stavo chiedendo se ci fosse qualche caso per il quale è vero il contrario. Potrebbero esserci alcuni file, per i quali la dimensione fisica sarebbe inferiore alla dimensione logica.In tal caso la dimensione fisica di un file sarà inferiore alla dimensione logica?

+0

Questa domanda non deve essere chiusa. – o11c

+0

Non riesco a capire perché le persone vogliano mettere questa domanda come attesa. Quando ho discusso questa domanda con alcuni dei miei amici universitari, sono stati sorpresi nel vedere la risposta data qui sotto, che dice sì, ci sono alcuni casi. Perché, letteralmente, non sapevamo che questo caso potesse essere possibile. Quindi, penso che questa sia una domanda interessante. Per favore, dai una ragione sufficiente per cui alcuni di voi non vogliono che questa domanda venga posta qui? – beginner

+0

La buona notizia è che la coda di riapertura è molto più breve della coda di chiusura. – o11c

risposta

1

La dimensione fisica del file è in genere la somma di tutti i blocchi assegnati al file, mentre la dimensione logica è l'utilizzo effettivo di tali blocchi. Per avere un file logicamente più grande della sua dimensione fisica implicherebbe che alcuni dati possano essere generati al volo (poiché ha più di quanto i blocchi possano contenere).

È possibile ottenere questo concetto comprimendo il file e nascondendo la compressione nei dettagli del driver del filesystem. In questo modo potresti avere due blocchi da 512 byte che supportano 1024 byte fisici ma la decompressione dei dati potrebbe rivelare più di 1024 byte logici nel file.

Ci sono altri modi non banali per realizzare quello che chiedi ma non credo che li incontrerai in natura (a meno che tu non stia lavorando in un angolo del mondo di nicchia).

6

Il caso più comune in cui questo è vero è sparse files. Questi file sono fisicamente più piccoli delle loro dimensioni logiche, perché non tutte le loro estensioni sono allocate - ci sono "buchi" nel file.

Si noti che non tutti i file system supportano file sparsi. (In particolare, il grasso non lo fa.)

+0

Grazie. Fatto. Tuttavia, qual è il significato di quei buchi in un file sparse? È solo per specificare i metadati? – beginner

+0

@beginner: se leggi il file, i blocchi mancanti sembrano pieni di zeri (zeri binari, non il carattere '0'.) – rici

10

con un file system moderno come ZFS, ci sono tre modi che permettono la dimensione fisica di un file per essere più piccolo rispetto ai suoi logici uno:

  • file sparse , in cui i blocchi di dati contenenti solo zeri non sono memorizzati fisicamente. Questo è supportato dalla maggior parte dei file system correnti ma escludendo FAT e HFS +.

  • File compressi, in cui il sistema operativo utilizza un algoritmo di compressione per archiviare i dati in misura inferiore alla sua dimensione originale. ZFS, btrfs e HFS + stanno implementando la compressione dei dati.

  • File deduplicati, in cui i blocchi relativi a file diversi ma con lo stesso contenuto vengono memorizzati una sola volta. Questo viene implementato almeno da ZFS, btrfs, vxfs e NTFS VHD (Windows Server 2012.)

istantanee e cloni sono anche le tecniche che permettono più file che hanno un'origine comune, ma un contenuto divergente di avere solo la loro differenza memorizzato, portando ad un guadagno nello spazio del disco.

Si possono aggiungere collegamenti fissi che consentono a più "file" (percorsi più precisi) di condividere gli stessi dati.

Infine, i collegamenti simbolici non memorizzano dati ma il file a cui puntano, se presente, di solito ha una dimensione di dati non nullo.

+0

Un fatto divertente, c'era un [errore principale in grep 2.13] (https: // github.com/zfsonlinux/zfs/issues/829) perché presumevano che l'unico caso riguardasse file sparsi. – o11c

+0

@ o11c Grazie per il link, bug davvero interessante! – jlliagre