1.inode
      首先了解inode(索引节点)。
      硬盘中的块(Block)是记录文件内容数据的区域,inode则是记录该文件属性及其放置在哪个Block之内的信息。所以,系统为每个新创建的文件分配一个inode,每个文件都有一个唯一的inode号。在Linux中,系统要存取某个文件时,要先从inode table找到该文件的inode进而找到存放数据的Block才能对数据进行操作。一个inode大小为128Byte,inode数量一开始已被设定好,通常为"硬盘大小/单位容量",这个单位容量比Block大一些较佳,如Block为4K,单位容量设为8K左右。
    一个分区被格式化为一个文件系统后,会有inode table与数据区域两大块,一个用来记录文件属性及该文件放置的Block块,一个用来记录文件内容。
2.硬链接
      链接分两种:硬链接(hard link)与符号链接(symbolic link)。
      UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接。它可以使得单个程序对同一文件使用不同的名字。这样的好处是 文件系统只存在一个文件的副本。系统简单地通过在目录中建立一个新的登记项来实现这种链接。该登记项具有一个新的文件名和要连接文件的inode号(inode与原文件相同)。
      硬链接是直接建立在inode table上的inode,建立硬链接指向一个文件的时候,会更新inode table上面的引用计数值。举个例子,一个文件被链接了两次(硬链接),这个文件的计数值是3,而无论通过3个文件名中的任何一个访问,效果都是完全一样的,但是如果删除其中任意一个,都只是把计数值减1,不会删除实际的内容,(任何存在的文件本身就算是一个硬链接)只有计数值变成0,也就是没有任何硬链接指向的时候才会真实的删除内容。
      系统读取某个文件时,会先读inode table,然后根据inode信息到相应Block区域将数据取出。 硬链接其实就是一个指向inode的目录项,系统不为它分配新的inode。一个文件只有在硬链接数减为0且没有进程使用时,内核才将该文件内容从磁盘上删除。不论一个文件有多少硬链接,在磁盘上只有一个描述它的inode,只要该文件的链接数不为0,该文件就保持存在。
      硬链接两大限制:
       硬链接不能链接目录。因为目录本身仅有inode,无内容Block块。而inode会链接到Block块,所以硬链接不能链接目录。
       硬链接不能跨文件系统。因为不同文件系统有不同的inode table。
      进一步说明: 
      硬连接文件实际上并不是一种新的文件类型, 两个文件互为对方的硬连接。两个文件除了名称或/和文件目录不同外,其它部分完全相同,更改了一个文件,另一个的文件长度、内容、更改时间等都将相应发生变化,更改了一个文件的权限位mode,另一个也会发生同样的变化。 因为这些信息都保存在FCB即文件控制块中,FCB有放在inode中。
      注意链接的引用计数字段count, 互为硬链接的两个文件的count值都是2,表明有两个inode指向同一文件的inode。      
3.符号链接
      符号链接(symbolic link)又称为软链接,它是指向另一个文件的特殊文件,这种文件的数据部分仅包含它所要链接文件的路径名。软链接是为了克服硬链接的不足而引入的,软链接不直接使用inode号作为文件指针,而是使用文件路径名作为指针(软链接:文件名 + 数据部分-->目标文件的路径名)。软件有自己的inode,并在磁盘上有一小片空间存放路径名。因此, 软链接能够跨文件系统,也可以和目录链接!其二,软链接可以对一个不存在的文件名进行链接,但直到这个名字对应的文件被创建后,才能打开其链接。
      若原文件删除了,则该软链接则不可以访问,而硬链接则是可以的。
4.创建链接命令ln
      可以使用ln命令创建硬链接和符号链接,示例如下:
$ touch myfile    
$ ln myfile myfile-hardlink    
$ ln -s myfile myfile-symlink    
$ ls -li myfile*    
292007 -rw-rw-r--    3 francois francois 0 Mar 25 00:07 myfile    
292007 -rw-rw-r--    3 francois francois 0 Mar 25 00:07 myfile-hardlink    
292008 lrwxrwxrwx    2 francois francois 6 Mar 25 00:09 myfile-symlink
      可以通过命令ln来创建链接。ln 默认创建的是硬链接。给ln命令加上-s选项,则建立软链接。如果[链接名]已经存在但不是目录,将不做链接。
      创建硬链接和符号链接文件之后,使用ls -li命令查看文件信息,选项-li会显示各个文件关联的inode。从上面的例子可以看出,myfile和myfile-hardlink的inode号皆为292007,意味着两者在硬盘中实际上是同一个文件。符号链接myfile-symlink的inode号则与之不同。另外,硬链接只是显示为文件(-),而符号链接则识别成链接(l),且权限全部放开。由此无法判断能否访问该符号链接所指文件,只有尝试访问这个符号链接或查看链接目标信息之后才知道结果。
      软链接的链接对象可以是任意文件或目录,可以链接不同文件系统的文件。和Windows下的快捷方式差不多。链接文件甚至可以链接不存在的文件,称之为“断链”,链接文件甚至可以循环链接自己。
       软链接中链接引用计数字段count表明自身的文件硬链接个数,与链接的对象无关。