Linux 硬链接和软链接小结

每个linux存储设备的分区被格式化成文件系统后,

一般生成两个部分:

第一部分是inode;inode是用来存储数据属性信息的;

第二部分是block;block是用来存储实际数据的 例如照片 视频;

inode具有指向文件实体的功能,但是inode唯独不包含文件名

文件名保存在它上一级目录的block中。

inode是有大小的

inode的大小在分区被格式化创建文件系统之后就无法更改了,格式化之前可以指定inode的大小,不过一般工作环境没这个需求

查看:

dumpe2fs /dev/sda1|grep -i "inode size"

查看文件系统inode的总量和剩余量和查看文件系统的block的总量和剩余量

磁盘空间是否满了(no space left on device) 由两项参数决定
第一是inode是否满了 第二是block是否满了 任何一个满了都无法存放文件了
可以使用df -i 和 df -h 查看

inode:

1.磁盘被分区格式化为文件系统之后会生成inode和block

2.inode的作用是存放文件的属性信息以及作为文件的索引的功能(它指向文件的实体)

3.inode是磁盘上的一块存储空间;

4.inode号相同的文件互为硬链接文件,可以认为是一个文件的不同的入口

5.一个文件被创建后至少要占用一个inode和一个block

6.查看文件的inode信息: ls -li 或者用stat 命令查看

7.生成指定的inode大小

mkfs.ext4 -b 2048 -I 256 /dev/sdb

block:

1.磁盘读取文件数据是按block为单位读取的

2.一个文件可能要占用多个block 每读取一个block就会消耗一次磁盘I/O;

3.如果想要提升磁盘I/O性能,那么就要使磁盘一次性读取的数据尽量的多(block大小合理)

4.如果block的大小太大,存放小的文件(远小于block大小),就会造成空间浪费,如果block太小,会消耗磁盘I/O;

5.一般block大小为4K

6.mkfs.ext4 -b 2048 -I 256 /dev/sdb 可以设置block大小

打开文件的基本流程:

Linux下删除文件的原理:

linux的文件名是保存在父目录的block里面的,并指向这个文件的inode节点,这个文件的inode节点
再标记指向存放这个文件的block的数据快,我们删除一个文件,实际上并不清除inode节点和block
的数据,只是在这文件的父目录里面的block中,删除这文件的名字,从而使得这文件名消失,并且无法指向这个文件
的inode节点,当没有文件名指向这inode节点的时候,会同时释放inode节点和存放这个文件的数据块,并且更新
inode map和block map今后让这些位置可以放置其他文件数据

每个文件都有2个link计数器:i_count 和 i_nlink。

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

猜你喜欢

转载自www.cnblogs.com/hzdwwzz/p/9892558.html