软连接与硬链接区别

前言:

今天学习了文件系统,简单的接触到文件系统构成的原理。原来我们不管在linux和win上面删除某个文件只是删除一个链接而已。而linux把链接分为软链接和硬链接。接下来我们就从文件系统构成的基本原理出发来说明下linux软链接和硬链接的区别。

文件系统简述:

linux的哲学就是一切皆文件。为了方便人们的使用,我们可以通过看文件名来区分不同的文件。但作为只识别0 1 的机器,让它识别一串文字肯定复杂的多。所以linux文件系统用一串数字来标识一个文件,而且这个数字在文件所处的分区中是唯一存在的。这串数字就是inode号。那inode是什么? 文件主要有两个部分数据构成,即元数据(metadata)和数据(data)。数据就是我们向往文件中保存的数据,元数据则是一些与文件内容本身无关,但为了管理文件或者操作文件所必要的一些信息。比如:文件的大小,文件的权限等等。我们把数据以文件系统规定的方式存储在规定的地方(此内容在具体介绍文件系统时再深入了解),把元数据存储在一个叫做inode的局域。全称index node(索引节点)。inode也保存的元数据中包含了文件数据的位置。这也是系统能通过inode号找到文件的原因。

前文已经提到我们我们所能看到的文件名只是为了方便我们自己,而linux系统内部是不使用文件名,是使用inode号码来识别文件的。我们把文件保存在目录中。目录文件的结构非常简单,就是一系列项的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。一定得明白目录的本质。这样才有利于明白后面目录的读,写,执行权限。现在我们就可以好好说道说道,用户通过文件名,打开文件到底发生了什么。实际上,系统内部这个过程分成三步,首先,系统通过目录文件中的对应项,找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据在什么为位置,读取数据。

硬链接:

虽然文件包含了元数据和数据。但是这个两个数据并不是存储在一起的。分别划分两个专门的区域,一个区域(inode)保存元数据,一个区域保存数据。若一个inode号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名,即以不同的名字指向了同一个文件。因为inode号只在本分区中唯一,所以硬链接不能跨分区,而且硬链接不能指向一个目录文件。元数据中还保存了文件的硬链接个数,当我们删除一个硬链接时,文件的硬链接个数就减一,当硬链接个数为零时,这个文件所占有的空间就会释放。文件释放也仅仅是没有了指向数据的链接。数据本身依然还存在于磁盘中。所以我们一般删除文件的操作只是删除一个指向文件的链接而已。

软连接:

硬链接有自身的限制,比如;不能跨分区创建,不能对目录创建。而软链接则天生没有这样的问题,软连接是一个单独的文件有不同于被链接文件的inode号,而且软连接指向的不是文件的数据,而只是指向文件名,它并不关心文件的内容是什么。所以软连接会存在无效链接的情况,就是找不到被链接的文件。因为inode是占磁盘空间的,所以软连接文件本身也是有文件大小的并且会占用一个inode号,inode号本身也是有限资源。

软连接与硬链接区别

原创文章,作者:M21-陕西-李贤,如若转载,请注明出处:http://www.178linux.com/52950

(1)
M21-陕西-李贤M21-陕西-李贤
上一篇 2016-10-31
下一篇 2016-10-31

相关推荐

  • lvm基本应用

    前言 一种技术要知其然,还要知其所以然 lvm简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上…

    Linux干货 2016-05-21
  • RAID各级别特性介绍

        RAID全称为独立磁盘冗余阵列(Redundant Array of Independent Disks):基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。     RAID通常被用在服务器电脑上,使用完全相…

    Linux干货 2016-06-22
  • Linux 目录配置

    Linux 目录配置 Linux目录配置标准:FHS 因为利用Linux来开发产品或distributions的团队/公司与个人实在太多了,如果每个人都用自己的想法来配置文件放置的目录,那么将可能造成很多管理上的困扰。所以/后来就有所谓的Filesystem Hierarchy Standard (FHS)标准出炉了。 根据FHS(http://www.pa…

    Linux干货 2017-03-26
  • bash的工作特性之命令执行状态返回值和命令行展开

    bash的工作特性之命令执行状态返回值和命令行展开 bash的工作特性之命令执行状态返回值和命令行展开 执行状态返回值 命令行展开 执行状态返回值     Linux下每一条命令或每一个进程执行完成会返回一个状态码. 0:成功执行 1-255:执行过程中出现异常或非正常退出 在Shell脚本中,最后…

    Linux干货 2016-11-05
  • nginx服务

      Nginx 提供web服务,也是工作在应用层的负载均衡器,拥有强大的缓存能力。 本章主要学习,web server、web reverse proxy(http)和cache 缓存服务器使用较多的是varnish+squid: 任何缓存都是反向代理,但是varnish反向代理能力还是与nginx有很大差距。所以,varnish还是做缓存服务,而…

    Linux干货 2016-11-01
  • Docker 之初次体验

    一、Docker 简介  lxc linux container,openvz  容器中各虚拟机只有一个内核,而是多个用户空间  在库中完成虚拟化,比如wine 或者在windows中运行bash  在应用程序的运行级别提供虚拟化,比如jvm   pstree , pid 为1 的进程  …

    Linux干货 2015-01-16