您的位置:首页 > Web前端 > Node.js

INODE索引节点与软硬链接的理解

2016-07-29 13:58 295 查看
INODE索引节点
在Linux中,一切皆文件,都是以文件形式进行存储。
对于文件,它有两个属性,一个是自身属性,又称文件的元数据,表明这个文件自身的属性情况,如 文件的创建者是谁,所属组是哪个,文件的权限是什么,创建的时间,修改的时间...可以通过stat命令进行文件自身属性的查询,具体用法stat file;file是你要查询的文件。
另一个属性是写入文件中的内容,又称它的数据属性,该属性可以通过cat,vim等命令进行数据 查看或者修改。文件的主要作用就是用来存储数据的,但是如果缺少文件的自身属性这些信息,那么文件的查看,修改,移动等操作就会变得极其复杂,同样也会加重系统资源的消耗,所以文件的元数据也是极其重要的。 Linux中存放着大量的文件,为了方便对文件进行查询等操作,创建文件节点号inode是非常有必 要的。inode节点号就相当于文件的"门牌号",当要进行文件读写等操作时,就需要先获取该文件 的"门牌号",然后就可以根据这个"门牌号"直接找到文件所在位置,这些复杂的寻址操作都发生在系统内部,不需要人为进行参与。



如上图所示,通过stat命令就可以查看该文件的元数据信息。



从上图,我们可以对inode表结构有个更清晰的了解,表结构中存储了文件自身属性相关信息,以 及指向数据块的指针,通过查看文件系统可以了解到每个数据块具体的大小,就能够知道,一个索引节点能够存储多大的信息,如果直接块指针就能将文件中的所有数据"安排"到指定的数据块中,那么就不需要动用到间接块指针,如果文件过大,直接块指针使用完了,但是还有数据没有存储到数据块中,那么间接块指针就会启用,它指向的不是具体的数据块,而是指向下一个文件块的指针,再由下一个文件块的指针指向数据块,这样该索引节点的存储能力就比它实际存储能力扩大了一倍,三重指针也是这个原理。
一个目录就是目录下的文件名和文件inode号的映射。
一般inode表会占用文件系统磁盘空间的1%。
cp与inode
分配一个空闲的inode号,在inode表中生成新的条目,在目录中创建一个目录项,将名称与inode号关联,拷贝数据生成新文件。
rm与inode
链接数递减,从而释放的inode号可以被重用
把数据块仿佛空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个数据使用这个数据块时将被覆盖
mv与inode
用新的文件名创建对应新的目录项
删除旧目录条目对应的就得文件名
不影响inode表(除时间戳)或磁盘上的位置,没有数据被移动
如果目标和源不在一个文件系统上,那么mv相当于cp+rm

2.软硬链接
2.1 硬链接



创建硬链接会增加额外的记录项以引用文件
对应于同一文件系统上一个物理文件
每个目录引用相同的inode号
创建时链接数递增
删除文件时:
rm命令递减计数的链接
文件要存在,至少有一个链接,当链接数为0时,该文件被删除,没有指针指向该文件所在的数据块,无法被读取。
不能跨越驱动器或者分区
ln filename [linkname]font



2.2 软链接
一个符号链接指向另一个文件
ls -l 显示链接的名称和引用的文件
一个软链接的内容是它引用文件的名称
可以对目录进行
可以跨分区
指向的是另一个文件的路径,其大小为指向路径的字符串长度,不增加或减少目标文件inode引用计数
ln -s filename [linkname]



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  inode 链接 软硬