2010-09-01 36 views
20

Ich muss eine sehr hohe Anzahl von Dateien erstellen, die nicht sehr groß sind (wie 4kb, 8kb). Es ist nicht möglich, auf meinem Computer weil es alle Inodes bis zu 100% nimmt und ich kann nicht mehr Dateien erstellen:Wie viele Bytes pro Inodes?

$ df -i /dev/sda5 
Filesystem   Inodes IUsed IFree IUse% Mounted on 
/dev/sda5   54362112 36381206 17980906 67% /scratch 

(Ich begann das Löschen von Dateien, es ist, warum es jetzt 67%)

Die bytes- pro-Knoten von 256 auf meinem Dateisystem ist (ext4)

$ sudo tune2fs -l /dev/sda5 | grep Inode 
Inode count:    54362112 
Inodes per group:   8192 
Inode blocks per group: 512 
Inode size:    256 

ich frage mich, ob es möglich ist, diesen Wert sehr gering, auch unter 128 einzustellen (während Umformatieren). Wenn ja, welchen Wert sollte ich verwenden? Thx

+2

Die 'Inode-Größe' ist nicht dasselbe wie Bytes pro Inode. "Inode-Größe" ist einfach die Menge (Anzahl der Bytes) von Daten, die jeder Inode enthalten kann, während sich Byte-pro-Inode auf das Verhältnis von Inoden zu Speicherplatz bezieht. Beide Werte sind unabhängig. –

Antwort

24

Die Standard-Bytes pro Inode ist in der Regel 16384, der Standard inode_ratio in /etc/mke2fs.conf ist (es ist zu lesen, bevor Erstellung des Dateisystems). Wenn Sie aus der Inodes laufen lassen, könnten Sie zum Beispiel versuchen:

mkfs.ext4 -i 8192 /dev/mapper/main-var2 

Eine weitere Option, die dies betrifft -T ist, in der Regel -T news das weiter es auch zu 4096.

reduziert, können Sie nicht das ändern Anzahl der Inodes in einem ext3- oder ext4-Dateisystem, ohne sie neu zu erstellen oder zu hexen. Reiser-Dateisysteme sind dynamisch, so dass Sie nie ein Problem damit haben werden.

+4

Wie kann ich den aktuellen Byte-pro-Inode-Wert für ein Dateisystem ermitteln? Ihr Befehl hat funktioniert, aber gibt es einen Wert in der tune2fs-Ausgabe, der das Verhältnis anzeigt? –

+1

Ich wollte nur kommentieren, dass Sie den Standardwert in '/ etc/mke2fs.conf' auf Red Hat und Derivaten überprüfen/ändern können. –

-7

ich Lösung für mein Problem auf der mke2fs man-Seite gefunden haben:

-I Inode-Größe

Geben Sie die Größe der einzelnen Inode in Bytes. mke2fs erstellt standardmäßig 256-Byte-Inodes. In Kernen nach 2.6.10 und einigen früheren Herstellerkernen ist es möglich, Inodes größer als 128 Bytes zu verwenden, um erweiterte Attribute für verbesserte Leistung zu speichern. Der Inode-Size-Wert muss eine Potenz von 2 größer oder gleich 128 sein. Je größer die Inode-Größe ist, desto mehr Speicherplatz benötigt die Inode-Tabelle. Dies verringert den nutzbaren Speicherplatz im Dateisystem und kann sich negativ auf die Leistung auswirken. Erweiterte Attribute, die in großen Inodes gespeichert sind, sind in älteren Kernels nicht sichtbar, und solche Dateisysteme können mit 2.4-Kernel überhaupt nicht gemountet werden. Es ist nicht möglich, diesen Wert nach der Erstellung des Dateisystems zu ändern.

Die maximale Größe, die Sie festlegen können, ist durch Ihre Blockgröße gegeben.

sudo tune2fs -l /dev/sda5 | grep "Block size" 
Block size:    4096 

Hope this helfen kann ....

+6

10 Die Inode-Größe ('-I') unterscheidet sich von der Einstellung für Bytes pro Inode (' -i'). Die Inode-Größe bestimmt die Größe eines einzelnen Inodes, größere Inodes können mehr Zeiger auf Blöcke enthalten, wodurch die Notwendigkeit indirekter Blöcke auf Kosten oder eine erhöhte Plattennutzung reduziert wird.Die Byte-pro-Inode-Einstellung legt ein Verhältnis fest, das zum Bestimmen der maximalen Anzahl von Inodes verwendet wird. Keiner dieser beiden Werte kann geändert werden, nachdem das Dateisystem erstellt wurde. – Tader

8

Sie können das ungefähre Inode-Verhältnis ermitteln, indem Sie die Größe des verfügbaren Speicherplatzes durch die Anzahl der verfügbaren Inodes dividieren. Zum Beispiel:

$ sudo tune2fs -l /dev/sda1 | awk -F: ' \ 
    /^Block count:/ { blocks = $2 } \ 
    /^Inode count:/ { inodes = $2 } \ 
    /^Block size:/ { block_size = $2 } \ 
    END { blocks_per_inode = blocks/inodes; \ 
      print "blocks per inode:\t", blocks_per_inode, \ 
       "\nbytes per inode:\t", blocks_per_inode * block_size }' 

blocks per inode: 3.99759 
bytes per inode:  16374.1 
+0

Wenn Sie einen Fehler wie "tune2fs: Schlechte magische Zahl im Superblock beim Versuch,/dev/sda3 zu öffnen" erhalten, versuchen Sie "blkid" auszuführen. Das eigentliche Dateisystem, das ich verwenden musste, war "/ dev/mapper/myubuntu - vg-root". – jamshid

Verwandte Themen