码迷,mamicode.com
首页 > 系统相关 > 详细

linux下的文件删除原理

时间:2020-01-06 09:47:39      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:停止   内容   读取   http   管理命令   文件中   服务器   lock   管理   

      1. Lniux下控制文件真正被删除的计数器

        Linuxlink的数量来控制文件删除的。只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来讲,每个文件都有两个link计数器:i_counti_link

        • i_count的意义是当前文件使用者(或被调用)的数量
          当一个文件被某一个进程引用时,对应的这个值就会增加
        • i_nlink的意义是介质连接的数量(硬链接的数量)
          当创建文件的硬链接的时候,这个值就会增加

        可以理解为i_count是内存引用计数器,i_nlink是硬盘的引用计数器

      2. rm命令原理

        对于删除命令rm而言,实际上就是减少磁盘引用计数i_nlink

        Q:如果一个文件正在被某个进程调用,而用户却执行rm把文件删除了,那么会出现什么结果?当用户执行rm删除文件后,再执行ls或其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容,这又是为什么呢?

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

        Q:当文件没有被调用,执行了rm操作之后,还能找回被删除的文件吗?

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

      3. 实际遇到的问题

        Q:web服务器磁盘空间不够了,山除了所有无用日志还是显示磁盘空间不足,但是du -sh发现磁盘空间的占用率很小,这是为什么呢?是什么导致磁盘空间不足?

        A:删除命令只是删除了文件的一个i_nlink,但是其他进程正在使用这些log文件,apachetomat,重启这些服务就好啦!

        原著:
      4. https://www.cnblogs.com/cherishry/p/5886069.html

linux下的文件删除原理

标签:停止   内容   读取   http   管理命令   文件中   服务器   lock   管理   

原文地址:https://www.cnblogs.com/tyk3201/p/12154637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!