linux连接文件的删除文件,linux 文件删除详解

linux 文件删除详解

1.1 linux 文件的存储

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

[root@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

[root@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块读取内容。

如图:

0fcda5418f4bfa43bba24644902719ca.png

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

3.1 结合文件权限相互验证

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

f4d64ca769f9527f63849289359b679d.png

此时对redhat用户对test文件具有读写执行权限

执行删除

58449c73a46c9b0ed6e4e83c02125203.png

没有权限无法删除

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

d391752e8b64ef4d9428e014f9ffc5cd.png

赋予data wx

b01a9a313e7c9edf067905da6a1fbb3c.png

此时data下以没有了 test

由于之前为test创建了一个硬链接 text,此时test并没有被删除,它的数据还是真实存在的,

删除的自是test的一个硬链接,若要真正删除需要删除文件所有的硬链接

5cae9c5442e5a0409f64571b1f06ded7.png

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

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

4.1 综上所述:

linux  是通过控制文件的link数来实现文件的删除。

link 指  文件的硬链接   i-nlink

以及进程调用的 i-count

只有两个同事不在时文件才会被删除

2bfe5b9e011a10573f473f79e22023d2.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值