Linux文件系统 基础知识

Linux文件系统分配策略


块分配(blockallocation)和扩展分配(extentallocation):
块分配:磁盘上的文件块根据需要分配给文件,避免了存储空间的浪费。但当文件扩充时,会造成文件中文件块的不连续,从而导致过多的磁盘寻道时间。

扩展分配:文件创建时,一次性分配一连串连续的块,当文件扩展时,也一次分配很多块。扩展分配采用成组分配块的方式,减少了SCSI设备写数据的时间,在读取顺序文件时具有良好的性能,但随机读取文件时,就和块分配类似了。

meta-data元信息:和文件有关的信息,比如权限、所有者以及创建、访问或更改时间等。

改变文件的操作要等到所有meta-data的操作都完成后才能进行,因此,meta-data的操作会明显降低整个文件系统的性能。

所以扩展分配的策略下,因为meta-data在文件创建时写入,当文件大小没有超过所有已分配文件块大小时,就不用写入meta-data,直到需要再分配文件块的时候,因此:扩展分配概率上可以减少meta-data操作的消耗。

inode结构如下:
在这里插入图片描述

stat命令可以查看meta-data信息:

# stat znew 
  File: "znew"
  Size: 5246      	Blocks: 16         IO Block: 4096   普通文件
Device: fd00h/64768d	Inode: 2757646     Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-02-10 03:31:03.545689954 +0800
Modify: 2017-03-22 05:12:48.000000000 +0800
Change: 2019-09-20 21:03:54.673050980 +0800

 

文件的记录形式


使用索引节点(inode)来记录文件信息。索引节点包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。
一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一的元素对应。每个索引节点在数组中的索引号,称为索引节点号。

 

wKioL1ece12SUz_CAAFh0d-GLOY997.png
linux文件系统将文件索引节点号和文件名同时保存在目录中,所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表。

目录中每一对文件名称和索引节点号称为一个连接。

对于一个文件来说,有一个索引节点号与之对应;而对于一个索引节点号,却可以对应多个文件名。

文件系统如何存取文件的?
1)、根据文件名,通过Directory里的对应关系,找到文件对应的Inodenumber
2)、再根据Inodenumber读取到文件的Inodetable
3)、再根据Inodetable中的Pointer读取到相应的Blocks


连接分为软连接和硬连接,其中软连接又叫符号连接。若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。


虚拟文件系统VFS


linux支持的所有文件系统称为逻辑文件系统,而虚拟文件系统(VitualFileSystem,VFS)其实是一个接口层,位于所有文件系统的上层,管理各种逻辑文件系统,并可以屏蔽各种逻辑文件系统之间的差异,提供统一文件和设备的访问接口。

block由一个或多个sector组成,文件系统中最小的操作单位;虚拟文件系统(VFS)从硬件设备上读取一个block,实际为从硬件设备读取一个或多个sector。每个文件对应的多个block可能是不连续的。

具体文件系统所操作的基本单位是逻辑块,只在需要进行I/O操作时才进行逻辑块到物理块的映射,这显然避免了大量的I/O操作,因而文件系统能够变得高效。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值