厚基础Linux——文件系统元数据
检索速度之迷
比尔盖茨曾经提过一个问题,为什么找同样的信息,在谷歌搜索上比在我们本地操作系统上花的时间要少得多?同时我们也有体验,为什么Linux搜索文件比Windows快那么多?答案是索引,今天我们就聊文件系统的索引,index node,也被简称为inode.
inode
inode提升检索速度
Linux的文件系统分为两层,一层是inode,一层是数据块.和数据库技术类似的,inode存储的是元数据,文件的数据则存在数据块内.当我们检索一个文件时,Linux执行以下步骤,
- 在所有的目录inode中,查找文件名.
- 从文件名获取唯一的inode.
- 使用这个inode在inode层查找到这个文件的数据块,读取数据.
可以看到这个查询每一次的检索范围都很小,目录型inode,某目录中具体的文件名,文件名inode,检索的过滤条件也全是唯一值.通过多个小型查询层层递进,相比windows的全磁盘扫描,可以直观感受到查询开销有量级上的差距.
inode存储的元数据
inode中存储的元数据,文件的类型,权限,用户的ID,用户组的ID,硬链接数量,文件的大小和三种时间戳,以及指向数据块的指针.可以使用stat命令来查看这些元数据.
字段名 | 含义 |
---|---|
FILE | 文件名 |