首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过用999个硬链接和1个文件替换1000个相同的1字节文件,我可以在ext4上节省多少空间?

通过用999个硬链接和1个文件替换1000个相同的1字节文件,我可以在ext4上节省多少空间?
EN

Unix & Linux用户
提问于 2021-02-25 17:43:56
回答 1查看 188关注 0票数 0

我有一个ext4格式的磁盘,其中有数千个文件是自动生成的,并且是必需的。其中几千个只有一个字节长,大约两个字节。两组小文件中的所有文件都是相同的。

通过定位这些文件,比如1000,长度为1字节的文件,可以节省多少空间,删除每个文件并将其硬链接到一个具有代表性的文件?

如下所示:

代码语言:javascript
复制
# ls -l
-rw-r----- 1 john john 1 Feb 25 10:29 a
-rw-r----- 1 john john 1 Feb 25 10:29 b
-rw-r----- 1 john john 1 Feb 25 10:29 c
# du -kcs ?
4   a
4   b
4   c
12  total

试图巩固:

代码语言:javascript
复制
# rm b c
# ln a b
# ln a c
ll
total 12
-rw-r----- 3 john john 1 Feb 25 10:29 a
-rw-r----- 3 john john 1 Feb 25 10:29 b
-rw-r----- 3 john john 1 Feb 25 10:29 c
# du -kcs ?
4   a
4   total

(请注意,du甚至没有列出我感到好奇的bc )。

问:如果分配块大小为4 KiB,那么在我的1000个文件场景中,它真的那么简单,而且可以节省999*4 KiB吗?

或者,ext4是否有能力透明地“合并尾”,或者将小文件存储在“inode”目录中(我隐约记得有些文件系统可以做到这一点)?

(我知道文件分配块可能有所不同,像tune2fs -l /dev/sda1这样的命令可以告诉我。)

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-02-26 14:17:24

存储文件有三个部分:用于存储文件内容的块、用于存储文件元数据的inode和指向inode的目录条目(或多个条目)。

当您创建多个单独的文件时,在最一般的情况下,您支付此费用的次数与有文件一样多。

带内嵌数据 (如果您的文件系统是用适当的选项创建的),如果文件足够小,则保存用于存储文件内容的块,但每个文件至少需要一个inode和至少一个目录条目。

使用硬链接,您可以保存用于存储文件内容和inode的块:只有一个inode,一个文件数据的实例(无论是还是单独的),以及与链接一样多的目录条目。

考虑到您无论如何都需要存储目录条目,硬链接实际上是免费的。其他任何内容都将涉及更多的存储;具体的存储量取决于您的文件系统的特定设置。

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/636406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档