文件名的长度如何影响磁盘上的剩余存储空间?

我意识到这是文件系统依赖性。特别是我正在考虑EXT系列文件系统。我不完全了解Inodes如何影响磁盘空间以及如何存储文件名本身。也很难为此问题获得相关的搜索结果。这就是为什么我在这里问。在Linux上,最大文件名长通常为255或256个字符。当创建文件系统时,是否为每个文件名称“保留”的空间数量?换句话说,磁盘存储是否不受实际文件名的影响,因为最大值已经使用?还是比这更复杂?

假设,我有一个名为“ joe.txt”的文件,并将其重命名为“ joe2.txt”。此后,可用磁盘空间的量减少了吗?较长的名称,例如“ joe_version.txt”或“ joe_original_version_with_bug_that_jim_solved.txt”呢?我担心8、16、32、64等角色的阈值。我将存储数百万张图像。我以前从未担心过这样的问题,因此我不确定这是如何工作的。

尽管EXT是我正在使用的唯一文件系统,但讨论脂肪和其他文件可能对具有类似问题的其他人有用。

有帮助吗?

解决方案

在Linux(或更一般的一般情况下,UNIX类型文件系统)文件名存储在目录条目Inodes中,该文件包含目录中每个文件的(文件名,Inode编号)映射的列表。我的理解是,对于每个文件名,name_max字符都有保留空间。确实,在Linux name_max上为255。

因此,要回答您的问题,当创建文件系统时,没有为文件名保留的空间,但是一旦您创建了一个文件name_max字节,则保留为该名称。此外,对于目录Inode,我的理解是,至少在Ext2/3/4上,空间分配在磁盘块中(4 kb,除非您做一些非常奇怪的事情)根据需要分配。即目录至少为4 kb(加上父目录中的条目),如果(文件名,inode)对列表不适合4 kb(减去其他开销,EG目录权限),则分配一个新的4 KB块以继续列表,等等(EXT2/3使用间接块方案,而EXT4使用范围)。

其他提示

FAT16预分配。

FAT32使用工作能力来提供长时间的文件名;随着文件名的更长,需要其他目录文件块来存储额外的字符 - 目录文件是常规文件,因此这会消耗其他磁盘空间。但是,最小的分配是一个群集,因此,除非附加的文件名存储超过群集边界,否则不会从本来可以使用的东西中消耗其他磁盘空间。

我不熟悉UNIX类型文件系统中如何处理文件名。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top