集美那里有教网站建设wordpress 视频 全屏
操作系统的文件数据除了实际内容之外,通常含有非常多的属性,例如Linux操作系统的文件权限与文件属性。文件系统通常会将这两部分内容分别存放在inode和block中。
inode 和 block 概述
文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块block。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block。
文件数据存储在块中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫做inode,中文译名为索引节点,也叫i节点。因此,一个文件必须占用一个inode,但至少占用一个block。
- 元信息 → inode
 - 数据 → block
 
inode 内容
inode包含很多的文件元信息,但不包含文件名,例如:字节数、属主UserID、属组GroupID、读写执行权限、时间戳等。
而文件名存放在目录当中,但Linux系统内部不使用文件名,而是使用inode号码识别文件。对于系统来说文件名只是inode号码便于识别的别称。
- 查看inode信息
 
stat 文件名
ls -i //直接查看文件的inode信息
- 查看文件类型
 
file 文件名
inode号码
表面上,用户通过文件名打开文件,实际上,系统内部将这个过程分为三步:
1.系统找到这个文件名对应的inode号码;
 2.通过inode号码,获取inode信息;
 3.根据inode信息,找到文件数据所在的block,并读出数据。
其实系统还要根据inode信息,看用户是否具有访问的权限,有就指向对应的数据block,没有就返回权限拒绝。
硬链接与软链接
硬链接
通过文件系统的inode链接来产生的新的文件名,而不是产生新的文件,称为硬链接。
一般情况下,每个inode号码对应一个文件名,但是Linux允许多个文件名指向同一个inode号码。意味着可以使用不同的文件名访问相同的内容。
ln 源文件 目标
运行该命令以后,源文件与目标文件的inode号码相同,都指向同一个inode。inode信息中的链接数这时就会增加1。
当一个文件拥有多个硬链接时,对文件内容修改,会影响到所有文件名;但是删除一个文件名,不影响另一个文件名的访问。删除一个文件名,只会使得inode中的链接数减1。
需要注意的是不能对目录做硬链接。
通过mkdir命令创建一个新目录,其硬链接数应该有2个,因为常见的目录本身为1个硬链接,而目录下面的隐藏目录.(点号)是该目录的又一个硬链接,也算是1个连接数。
软链接
类似于Windows的快捷方式功能的文件,可以快速连接到目标文件或目录,称为软链接。
ln -s 源文件或目录 目标文件或目录
软链接就是再创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。例如,文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。这时,文件A就称为文件B的软链接soft link或者符号链接symbolic link。
这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode链接数不会因此发生变化。
