浅析Linux下链接文件.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅析Linux下链接文件

浅析Linux下的链接文件   【摘 要】Linux在其文件系统中引入了链接文件用于方便用户使用和系统管理。本文对Linux下的链接文件的实质、分类、用途进行了分析和综述 【关键词】Linux;链接文件 0 引言 链接文件在Linux的文件系统中扮演重要角色,而其背后又涉及到索引节点(index node,又称inode)这一概念。索引节点是Linux虚拟文件系统(VFS)的基本概念之一。通过剖析链接文件的实质,理解链接文件的分类与区别,可以让Linux的普通用户和管理员正确而有效的使用链接文件 1 几个基本概念 要理解Linux下链接文件的实质,需要先理解索引节点(inode)和目录项(dentry)这两个基本概念 在Linux文件系统中,一个文件除了纯数据本身之外,还必须包含有对这些纯数据的管理信息,如访问权限、文件的属主以及该文件的数据所对应的磁盘块等等,这些管理信息称之为元数据(mata data),保存在文件的inode节点之中。[1] 每个inode都有一个全文件系统唯一的inode号,操作系统内核正是通过inode号而非文件名来识别不同的文件。文件名仅仅是为了方便用户使用而已,内核是通过文件名找到inode,然后通过inode访问实际文件数据的 虽然每个文件对应了唯一的inode号,但inode号是杂乱而毫无意义的,不方面用户记忆和使用,用户希望对每个文件取一个有意义的文件名。现代文件系统提供的一个基本功能是按名存取,所以还需要建立文件名到inode号的对应,这就引出了目录项(directory entry即dentry)的概念。在Linux文件系统中有一类特殊的文件称为“目录”,目录就保存了该目录下所有文件的文件名到inode号的对应关系,这里的每个对应关系就称为一个dentry。而Linux把所有的文件和目录构建成了一个倒立的树状结构,这样,只要确定了根目录的inode号,就可以对整个文件系统进行按名存取了 2 链接文件的分类 Linux下的链接文件可以分为硬链接和软链接 硬链接的实质是现有文件在目录树中的另一个入口。也就是说,硬链接与原文件是分居于不同或相同目录下的的dentry而已,它们指向同一个inode,对应于相同的磁盘数据块(data block),具有相同的访问权限、属性等。[2]简而言之,硬链接其实就是给现有的文件起了一个别名。如果把文件系统比喻成一本书的话,硬链接就是在书本的目录中,有两个目录项指向了同一页码的同一章节 硬链接的优点是几乎不占磁盘空间(因为仅仅是增加了一个目录项而已),但是这一优点相对于软链接其实并不明显(因为软链接占用的磁盘空间也很少)。另外,硬链接有以下一些局限:1)不能跨文件系统创建硬链接。原因很简单,inode号只有在一个文件系统内才能保证是唯一的,如果跨越文件系统则inode号就可能重复。2)不能对目录创建硬链接。原因我在稍后解释。正因为硬链接的这些局限,加之软链接更加易于管理,所以软链接更加常用 软链接又称为符号链接(symbolic link),简写为“symlink”。与硬链接仅仅是一个目录项不同,软连接实质上本身也是个文件,不过这个文件的内容是另一个文件名的指针。当Linux访问软链接时,它会循着指针找出含有实际数据的目标文件。同样用书本来打个比方,软链接是书本里的某一章节,不过这一章节什么内容都没有,只有一行字“转某某章某某页” 3 两种链接文件的区别 软链接可以跨越文件系统指向另一个分区的文件,甚至可以跨越主机指向远程主机的一个文件,也可以指向目录。当创建了一个软链接文件后,它的权限为777,即所有权限都是开放的,实际上你也无法使用chmod命令修改其权限,但是实际文件的保护权限仍然起作用 软链接还可以指向不存在的文件(可能是原来指向的文件被删除了,或者指向的文件系统尚未挂载,或者最初建立该符号链接的时候就指向了一个不存在的文件等等),此时称这种状态为“断裂”(broken)。与之相对的是,硬链接是不能指向一个不存在的文件的 另外,在Linux上创建一个指向目录的软链接是允许的,但是却不能创建一个指向目录的硬链接。其实在UNIX操作系统的历史上,对目录创建硬链接曾经是允许的。但人们发现,这样做会出现很多问题,尤其是一些对目录树进行遍历操作的如fsck、find等命令无法正确执行。在《Unix高级环境编程》中提到作者Steven在自己的系统上做过实验,结果是:创建目录硬链接后,文件系统变得错误百出。因为这样做会破坏文件系统的树形结构,可能会使目录之间出现环 为什么软链接可以指向目录而硬链接不行呢?根本原因在于软链接实质上是一个文件,而硬链接实质上是一个目录项(dentry)。

文档评论(0)

docman126 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档