Que se passe-t-il si la limite de 4 milliards de fichiers est dépassée dans une partition ext4, avec un transfert de 5 milliards de fichiers par exemple?
46
Vraisemblablement, vous verrez un aperçu de l'erreur "Il ne reste plus d'espace sur le périphérique":
# truncate -s 100M foobar.img
# mkfs.ext4 foobar.img
Creating filesystem with 102400 1k blocks and 25688 inodes
---> number of inodes determined at mkfs time ^^^^^
# mount -o loop foobar.img loop/
# touch loop/{1..25688}
touch: cannot touch 'loop/25678': No space left on device
touch: cannot touch 'loop/25679': No space left on device
touch: cannot touch 'loop/25680': No space left on device
Et dans la pratique, vous atteignez cette limite beaucoup plus tôt que "4 milliards de fichiers". Vérifiez vos systèmes de fichiers à la fois df -h
et df -i
pour savoir combien d’espace est disponible.
# df -h loop/
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 93M 2.1M 84M 3% /dev/shm/loop
# df -i loop/
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/loop0 25688 25688 0 100% /dev/shm/loop
Dans cet exemple, si la taille moyenne de vos fichiers n’est pas de 4 Ko, vous manquez d’espace inode-space beaucoup plus tôt que d’espace de stockage. Il est possible de spécifier un autre ratio ( mke2fs -N number-of-inodes
ou -i bytes-per-inode
ou -T usage-type
tel que défini dans /etc/mke2fs.conf
).
git repack
dans chaque référentiel git pour combiner tous les objets séparés dans un fichier de pack.touch
, aucune fantaisieecho
, vous montrez également un point important et une idée fausse souvent formulée: il est possible de remplir un disque avec des fichiers vides.git repack
ne perd aucune fonctionnalité, il reste toujours le même rapport git, letar
rend illisible pour de nombreux programmes dans l'attente d'un projet ou d'un référentiel gitUne fois la limite atteinte, les tentatives suivantes de création de fichiers échoueront
ENOSPC
, indiquant que le système de fichiers cible n'a plus de place pour les nouveaux fichiers.Dans le scénario que vous décrivez, le transfert sera abandonné une fois la limite atteinte.
la source