Linux文件系统探秘1
来源:互联网 发布:mac 上的磁盘修复工具 编辑:程序博客网 时间:2024/04/28 23:29
在文件系统看来,一块硬盘由多个分区组成,每一个分区则由一个引导块、一个超级块和若干扇区组组成,每个扇区组则由一个超级块的引用、inode、data block、inode位图和data block位图组成。
inode中保存了文件的metadata,包括权限、修改时间以及data block等信息,但是不包括文件名——文件名保存在父目录的data block中。这时就有两个疑问:
第一,inode大小是固定的(256bytes),而data block则会有很多个,如果文件系统保证所有的data block都是连续的话,那么在inode中只需要保存起始和长度,但是我们知道这样太浪费空间了,文件系统无法保证所有的data block都是前后连续的,那么inode中如何保存所有data block信息呢?
第二,如果文件名保存在上级目录的data block中,那么要找到一个文件,需要访问一次上级目录的inode和data block,这时候需要两次磁头移动。如果文件层次过深的话,那么查找一个文件的代价还是蛮大的,文件系统有什么优化吗?
通过向达人Haifeng请教,得到如下答案:
第一,inode中只直接保存少量的data block信息,更多的data block信息通过额外的data block来保存,类似于二级索引的机制。
第二,文件名查找确实比较费时,文件系统在内存中会对文件名字空间建立一个cache,这个cache与文件数据的cache一样,会占用空闲内存,且为了保证命中率,这个cache中的数据很少被清理出去。另外据说对不存在的文件路径,如果有人open了的话,就算open系统调用返回失败,文件名字空间的cache中也还是会加入这个文件的信息,这样一来,如果你不断打开一些不存在的文件,也可以耗光系统内存。
- Linux文件系统探秘1
- linux内核探秘4---文件系统(最简单的文件系统aufs)
- ext2文件系统探秘之一
- Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
- linux内核探秘
- <Linux内核探秘>读书笔记
- linux内核探秘
- Linux文件系统基础(1)
- Linux文件系统(1)
- linux文件系统(1)
- Linux-(18)Linux文件系统<1>
- Linux初学者探秘必问
- 邵海杨:精简linux的探秘
- 【Linux学习】Linux文件系统1--文件系统的目录结构
- Linux文件系统初探(1)
- linux文件系统的理解(1)
- 认识linux文件系统(1)
- linux笔记之文件系统1
- Maven2 pom.xml基本元素介绍
- STUFF 函数
- 让/etc/profile文件修改后立即生效
- Android Activity和Intent机制(转)
- 银河系三维平面全景图
- Linux文件系统探秘1
- Linux内存使用
- Nokia S60v5的用户小心了
- Flash外部配置器件在SOPC中的应用
- 项目开发管理之VSS 2005配置相关问题
- 上传文件至sharepoint
- OSGI—Felix深入研究
- 可排序分页的table
- 不用写成 if @i=1 OR @i=2 OR ... 这么蠢