Risposte:
Questa è la dimensione dello spazio sul disco utilizzato per memorizzare le meta informazioni per la directory (ovvero la tabella dei file che appartengono a questa directory). Se è cioè 1024 significa che vengono utilizzati 1024 byte sul disco (alloca sempre blocchi completi) per questo scopo.
La "dimensione di una directory" stampata ls -l
è (come con qualsiasi tipo di file) il valore riportato dalla stat()
chiamata in statbuf.st_size
.
Cosa st_size
significa questo per le directory dipende completamente dal tipo di file system. Se non conosci il tipo di filesystem e non ne comprendi i concetti, non puoi dedurre nulla dal valore in st_size
.
Nello storico filesystem UNIX attualmente di solito denominato v7-fs
, le directory venivano ripetute voci a 16 byte che contenevano un numero di inode a 16 bit e 14 byte di nome file. La "dimensione" di una directory era significativa rispetto read(2)
all'operazione e cresceva o rimaneva sempre così com'è. Le voci .
e ..
vengono create collegandole manualmente a livello corrente e directory a un livello superiore. Il conteggio dei collegamenti per una directory inaugurale vuota sana è 2.
Nel filesystem BSD-4.2 che dal 1989 (SVr4) viene chiamato ufs
, le directory sono una serie di record a lunghezza variabile che utilizzano un formato a cui non viene concesso di essere stabile, quindi ai comandi dello spazio utente non è consentito leggere questo formato. La "dimensione" riportata è la dimensione in byte come in v7-fs, la dimensione di solito aumenta o rimane così com'è, ma le versioni più recenti del filesystem possono ridurre la dimensione in alcune condizioni - ma non sempre quando ci si può aspettare. Il conteggio dei collegamenti riportato per una directory vuota è 2 come con v7-fs
.
Nel WOFS
filesystem che ho progettato e implementato tra l'estate 1988 e maggio 1991, le directory riportano sempre la "dimensione" 0 e non hanno mai un tipo di contenuto che può essere letto usando la read(2)
chiamata. Questo perché WOFS
è il primo filesystem Copy-on-Write e perché nei WOFS
file riporta la directory in cui si trovano invece di essere elencati nella directory. Se leggi una WOFS
directory utilizzando readdir()
, otterrai solo i dati per le voci previste, ma mai per .
e ..
. Il conteggio dei collegamenti di una directory vuota su WOFS
è 1 e l'intero comportamento è completamente conforme a POSIX.
In ZFS
, questo è stato implementato dopo aver letto i WOFS
giornali. ZFS
è un filesystem copy-on-write e i suoi autori non negano di aver copiato i concetti WOFS
. Le directory su ZFS riportano number of directory entries
in st_size
, quindi la "dimensione" riportata non ha alcun significato reale rispetto allo spazio su disco occupato dai dati della directory. Non ci sono .
e ..
voci in una directory ZFS, ma se chiamate readdir()
, queste voci sono false e restituite per le prime due operazioni. ZFS è l'unico FS nell'elenco che non supporta le directory hard-link ma il conteggio dei collegamenti riportati per le directory è sempre 2. Queste due irregolarità in ZFS sono implementate per ridurre la confusione nei programmi storici non POSIX.
Simile a ZFS, WAFL copia alcune ma non tutte le idee da WOFS
. Netapp è WAFL
stato scritto 3 anni dopo la WOFS
pubblicazione del documento, WAFL è copia su scrittura, ma WAFL sembra riportare valori di "dimensione" che possono essere le "dimensioni della directory reale" presupponendo che la directory abbia dei contenuti.
Una directory riserva 4096 byte (almeno) per i metadati su se stessa e il suo contenuto.
Inoltre, 4096 byte è l'unità di allocazione predefinita (blocco) per il filesystem ext2 / ext3 / ext4 e pertanto una directory non può essere più piccola.
Su diversi file system è possibile trovare directory con dimensioni predefinite diverse, a causa della dimensione del blocco predefinita del file system.
Le dimensioni della directory possono anche aumentare dinamicamente man mano che vengono riempite, ma una volta riempito lo spazio riservato ai metadati non può essere riassegnato senza la rimozione della directory.
Una directory è solo una directory, come una rubrica del telefono. È solo un file con un elenco di numeri e un nome accanto a loro. Ogni numero fa riferimento a un file nel file system (un numero di inode) e il nome è il nome del file.
È necessario spazio su disco per salvare tali dati, come vengono allocati, cresciuti e ridotti in base al filesystem.