funzionalità di file di grandi dimensioni durante la creazione del file system


17

È utile per usare -T file di grandi dimensioni flag per creare un file system per una partizione con file di grandi dimensioni come video e audio in formato flac?

Ho testato la stessa partizione con quel flag e senza di essa, e usando tune2fs -l [partizione] , ho controllato in "Funzionalità del filesystem" che entrambi hanno abilitato "large_file". Quindi, non è necessario utilizzare -T flag largefile ?


1
Nota che ero confuso tra large_file (ottenuto in tune2fs) e largefile; sembra che siano argomenti per cose diverse.
Marc

Risposte:


24

Il -T largefileflag regola la quantità di inode assegnati alla creazione del file system. Una volta assegnato, il loro numero non può essere modificato (almeno per ext2 / 3, non completamente sicuro di ext4). L'impostazione predefinita è un inode per ogni 16 KB di spazio su disco.-T largefilelo rende un inode per ogni megabyte.

Ogni file richiede un inode. Se non hai più inode, non puoi creare nuovi file. Ma anche questi inode allocati staticamente occupano spazio. Puoi aspettarti di salvare circa 1,5 gigabyte per ogni 100 GB di disco impostando -T largefile, al contrario di quello predefinito. -T largefile4(un inode per 4 MB) non ha un effetto così drammatico.

Se si è certi che la dimensione media dei file memorizzati sul dispositivo sarà superiore a 1 megabyte, quindi impostare -T largefile. Lo sto usando felicemente sulle mie partizioni di archiviazione e penso che non sia troppo radicale in un ambiente.

Tuttavia, se scompattate un tarball sorgente molto grande di molti file (pensate a centinaia di migliaia) in quella partizione, avrete la possibilità di rimanere senza inode per quella partizione. C'è poco che puoi fare in quella situazione, oltre a scegliere un'altra partizione su cui annullare l'operazione.

Puoi controllare quanti inode hai disponibile su un filesystem live con il dumpe2fscomando:

# dumpe2fs /dev/hda5
[...]
Inode count:              98784
Block count:              1574362
Reserved block count:     78718
Free blocks:              395001
Free inodes:              34750

Qui, posso ancora creare 34 mila file.

Ecco cosa ho ottenuto dopo aver fatto mkfs.ext3 -T largefile -m 0su una partizione da 100 GB:

Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/loop1              102369       188    102181   1% /mnt/largefile
/dev/loop2              100794       188    100606   1% /mnt/normal

La versione per file di grandi dimensioni ha 102 400 inode mentre quella normale ha creato 6 553 600 inode e risparmiato 1,5 GB nel processo.

Se si ha una buona idea di quali file dimensioni verranno inseriti nel file system, è possibile ottimizzare la quantità di inode direttamente con lo -iswitch. Imposta il rapporto byte per inode. Otterresti il ​​75% dei risparmi di spazio se lo utilizzassi -i 65536pur essendo in grado di creare oltre un milione di file. In genere calcolo per conservare almeno 100000 inode di riserva.


bella risposta, ma dove hai detto "e risparmiato 1,5 GB nel processo". dovresti dire "ma hai usato 1,5 GB di spazio per gli inode extra". Lo fai sembrare come se la modalità normale creasse più inode e lasciasse più spazio libero sul disco.
localhost

"In genere calcolo per mantenere almeno 100000 inode di riserva." - perché? Sicuramente 0 pezzi di ricambio (e altri 0 necessari) sono ottimali? Sei davvero preoccupato di essere fuori da 100K su quanti file o directory avrai?
OJFord,

3

Penso che stai mescolando due concetti completamente diversi e indipendenti.

La large_filecaratteristica che puoi vedere nell'output di dumpe2fs significa che questo filesystem può contenere file più grandi di 2 GiB, penso che sia impostato automaticamente dai kernel moderni. Non ha nulla a che fare con l' -Topzione di mke2fs.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.