首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这么做。然后..。文件大小分别为4 kB和12 kB?

为什么这么做。然后..。文件大小分别为4 kB和12 kB?
EN

Unix & Linux用户
提问于 2013-03-17 20:46:53
回答 1查看 2.2K关注 0票数 4

例如,正如ls -al所显示的:

代码语言:javascript
复制
drwxr-xr-x  9 jb jb 4.0K Mar  8 18:05 ./
drwx------ 49 jb jb 12K Mar 17 14:15 ../

我假设这是存储inode元数据所需的最小空间,例如stat返回的元数据,但我不完全确定。

EN

回答 1

Unix & Linux用户

发布于 2013-03-17 23:14:29

典型的类Unix文件系统上的目录只是一个专门属性化的文件。一个象征性的链接也是如此。一些类似Unix的文件系统能够在inode中存储一个小文件,比如符号闪烁。这意味着不需要为文件分配任何块,而且由于文件大小计算不计算inode,所以文件的大小为零。

数据不能放入其inode中的文件必须占用与inode分开分配的某种最小存储单元。(然后,inode的数据空间通常被转换为指向该存储块的指针数组。)

最简单的策略是,所有的东西都被分成大小相同的不可分割的块,没有两个文件可以在一个块中共享存储。但是,某些文件系统(如Berkeley FFS )可以将块分解成分配给不同文件的片段,以减少浪费。

块大小是在文件系统创建时决定的,这是在寻址一个巨大磁盘和浪费小文件空间之间的一种折衷。典型的块大小是二次幂,从512左右开始(现在可能很少)。

如您所知,每个(非根目录)至少包含两个条目,因为即使是一个空目录也包含。然后..。链接。如果您看到非零值甚至是一个完全空的目录的大小,这意味着在给定的文件系统中,这两个基本目录条目太大,无法适应inode的微小数据区域。因此,目录数据占用单独分配的块或块片段。

看起来,在给定的文件系统上,块大小是4096,没有更小的片段。(否则,您有一个更大的块大小,4096是一个片段的大小。)一个目录开始占据一个4096块/片段,当将足够的条目添加到该目录中的空间不足时,该目录将增长到8192,然后增长到12 12,依此类推。

对.有很大的价值。指示父目录是一个大小目录,该目录与子目录的大小无关。

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

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

复制
相关文章

相似问题

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