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?
Vraisemblablement, vous verrez une certaine saveur d'erreur "Aucun espace laissé sur l'appareil":
# 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 en pratique, vous atteignez cette limite beaucoup plus tôt que "4 milliards de fichiers". Vérifiez vos systèmes de fichiers avec les deux df -h
et df -i
pour connaître l'espace restant.
# 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 vos fichiers ne sont pas de taille 4K en moyenne, vous manquez d'espace inode beaucoup plus tôt que l'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
).
Une fois la limite atteinte, les tentatives ultérieures de création de fichiers échoueront avec ENOSPC
, indiquant que le système de fichiers cible n'a pas de place pour les nouveaux fichiers.
Dans le scénario que vous décrivez, cela entraînera généralement l'abandon du transfert une fois la limite atteinte.