设为首页 收藏本站
查看: 886|回复: 0

[经验分享] linux 文件删除详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-6 08:58:31 | 显示全部楼层 |阅读模式
linux 文件删除详解



1.1 linux 文件的存储

linux在建立文件系统时会将磁盘逻辑上规划成各个块,inode块 与block块 每一个块都对应一个号码(inode号 block号),在本文件系统中唯一 ,每个inode 块缺省为256 byte  block块缺省为4K 。

[iyunv@Centos-1 ~]# dumpe2fs /dev/sda1|egrep  -i "block count|Inode count|block size|inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode count:              51200
Block count:              204800
Reserved block count:     10240
Block size:               1024
Inode size:           128
[iyunv@Centos-1 ~]#

创建目录时系统会分配至少一个inode 块和block块,创建一个档案时文件系统会分配至少一个inode与相当于档案大小的 block 块 ,
inode块存储目录或文件的属性,如下:
  •    owner/group
  •    read/wirte/excute
  • type
  • ctime    atime     mtime
  • size
  • flag(ID)
  • pointer  (指向该文件对应的block)


block块则存储文件的数据内容:   
              对于目录:block 存储该目录下的文件结构并为每一个文件名做一条指向该文件inode的链接(通过inode号表示)。
              对于文件:block存储文件真正的内容数据,
注意:文件的block内并不存放文件名

2.1 文件的读取
读取文件这是读取文件的block快的内容,系统是怎么找到block的呢?
以读取/data/test.txt 为例:
首先系统会去/ 找到文件上级目录即/data 对应的inode号,通过inode号找到inode块。inode块中记录了此目录的属性,系统会验证是否满足/data 的权限要求,若符合会得到/data
对应的block号,找到block块,block块中记录了其下文件及目录对应的inode号,找到/data/test.txt的inode块,比对是否满足权限要求,符合会得到/data/test.txt的block号,找到block块读取内容。

如图:

wKioL1fM6kSjnIs_AAFNgjCjLyQ269.jpg

由此可知:文件删除自是删除文件上级目录中对于该文件的一条记录。以使环节四中断,系统自然找不到  文件。


3.1 结合文件权限相互验证

实例1-1  删除/home/redhat/data/test  文件
wKiom1fM61yjddptAAAZHjf5XGU456.jpg

此时对redhat用户对test文件具有读写执行权限
执行删除
wKioL1fM62rTljrzAAAZ3oRXjaA106.jpg

没有权限无法删除

文件删除只是删除文件上级目录中对于该文件的一条记录,实际的操作对象是文件的上级目录的block块,需要对上级目录具有wx权限,
wKioL1fM65azaWCwAAAat9ZFiaU442.jpg

赋予data wx
wKiom1fM6-DiJaFUAABKui5RHdk898.jpg

此时data下以没有了 test
由于之前为test创建了一个硬链接 text,此时test并没有被删除,它的数据还是真实存在的,
删除的自是test的一个硬链接,若要真正删除需要删除文件所有的硬链接

wKiom1fM9cuje-7SAADVcIH3gw4994.jpg

     文件所占有的inode与block 并不会清空,只是打上未使用的标记,当有文件写入时会覆盖标记的inode和block


以上删除的自是文件系统内的test,如果有程序在调用test  那么它的磁盘空间是不会释放的,需要停止程序,释放test的存储空间,这样才是删除test。

4.1 综上所述:


linux  是通过控制文件的link数来实现文件的删除。
    link 指  文件的硬链接   i-nlink
                以及进程调用的 i-count
               只有两个同事不在时文件才会被删除


wKioL1fM9gLgikn_AADM6Tau-JQ055.jpg
可使用lsof  -d  查看使用文件的进程 一结束进程 释放文件空间。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-268290-1-1.html 上篇帖子: CentOS6基础网络配置 下篇帖子: linux逻辑卷管理 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表