LINUX 文件系统如何存储文件 图解
2016-05-14 16:21
134 查看
http://zhuqiuxu.iteye.com/blog/2116023
http://zhuqiuxu.iteye.com/blog/2116168理解Inode要从文件说起,文件存储在硬盘上,硬盘最小的单位是扇区,一般一扇区512字 节,但是如果硬盘以扇区为单位读数据,那样效率太低,一般硬盘都以block(多个扇区)为单位读取数据,最常见的大小是4K。既然文件存储在block 中,那么就需要有一块存储空间放置一些诸如文件的创建者,创建时间,权限的元数据,存储元数据的地方就是Inode。
注:Inode信息中是没有文件的文件名的。为什么?
我们来看一下Inode的结构图就明白原因了
图中Directory不是目录的意思,更准确的理解应该是对应关系和字典。
由图中的查找方式我们可以清晰的看到,文件名只在查找Inode number中使用到,所以它不会存储在Inode中,所有Inode与block间的沟通都是通过Inode number唯一标识的。
了解的文件存取的原理之后我们来看一下ln命令
众所周知ln命令分为硬链接和软链接,根绝上面的结构图,硬链接就是在Directory中加
入一条filename和Inode的对应关系,所以如果你删除了原来的文件,是不对硬链接文件有任何影响的,因为删除文件就是将link count
减少,当发现指向Inode为filename数量0的时候,系统会回收相应的Inode和Block空间。但是软链接就不同了,在Linux下所有的都
是文件,所以软链接也有自己的Inode和block
,但是创建软链接不会在增加原文件Inode-Index,当删除原文件的时候,相应的Index不再能找到,所以导致软链接不能用。但是软链接有自身的
优势,可以跨分区,这样就可以解决当前Inode数据区不足够写入,可以使用软链接指向空间充足的空间。
这样的设计带来的好处:
1. 如果一个文件名中包含特殊字符不能删除,可以通过删除Inode来达到删除文件的目的。
find . -inum inodeno -exec rm -i {} \;
2. 修改文件名,移动文件只是改变文件名,不用修改Inode信息和block信息。
3. 可以再不关闭软件,不重启的情况下完成升级,因为系统在运行的过程中通过Inode
number进行识别,而不是文件名,所以可以在InodeIndex中以同样的文件名指向不同的Inode,在新的block中写入新文件,下次打开软
件直接指向新的Inode和bloc
相关文章推荐
- nova boot代码流程分析(四):nova与neutron的l2 agent(neutron-linuxbridge-agent)交互
- linux企业常用服务---dns+ftp+dhcp
- Linux下查看单个进程占用的端口数量
- [Linux]centOS7-1-1503-x86_64下安装VM-TOOLS
- arm-linux交叉编译环境搭建及交叉工具链 (JZ2440v2)
- 【Linux开发】彻底释放Linux线程的资源
- Linux---基本命令
- linux系统管理---降龙十八掌
- Xilinx petalinux2015.4安装流程
- 20135220谈愈敏Linux Book_17
- linux 开发常用命令
- linux系统管理---日志管理
- linux系统管理---进程和计划任务管理
- linux系统管理---程序安装管理
- Linux下SSH远程连接断开后让程序继续运行解决办法
- Linux内核调试方法总结
- Splunk on CentOS 6 相关系统参数调整
- linux系统管理---服务控制
- linux系统管理---文件管理
- Android系统篇之----Android中的run-as命令引出升降权限的安全问题(Linux中的setuid和setgid)