如果在ext4分区中超过了40亿个文件的限制,例如传输了50亿个文件,会发生什么情况?
如果在ext4分区中超过了40亿个文件的限制,例如传输了50亿个文件,会发生什么情况?
Answers:
大概,您会看到“设备上没有剩余空间”错误的味道:
# 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
实际上,您达到此限制的时间比“ 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
在此示例中,如果平均文件大小不是4K,则inode空间用完的时间比存储空间快得多。这是可能的,以指定另一比率(mke2fs -N number-of-inodes
或-i bytes-per-inode
或-T usage-type
如所定义/etc/mke2fs.conf
)。
git repack
在每个git存储库中运行,以将所有单独的对象组合成一个包文件。
touch
,没有什么花哨的地方echo
,所以您还显示了一个要点和一个经常引起的误解:可以用空文件填充磁盘。
git repack
不会释放任何功能,它在功能上仍然是相同的git repo,tar
使得它对于期望有项目或git存储库的许多程序不可读