2010-09-01 61 views
20

J'ai besoin de créer un très grand nombre de fichiers qui ne sont pas très gros (comme 4kb, 8kb). Il est impossible sur mon ordinateur car il prend toutes inodes jusqu'à 100% et je ne peux pas créer plusieurs fichiers:Combien d'octets par inode?

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

(j'ai commencé à supprimer des fichiers, il est pourquoi il est maintenant 67%)

Le bytes- par-nœuds sont de 256 sur mon système de fichiers (ext4)

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

Je me demande s'il est possible de définir cette valeur très faible, même en dessous de 128 (au cours de reformatage). Si oui, quelle valeur dois-je utiliser? Thx

+2

La taille de l'inode n'est pas la même que celle des octets par inode. La taille des inodes est simplement la quantité (nombre d'octets) de données que chaque inode peut contenir, tandis que les octets par inode font référence au ratio inodes par rapport à l'espace disque. Les deux valeurs sont indépendantes. –

Répondre

24

Les octets par défaut par inode est généralement 16384, qui est la valeur par défaut inode_ratio dans /etc/mke2fs.conf (il est lu avant la création du système de fichiers). Si vous êtes à court d'inodes, vous pouvez essayer par exemple:

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

Une autre option qui affecte c'est -T, généralement -T news qui réduit encore à 4096.

En outre, vous ne pouvez pas changer la nombre d'inodes dans un système de fichiers ext3 ou ext4 sans le recréer ou l'éditer en hexadécimal. Les systèmes de fichiers Reiser sont dynamiques, donc vous n'aurez jamais de problème avec eux.

+4

Comment déterminer la valeur actuelle des octets par inode pour un système de fichiers? Votre commande a fonctionné, mais y a-t-il des valeurs dans la sortie de tune2fs qui montrent le ratio? –

+1

Je voulais juste vous dire que vous pouvez vérifier/changer la valeur par défaut dans '/ etc/mke2fs.conf' sur Red Hat et ses dérivés. –

-7

J'ai trouvé la solution à mon problème sur l'homme mke2fs page:

-I inode taille

Indiquez la taille de chaque inode en octets. mke2fs crée des inodes de 256 octets par défaut. Dans les noyaux après 2.6.10 et certains noyaux de fournisseurs antérieurs, il est possible d'utiliser des inodes de plus de 128 octets pour stocker les attributs étendus afin d'améliorer les performances. La valeur de la taille de l'inode doit être une puissance de 2 supérieure ou égale à 128. Plus la taille de l'inode est grande, plus l'espace consommé par la table d'inodes est important, ce qui réduit l'espace utilisable dans le système de fichiers et peut également avoir un impact négatif sur les performances. Les attributs étendus stockés dans de gros nœuds ne sont pas visibles avec les anciens noyaux, et de tels systèmes de fichiers ne peuvent pas être montés avec les noyaux 2.4 du tout. Il n'est pas possible de modifier cette valeur après la création du système de fichiers.

Le maximum que vous pourrez définir est donné par votre taille de bloc.

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

Hope this peut aider ....

+6

La taille de l'inode ('-I') est quelque peu différente du paramètre bytes-per-inode (' -i'). La taille de l'inode détermine la taille d'un seul inode, les inodes plus grands peuvent contenir plus de pointeurs sur les blocs, ce qui réduit le besoin de blocs indirects au prix coûtant ou d'une utilisation accrue du disque.Le paramètre bytes-per-inode définit un ratio qui sera utilisé pour déterminer le nombre maximal d'inodes. Aucune de ces deux valeurs ne peut être modifiée après la création du système de fichiers. – Tader

8

Vous pouvez connaître le ratio d'inode approximatif en divisant la taille de l'espace disponible par le nombre d'inodes disponibles. Par exemple:

$ 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

Si vous obtenez une erreur comme "tune2fs: Mauvais nombre magique en super-bloc en essayant d'ouvrir/dev/sda3" essayez d'exécuter "blkid". Le système de fichiers que je devais utiliser était "/ dev/mapper/myubuntu - vg-root". – jamshid