Suppongo che il problema che hai non sia la partizione che si riempie di inode di per sé, ma esaurendo il numero di inode nel filesystem. ext4 riserva staticamente gli inode quando viene creato il filesystem, ma è possibile impostare il numero con le opzioni sumkfs.ext4
:
-i byte per inode
Specifica il rapporto byte / inode. mke2fs crea un inode per ogni byte per inode byte di spazio sul disco. Maggiore è il rapporto byte per inode, meno inode verranno creati.
-N numero di inode
Sostituisce il calcolo predefinito del numero di inode che dovrebbero essere riservati per il filesystem (che si basa sul numero di blocchi e sul rapporto byte per inode). Ciò consente all'utente di specificare direttamente il numero di inode desiderati.
Il manuale afferma esplicitamente che il rapporto byte per inode non può essere modificato dopo la creazione di FS, ma il numero totale verrà ridimensionato per soddisfare il rapporto se l'FS viene ridimensionato.
Puoi anche impostare la dimensione di ciascun inode. L'impostazione predefinita è 256 byte nella maggior parte dei filesystem, ma può essere ridotta a 128 (impostazione predefinita per i filesystem "piccoli"). Lo spazio aggiuntivo viene utilizzato per la memorizzazione di attributi estesi (ad es. Etichette SELinux), quindi se non sono necessari, dovrebbe essere sicuro ridurre le dimensioni al minimo.
-I inode-size
Specifica la dimensione di ciascun inode in byte. Il valore della dimensione dell'inode deve essere una potenza di 2 maggiore o uguale a 128.
df -i
dovrebbe mostrare il numero di inode allocati e usati. Con le opzioni predefinite, una partizione da 30 GB che ho visto aveva un inode per ogni 16 kB, ma se i tuoi file sono molto piccoli, potresti impostare, diciamo, -i 4096
di avere un inode per ogni blocco di dati sul sistema.
Se i tuoi file sono più piccoli di 4096, potresti voler ridurre anche la dimensione del blocco del file system, poiché tutti i file regolari richiedono comunque un blocco di dati completo. (Cioè, su ext4. Non so se altri filesystem attuali comprimono file piccoli.)
-b dimensione blocco
Specifica la dimensione dei blocchi in byte. I valori validi per la dimensione del blocco sono 1024, 2048 e 4096 byte per blocco. Se omesso, la dimensione del blocco è determinata euristicamente dalla dimensione del filesystem e dall'uso previsto del filesystem (vedere l'opzione -T).
mkfs.ext4
ha anche l' -T <type>
opzione che può essere utilizzata come scorciatoia per alcuni o tutti questi. Le impostazioni sono in /etc/mke2fs.conf
, che sul mio Debian rende eg mkfs.ext4 -T small
equivalente a
mkfs.ext4 -b 1024 -I 128 -i 4096
Che potrebbe non essere un brutto insieme di opzioni per molti file di piccole dimensioni (e senza xattrs.)
Se i tuoi file sono persino più piccoli di un kB, un file system potrebbe non essere il modo migliore per salvare i dati, ma forse dovresti prendere in considerazione qualcosa come un database o un sistema specifico dell'applicazione.
mkfs.ext4 -t news
migliori risultati. Inoltre, suggerirei di testare: crea (ad esempio su lvm o dispositivo di loopback) ciascuno dei file system a turno, e inizia a copiare i tuoi file reali su di esso fino a quando non si riempie. Quando si riempie, faidf -i
(ofind | wc -l
) per trovare quale è riuscito a memorizzare la maggior parte dei tuoi file, in questo modo lo saprai per certo.