作为我的后续行动相关问题,是否可以创建没有元数据的文件?或者,我可以删除所有元数据给定文件的?
这完全是一个“哲学问题”。如果这是可能的,那么,考虑到我之前的问题,就有可能在有限的空间磁盘中创建“无限”数量的文件。这无疑是一个值得尝试的实验。
例如,在我使用了 3 年的系统中创建 100 个空文件:
lucho@lucho-HP:~test/$ time seq -f "%04.0f" 100 | xargs -I "{}" touch test"{}".txt
real 0m0.231s
user 0m0.000s
sys 0m0.032s
因此,在一秒钟内,我可以创建大约 400 个文件。因此,在 8 小时内(例如,在睡觉时),我可以创建 1100 万个文件。不多,但你明白了。
答案1
这信息论答案您之前的问题也回答了这个问题:如果您正在创建文件,甚至减少到其最小表示形式,并且您希望能够检索某物关于它们,那么创建会消耗一些磁盘空间,因此您最终会用完(但是分配有效)。因此,您无法在有限的磁盘空间内创建无限数量的文件。
为了回答你提出的问题,我知道文件系统不允许你删除文件元数据,但是没有什么可以阻止你编写自己的文件系统来忽略你想要的任何元数据 - 我想你至少需要一个文件名和一些跟踪磁盘上文件内容的方式(如果您的文件系统只能存储空文件,甚至可能不是后者)。
答案2
一份文件必须至少有一个它消耗的磁盘上第一个块的位置。根据相关文件系统,这限制了可以创建的文件数量,无论它们占用了多少磁盘空间。大多数文件系统对可以包含的文件数量都有限制(即“目录”中的条目数量,可以说是有上限的)。
POSIX 规范要求文件系统中的每个文件都必须在文件系统上有一个 inode 来描述它,这必须有:
- 文件大小
- 包含该文件的设备的标识符
- 文件所有者的UID
- 文件的GID
- 文件的权限集
- 附加系统和用户标志(例如 ACL)
- 时间戳(例如 ctime、mtime、atime)
- 到 inode 的硬链接数量的计数
- 指向存储文件内容的磁盘块的指针
这些数据会消耗空间,这限制了可以存储的文件数量,无论实际文件有多小。