关于索引节点(inode,也叫i节点)、硬链接和软链接

1.inode是一个数值,通过ls -i 命令可以查看某文件的inode值。
2.本质上inode是一个索引号,也可以理解为一个指针,指向唯一的一个文件,准确的是说是指向一个文件的

存储区,该存储区是属于该文件的一部分,不一定是全部。
3.因此,有两个或多个inode指向同一个文件的情况。即inode和文件不是一一对应的关系。是n对1的关系。

(n>=1)
4.当文件拷贝时,理所当然的会创建新的inode,而且也复制了数据区。尽管两个文件完全一样。即:复制文

件时,产生两个完全独立的文件。

 

5.硬链接:为原文件创建一个新的文件名,但本质中只增加了一个目录项,并使用与原来相等的inode,指向

原文件的区域。数据区为两个名字共享。
使用限制:源文件和链接文件必须在同一个文件系统内,且目录文件不能创建硬链接。
命令:ln a b // 给a创建链接文件b

      可以使用ls -i查看两个inode是完全一样的。

      同时注意连接计数count。count的意义对于文件来说是硬链接的个数,对于目录,一般(count-2)为目录包含的子文件个数。
      注意:两者的权限也是完全一样的。对其中一个进行读写操作,另外一个也会更新。但删除其中一个,只会删除目录项,不会删除存储区数据。另外一个文件的使用和操作完全不受影响。除非count-1结果0,才将数据区删除。
作用:节省空间,两个文件能同步更新,防止重要文件被“误删”。

      注意:软驱 光驱等都是独立的文件系统。不同文件系统的inode没有任何联系。系统通过设备号和inode号确定一个文件。


inode是文件系统内的一个概念。但linux可以支持多种不同的文件系统。其实Linux提供了一个虚拟文件系统

VFS,是实际系统上层的一个接口软件。因此inode是只存在于内存的数据结构中。只有linux量身定制的ext2文件系统是具有实际意义的inode和目录项结构。

 

6.软链接:也叫符号链接。本质是创建一个新的文件,保存源文件的路径名。因此inode和源文件的inode是不一样的。使用没有文件系统的限制,也没有文件和目录的限制。
命令:ln -s a b
      注意:产生的文件权限和源文件是不一样的。由于软链接使用比较灵活,可能断链,也可以自循环,往往需要多次查找增加文件操作的步骤而降低效率。尽量少用,并避免出现循环。
      注意:删除文件时,如果源文件被删除,即便只是硬链接被删除,存储区没有被删,本文件也会失效。因为它是对文件名而言的。

posted @ 2012-11-06 09:07  雪中飞  阅读(1171)  评论(0编辑  收藏  举报