J'ai une partition ext4 (LVM sur un VM) avec un une grande quantité de petits fichiers , que je dois prolonger tous les 3-4 mois.
Concernant la quantité d'espace utilisé par les inodes.
L'un des systèmes de fichiers XFS, BTRFS ou EXT4 utilise-t-il moins d'espace?
En d'autres termes, la commutation de BTRFS ou XFS va-t-elle faire une partition à remplir avec des inodes plus lents puis avec EXT4?
Pour commencer avec votre première question: Oui, l'un de ces systèmes de fichiers utilise moins d'espace. Même sans plus de détails, il serait peu probable qu'ils utilisent tous exactement la même quantité d'espace, étant donné qu'ils ont des implémentations différentes. Donc, on est obligé d'utiliser moins d'espace que de tous les autres.
BTRFS a une allocation dynamique de l'inode. Il n'y a donc pas de remplissage comme si vous disposez des tables d'inode pour EXT4 (la taille pour laquelle est défini sur le temps de création des systèmes de fichiers ext4).
XFS est dynamique de la même manière, mais a une limite (pourcentage du système de fichiers pouvant être utilisé pour INODES), de sorte que vous remplissez votre allocation d'inode dépend de l'ensemble de pourcentage ainsi que de la taille du compte/fichier de fichier
Oui, et soyez conscient que tout dépend de vos besoins:
Considérant que le BTRFS sera capable de s'étendre sur les multiples disques durs, il s'agit d'un très bon carré qu'il peut prendre en charge 16 fois plus d'espace d'entraînement que le ext4. Une taille de partition maximale du système de fichiers BTRFS est de 16 exbibytes, ainsi que la taille maximale du fichier correspond à 16 exbibytes.
Nombre maximum de fichiers: 2 ** 64
Le XFS est un système de fichiers de journalisation 64 bits haute performance. XFS prend en charge la taille maximale du système de fichiers de 8 exbibytes pour le système de fichiers 64 bits. Maintenant, le RHEL 7. utilise XFS comme système de fichiers par défaut, y compris la prise en charge de l'utilisation de XFS pour le /boot
cloison.
Nombre maximum de fichiers: 2 ** 64
Le ext4 est bien connu en raison de l'amélioration de la vitesse sur EXT3. L'ext4 a des limites. La taille maximale du fichier est de 16 tébibytes (environ 17,6 téraoctets). Le plus grand volume/partition que vous pouvez avoir avec EXT4 est 1 exbibyte. Comme dans les systèmes de fichiers les plus modernes, il s'agit d'un système de fichiers de journalisation, ce qui signifie qu'il conservera un journal où les fichiers sont principalement situés sur le disque et de tout autre changement sur le disque. Quelles que soient toutes ses caractéristiques, il ne prend pas en charge la compression transparente, le cryptage transparent ou la déduplication de données. Les instantanés sont pris en charge techniquement, mais une telle caractéristique est au mieux expérimental.
Nombre maximum de fichiers: 4 milliards
XFS n'a pas de raid, tandis que BTRFS RAID n'est pas encore complètement stable et est à ses débuts. [~ # ~] XFS [~ # ~ ~] est de plus en plus mature que -BTRFS, mais nous ne pouvons pas nier que BTRFS est puissant et un système de fichiers de bonne croissance.
Pour l'instant, XFS est mon choix - spécialement car c'est la valeur par défaut FS sur Rhel 7 -, sauf si j'ai vraiment besoin de BTRFS.
Je suppose que le problème que vous avez n'est pas la partition de remplissage avec des inodes en soi, mais à l'écoulement du nombre d'inodes dans le système de fichiers. EXT4 se réserve les inodes de manière statique lorsque le système de fichiers est créé, mais vous pouvez définir le numéro avec Options sur mkfs.ext4
:
-i octets-per-inode
[.____] Spécifiez le ratio octets/inode. MKE2FS crée une inode pour chaque octets d'octets-per-inode d'espace sur le disque. Plus le rapport entre les octets-per-inode, les moins d'inodes seront créés.-N nombre de inodes
[ Cela permet à l'utilisateur de spécifier directement le nombre d'inodes souhaités.
Le manuel indique explicitement que les octets par rapport à l'inode ne peuvent pas être modifiés après la création de FS, mais le nombre total d'échelle pour atteindre le rapport si le FS est redimensionné.
Vous pouvez également définir le Taille de chaque inode. La valeur par défaut est de 256 octets sur les systèmes de fichiers "la plupart", mais peut être réduit à 128 (la valeur par défaut pour "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 Taille de l'inode
[.____] 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
doit indiquer le nombre d'inodes alloués et utilisés. Avec des options par défaut, une partition de 30 Go que j'ai examinée avait eu une inode pour chaque 16 Ko, mais si vos fichiers sont très petits, vous pourriez définir, disons, -i 4096
pour avoir une inode pour chaque bloc de données sur chaque bloc de données du système.
Si vos fichiers sont inférieurs à 4096, vous pouvez également réduire la taille du bloc système de fichiers, car tous les fichiers réguliers nécessiteront un bloc de données complet de toute façon. (C'est-à-dire sur ext4. Je ne sais pas si les autres systèmes de fichiers actuels font emballage de petits fichiers.)
-a-taille de bloc
[.____] Spécifiez la taille des blocs en octets. Les valeurs de taille de bloc valide sont de 1024, 2048 et 4096 octets par bloc. Si omis, la taille du bloc est déterminée heuristiquement 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'option -T <type>
qui peut être utilisée comme abrégée pour tout ou partie de ceux-ci. Les paramètres sont en /etc/mke2fs.conf
, qui sur mon debian fait par ex. mkfs.ext4 -T small
équivalent à
mkfs.ext4 -b 1024 -I 128 -i 4096
Ce qui pourrait ne pas être un mauvais ensemble d'options pour de nombreux petits fichiers (et pas de xattrs.)
Si vos fichiers sont encore plus petits qu'un KB, un système de fichiers peut ne pas être le meilleur moyen de sauvegarder les données, mais une base de données ou un système spécifique à une application devrait peut-être être pris en compte.