最近发现一个好玩的东西,就是mysql的 我删除了一个idb文件通过rm,发现我查表的时候数据还是存在的,今天就整理了一下这个东西,inode文件描述
通过查找资料发现:文件是这么被访问的,物理的结构就是/home/stu01 /home/stu02 系统怎么记得呢
首先会产生一个inode描述符,然后跟硬盘在一个地方,每次系统访问的时候即我们使用cat查看的时候都会读取这个对应的inode描述符,然后访问文件。
好了下面就逐个说明:文件系统将硬盘划分为块,编号从0开始到整个磁盘的最大块数,0块给引导块,1块成为专用块,从第二块开始是i节点表,表的块数是可变的,i节点之后是空闲的存储块(真正存放数据的块),linux的某个地方会存放一个表,告诉文件系统如何将物理结构转换成逻辑结果,这个逻辑结果就是i节点,i节点是一个64字节长的表,包含了有关一个文件的信息,包括文件大小,文件所有者,文件存取方式,类型等。
一般情况下inode的数量社会为硬盘大小/一个容量即(Block),所以有的时候或者硬盘空间还有很多,然后创建文件的时候报错,哪儿的问题,就是因为有进程在访问inode节点的数据,你删除只是删除了文件描述符真正系统访问的东西并没有删除,就像是软连接跟文件,系统访问的是文件,不是软连接,你删除的只是软连接不是文件。
硬盘划分的时候一部分给了Block(真正存放文件数据的地方),还有一部分就是存放inode的东西,
du和df看到同样的一个硬盘分区,发现大小不一样就是如此
参考:http://my.oschina.net/sharelinux/blog/143816
原文地址:http://aklaus.blog.51cto.com/9724632/1786165