【Linux】文件系统

磁盘的物理结构

磁盘现在我们大多数笔记本上用的都是固态硬盘了,在之前用的是机械硬盘,相比下来前者会更好,但是价格也就相对于更高。
在这里插入图片描述
通过是上面的图片见的介绍一下机械硬盘,整个的磁盘是密封状态的,将它打开大机率是将硬盘给毁了。
机械硬盘是有两个马达的,图片上有了一个它是根据盘的半径移动的,还有一个马达是在主轴的位置,它是顺时针高速旋转,这两个马达也是它为什么加机械硬盘的原因。
磁盘是有两面的,每一面都对应一个磁头,磁头和磁盘的关系是无限接近的。(没有碰在一起)
盘面上面有无数的小点,用南北极可以表示,也就是这样表示01进行读取和删除的,(大概,实际要复杂的多)
磁头和盘面没有碰到的原因是,碰到了会生热,导致内容销毁,不止是挂花的地方会破坏,周边受热也是会破坏的。

在这里插入图片描述

通过CHS的方法来确定位置,C是柱面(柱面==磁道cylinder),H是磁头(head),S是扇区(sector),使用磁头上有编号来确定是哪面,磁道来确定是哪个半径的距离,扇区就是确定最终位置。

逻辑抽象

在上面介绍了CHS地址,它可以访问任意一个扇区。
CHS的地址是否有OS直接使用呢? 并不是!!!
首先是OS是软件,而磁盘是硬件,在CHS给了一个地址,OS使用了该地址,但是如果硬件变了,导致OS也要进行改变OS和硬件做好解耦工作。
硬件的单位是512字节,OS实际进行,基本单位是4kb(可以调整的),
磁盘是块设备,所以,OS需要有一套新的地址,进行块级别的访问。

OS管理磁盘是将磁盘看作一个大数组,对磁盘的管理变成了对数组的管理。

文件系统

在这里插入图片描述

Boot Block(与开机相关)当中会保存的是系统启动相关的内容,分区表和OS的镜像地址。对应的是C盘的某个位置。
当开机是需要两个过程(并不是开机的全部),找到磁盘的设备并加载它的驱动程序。第二就是加载磁盘的分区表,就是加载电脑的各个磁盘。
Super Block 是用来保存文件系统的所有属性信息的。1.文件系统类型 2.整个的分组情况
它并不像Boot Block一样只有一份,它是在每个组当中都有一份是因为防止SB被破坏,最终导致整个分区不能被使用,Boot Block它的损坏只会导致开机问题,并不会影响数据。
Group Descriptor Table(GDT)组描述符,它是用来描述该组内的详细统计等属性信息。
一般而言,一个文件,内部所有属性的集合,inode节点(128字节),一个文件,一个inode其中,即便是一个分区,内部也会存在大量的文件即会存在大量的inode节点,一个group,需要有一个区域,来专门保存该group内的所有文件的inode节点—inode table,inode表
分组内部,可能会存在多个inode,需要将inode区分开来,每一个inode都会有自己的inode编号,inode编号,也属于对应文件的属性ID
而文件的内容是变化的,我们使用数据块进行文件内容的保存,所以一个有效的文件,要保存内容就需要使用1到N个的数据块。文件是以块的形式存储的快的单位是4KB ---- Data Blocks
Linux下查找一个文件是通过inode编号来查找的,包括读取内容。
一个inode对应一个文件,该文件的inode属性和该文件的数据块是有映射关系的。

inode Bitmap(位图):每一个bit表示一个inode是否空闲可用

block Bitmap:代表的是数据块是否空闲可用

重新认识目录

目录也是属于文件,也是有它自己的inode,而目录的数据块当中保存的是该目录下文件inode编号与该文件的文件名之间的映射关系。
通常我们是怎么访问到一个文件的呢?
在特定的目录下访问log.txt
现在当前的目录下找到log.txt对应的inode编号
目录也是一个文件,也是隶属于一个分区,结合inode,在该分区找到改组,在该组中inode table找到文件的inode。
通过inode和对应的data block的映射关系,找到该文件的数据块加载到OS

如果inode只是单单的用数组建立和datablock的映射关系,15*4kb,是不是意味着一个文件最多放60kb
并不是的,会采用索引的方式解决该问题。

查看文件的inode编号

ls -i

软硬链接

在这里插入图片描述

硬链接

从上面的代码当中得知硬链接之后两个文件的inode编号一样,这也就说明它们的属性和内容也是一样的。
在将log.txt删除,剩下的log.hard可以叫做是被删除文件的重命名。
硬连接的数量也从一增加到二。
log.txt和log.hard的链接状态完全相同,他们被称为指向文件的硬链接。内核记录了这个连接数,inode
1186994 的硬连接数为2。
我们在删除文件时干了两件事情:1.在目录中将对应的记录删除,2.将硬连接数-1,如果为0,则将对应的磁盘释放。
查看文件信息时权限后面的数是硬连接数。
在这里插入图片描述
理解在一个目录下在创建一个目录,新目录的硬连接数是两个,一个是她自己另一个是隐藏文件。
避免形成环形回路,但是为什么隐藏文件不怕,因为层浅,并且由操作系统维护。
所以也就导致目录无法建立硬链接。

硬链接理解成为浅拷贝,软连接理解称为深拷贝(我们自己理解,与实际无关)

软连接

在这里插入图片描述

软链接的实际使用方式也可以理解成为是windows下的快捷方式,这样就不用再使用一大段地址去运行程序。
硬链接是通过inode引用另外一个文件,软链接是通过名字引用另外一个文件,在shell中的做法

删除文件的方式

rm
unlink

acm(文件的三个时间)

在这里插入图片描述

上面的三组时间分别代表的是:
Access代表的是访问文件时间,但是并不是每次的访问都会更新时间,因为访问相对于写来说它的成本就小了很多,并且也会相对来说更频繁。
Modify代表的是修改文件内容的时间,但是大部分修改了文件内容,也会更改了文件属性,也就导致文件修改属性的时间改变。
Change代表的是修改文件属性的时间

在这里插入图片描述

访问时间并没有变
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值