如果在 ext4 分区中超过 40 亿个文件的限制,例如传输 50 亿个文件,会发生什么?
fro*_*utz 80
据推测,您会看到一些“设备上没有剩余空间”错误:
# 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
Run Code Online (Sandbox Code Playgroud)
实际上,您比“40 亿个文件”更快地达到此限制。请与您的两个文件系统df -h并df -i找出空间还有多大留下。
# 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
Run Code Online (Sandbox Code Playgroud)
在此示例中,如果您的文件平均不是 4K 大小,那么您会比存储空间更快地耗尽 inode 空间。可以指定另一个比率(mke2fs -N number-of-inodes或-i bytes-per-inode或-T usage-type中定义的/etc/mke2fs.conf)。