系统运维必会知识点

1 删除文件的原理

文件删除:需要具备以下两个条件同时具备才生效

1 受文件的硬连接控制,有一个硬连接i_link+1,减少一个硬连接,i_link-1,当i_link=0时,文件就被删了

列:创建文件i_link=1,为这个文件创建一个硬连接,i_link=2,删除一个硬连接,i_link-1,删除源文件i_link=0了

2 受进程占用控制,当有进程使用这个文件时,有一个进程占用这个文件i_count+1,即i_count=1。当减少一个进程占用i_count-1,即i_count=0,当没有进程调用时i_count=0.

 

当i_link=0并且i_count=0的时候,文件才会被真正的删除。

有程序在用文件的时候i_count + 1.

 

查看被删除但仍由进程占用的文件名

[root@test1 shell]# rm -rf aa/

[root@test1 shell]# lsof | grep del

bash      25710      root  cwd       DIR              253,0        0    2623611 /hexudong/shell/aa (deleted)

[root@test1 shell]#

 

 

Inode

1磁盘分区格式化ext4文件胡会产生一定数量的inodeblock

2 inode是索引节点,作用是存放文件的属性信息以及作为文件的索引

3 ext3/ext4文件系统的block存放的是文件的实际内容

4 inode是一块存储空间,c6非启动分区inode默认大小256,c5是128字节

5inode 是一串数字,不同的文件对应inode(一串数字)在文件系统里是唯一的

6 inode 相同的文件,互为硬连接文件

7一个文件被创建后至少占用一个inode和一个block

8 block的大小一般有1k,2k,4K 几种。其中引导分区等为1K,其他普通分区去4K(c6)

9 如果一个文件很大,可能占多个block,如果文件很小,至少占一个。并且剩余空间浪费了。

10 inode大小和总量查看

    dumpe2fs  /dev/sda3|egrep -i "block size|Inode size" 

    dumpe2fs  /dev/sda1 | egrep -i "block count|lnode count"

11 查看inode的总量和使用量命令df �Ci

12 如何生成及制定inode大小mkfs.ext4 �Cb 2048 �Cl 256 /dev/sdb

 

block小结

 

1)磁盘读取数据是按block为单位读取的。

2)一个文件可能占用多个block。每读取一个block就会消耗一次磁盘i/o

3) 如果要提升磁盘IIO,那么就要尽可能一次性读取数据尽量多

4)一个block只能存放一个文件的内容,无论内容有多小,如果block 4K,那存放1K文件,剩余3K就浪费了。

5)block并非越大越好。Block太大对于小文件存放就会浪费磁盘空间,例如:1000K文件,BLOCK为4K,占用250个block,block为1K,占用1000个BLOCK。访问效率谁更高?消耗IO分别为250次和1000次

6:)大文件(大于16K)一般设置BLOCK大一点,小文件(小于1K)一般设置BLOCK小点

7)block太大例如4K,文件都是0.1K的,大量浪费磁盘空间

8)block的设置也是格式化分区的时候,mkfs.ext4 �Cb 2048 �Cl 256 /dev/sdb

9) 文件较大时,block设置大一些会提升磁盘访问效率,ext3/ext4一般设置为4K。

 

你可能感兴趣的:(linux,系统文件,删除原理)