Linux文件删除原理:

转载 2016年08月29日 15:00:05


    Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说,每个文件都有2个link计数器:i_count 和 i_nlink。

    i_count的意义是当前文件使用者(或被调用)的数量,i_nlink 的意义是介质连接的数量(硬链接的数量);可以理解为i_count是内存引用计数器,i_nlink是磁盘的引用计数器。

当一个文件被某一个进程引用时,对应i_count数就会增加;当创建文件的硬链接的时候,对应i_nlink数就会增加。

    对于删除命令rm而言,实际就是减少磁盘引用计数i_nlink。这里就会有一个问题,如果一个文件正在被某个进程调用,而用户却执行rm操作把文件删除了,那么会出现什么结果呢?当用户执行rm操作删除文件后,再执行ls或者其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容。这又是为什么呢?

这是因为rm操作只是将文件的i_nlink减少了,如果没其它的链接i_nlink就为0了;但由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以即使执行rm操作,但系统并没有真正删除这个文件,当只有i_nlink及i_count都为0的时候,这个文件才会真正被删除。也就是说,还需要解除该进程的对该文件的调用才行。

以上讲的i_nlink及i_count是文件删除的真实条件,但是当文件没有被调用时,执行了rm操作删除文件后是否还可以找回被删的文件呢?

前面说了,rm操作只是将文件的i_nlink减少了,或者说置0了,实际就是将文件名到inode的链接删除了,此时,并没有删除文件的实体即(block数据块),此时,如果及时停止机器工作,数据是可以找回的,如果此时继续写入数据,那么当新数据就可能会被分配到被删除的数据的block数据块,此时,文件就会被真正的回收了,那时就是神仙也没有办法了。

转自http://oldboy.blog.51cto.com/2561410/791322

linux下文件删除的原理精华讲解(考试题答案系列)

说明:本文为老男孩linux培训某节课前考试试题及答案分享博文内容的一部分,也是独立成题的,你可以点下面地址查看全部的内容信息。 http://oldboy.blog.51cto.com/25614...
  • oldboy8
  • oldboy8
  • 2012年12月14日 12:17
  • 174

linux系统文件删除原理

linux系统下文件名是存在父目录的block里面,并指向这个文件的inode节点,这个文件的inode节点再指向存放这个文件的block数据块。 我们删除一个文件,实际上并不是清除了inode节点...
  • codeTZ
  • codeTZ
  • 2016年09月02日 17:51
  • 828

linux rm删除文件原理

很多时候,我们都会发现,某个进程在对当前文件读写,但是我们依然能够rm, 是不是很奇怪?而windows下面,肯定会报错,”当前文件正在被使用“, 这就得从linux下面删除文件的原理说起了。   ...

linux 文件删除原理

很多时候,我们都会发现,某个进程在对当前文件读写,但是我们依然能够rm, 是不是很奇怪?而windows下面,肯定会报错,”当前文件正在被使用“, 这就得从linux下面删除文件的原理说起了。  ...
  • scl1991
  • scl1991
  • 2016年03月10日 23:14
  • 302

Linux下文件删除的原理

转自:http://www.cnblogs.com/cherishry/p/5886069.html Lniux下控制文件真正被删除的计数器 Linux是link的数量来控制文件删除的...

Linux系统文件系统的工作原理

  • 2017年08月09日 13:21
  • 3KB
  • 下载

Linux高级文件系统管理之基本RAID的工作原理

RAID0的工作原理         RAID0又称为Strip(条带化)或Stripping。它代表了所有RAID级别中最高的存储性能。RAID0是将连续的数据分散到多个磁盘上存取,这在多个磁盘上并...

Linux可插拔认证模块(PAM)的配置文件、工作原理与流程

在上一篇文章《Linux可插拔认证模块的基本概念与架构》中,我们讲到了PAM的一些基本概念和相关架构,接下来我们看看PAM的配置文件如何使用。 PAM的配置文件: 我们注意到,配置文件也放...

【Linux】make的工作原理和makefile文件

● makefile文件      make是一个命令,makefile是一个文件。make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。一个工程中的源...
  • Scenlyf
  • Scenlyf
  • 2016年06月11日 18:53
  • 2767
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux文件删除原理:
举报原因:
原因补充:

(最多只允许输入30个字)