Je suppose que le problème que vous avez n'est pas la partition qui se remplit d'inodes en soi, mais qui manque de nombre d'inodes dans le système de fichiers. ext4 réserve les inodes statiquement lorsque le système de fichiers est créé, mais vous pouvez définir le nombre avec des options pourmkfs.ext4
:
-i octets-par-inode
Spécifiez le rapport octets / inode. mke2fs crée un inode pour chaque octet par octet d'espace sur le disque. Plus le rapport octets-par-inode est grand, moins il y aura d'inodes créés.
-N nombre d'inodes
Remplace le calcul par défaut du nombre d'inodes qui devrait être réservé pour le système de fichiers (qui est basé sur le nombre de blocs et le rapport octets par inode). Cela permet à l'utilisateur de spécifier directement le nombre d'inodes souhaités.
Le manuel indique explicitement que le rapport d'octets par inode ne peut pas être modifié après la création du FS, mais le nombre total sera mis à l'échelle pour correspondre au rapport si le FS est redimensionné.
Vous pouvez également définir la taille de chaque inode. La valeur par défaut est de 256 octets sur "la plupart" des systèmes de fichiers, mais peut être réduite à 128 (la valeur par défaut pour les "petits" systèmes de fichiers). L'espace supplémentaire est utilisé pour stocker des attributs étendus (par exemple, les étiquettes SELinux), donc si vous n'en avez pas besoin, il devrait être sûr de réduire la taille au minimum.
-I inode-size
Spécifiez la taille de chaque inode en octets. La valeur de taille d'inode doit être une puissance de 2 supérieure ou égale à 128.
df -i
devrait montrer le nombre d'inodes alloués et utilisés. Avec les options par défaut, une partition de 30 Go que j'ai examinée avait un inode pour 16 Ko, mais si vos fichiers sont très petits, vous pouvez définir, par exemple, -i 4096
un inode pour chaque bloc de données du système.
Si vos fichiers sont inférieurs à 4096, vous souhaiterez peut-être également réduire la taille des blocs du système de fichiers, car tous les fichiers normaux nécessiteront de toute façon un bloc de données complet. (C'est-à-dire sur ext4. Je ne sais pas si d'autres systèmes de fichiers actuels emballent de petits fichiers.)
-b block-size
Spécifiez la taille des blocs en octets. Les valeurs de taille de bloc valides sont 1024, 2048 et 4096 octets par bloc. Si elle est omise, la taille de bloc est déterminée de manière heuristique par la taille du système de fichiers et l'utilisation attendue du système de fichiers (voir l'option -T).
mkfs.ext4
a également l' -T <type>
option qui peut être utilisée comme raccourci pour tout ou partie de ceux-ci. Les paramètres sont dedans /etc/mke2fs.conf
, ce qui sur mon Debian rend par exemple mkfs.ext4 -T small
équivalent à
mkfs.ext4 -b 1024 -I 128 -i 4096
Ce qui n'est peut-être pas un mauvais ensemble d'options pour de nombreux petits fichiers (et pas de xattrs.)
Si vos fichiers sont encore plus petits que 1 Ko, un système de fichiers n'est peut-être pas le meilleur moyen de sauvegarder les données, mais quelque chose comme une base de données ou un système spécifique à une application devrait peut-être être envisagé.
mkfs.ext4 -t news
pour de meilleurs résultats. Aussi, je suggère de tester - créer (sur lvm, ou périphérique de bouclage par exemple) chacun des systèmes de fichiers à tour de rôle, et commencer à copier vos vrais fichiers jusqu'à ce qu'il se remplisse. Quand il se remplit, faitesdf -i
(oufind | wc -l
) pour trouver celui qui a réussi à stocker la plupart de vos fichiers - de cette façon, vous en serez sûr.