In che modo la lunghezza di un nome di file influisce rimanente spazio di archiviazione su un disco?

StackOverflow https://stackoverflow.com/questions/3775080

Domanda

In che modo la lunghezza di un nome di file influenzare rimanente spazio di archiviazione su un disco?

Mi rendo conto che questo è il file system dipendente. In particolare, sto pensando alla serie EXT dei file system. Non capisco appieno come inode influenzano lo spazio su disco e come il nome del file stesso viene memorizzato. E 'difficile ottenere risultati di ricerca pertinenti per questa domanda anche. È per questo che sto chiedendo qui. Su Linux, la lunghezza massima nome del file è di solito 255 o 256 caratteri. Una volta creato il file system, è quella quantità di spazio "riservato" per ogni nome di file? In altre parole, è storage su disco non interessata dal nome del file effettivo in quanto la massima è già utilizzato? O è più complicato di così?

Supponiamo, ho un file denominato "joe.txt" e rinominarlo in "joe2.txt". la quantità di spazio disponibile su disco è diminuito dopo questo? Che dire di nomi più lunghi come "joe_version.txt" o "joe_original_version_with_bug_that_Jim_solved.txt"? Sono preoccupato per soglie a 8, 16, 32, 64, ecc caratteri. Sarò la memorizzazione di milioni di immagini. Non ho mai preso la briga di preoccuparsi di un tale problema prima così io non sono del tutto sicuro di come funziona questo.

Anche se EXT è l'unico filesystem che sto utilizzando, discutendo FAT e altri potrebbero essere utili a qualcun altro che ha una domanda simile.

È stato utile?

Soluzione

Su Linux (o, più in generale, di tipo Unix file system) i nomi di file sono memorizzati in inode voce di directory, che contengono un elenco di (nome del file, il numero di inode) mappature per ogni file nella directory. La mia comprensione è che per ogni nome di file c'è spazio riservato per i caratteri NAME_MAX. E in effetti, su Linux NAME_MAX è 255.

Quindi, per rispondere si domanda, quando viene creato il file system non c'è spazio riservato per i nomi dei file, ma una volta che si crea un file byte NAME_MAX sono riservati per il nome. Inoltre, per l'inode directory, la mia comprensione è che almeno l'ext2 / 3/4 spazio è allocato nel blocco del disco (4 KB, a meno che non si sta facendo qualcosa di molto strano) granularità, se necessario. Cioè una directory occupa al minimo 4 KB (più una voce nell'inode directory padre), e se l'elenco dei (nome del file, inode) coppie non rientra in quel 4 KB (meno altre spese, ad esempio permessi di directory), assegna un nuovo blocco 4 KB per continuare la lista, e così via (ext2 / 3 utilizza uno schema di blocco indiretto, che usi ext4 extent).

Altri suggerimenti

FAT16 pre-alloca.

FAT32 utilizza un work-around per fornire nomi di file lunghi; come il nome del file diventa più lungo, i blocchi di file directory sono necessari ulteriori per memorizzare i caratteri extra - e un file di directory è un file regolare, quindi questo consuma spazio su disco. Tuttavia, l'allocazione più piccolo è un cluster, quindi a meno che il negozio nome del file supplementari superi il limite di cluster, nessun ulteriore spazio su disco viene consumato da quello che si potrebbe altrimenti aver usato.

Io non sono due piedi a conoscenza di come i nomi dei file vengono gestiti nel tipo file system UNIX.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top