【Linux】:文件系统

文件系统

文件=内容+属性,前面我们所说的文件操作都是针对以打开的文件,那么未打开的文件呢?当然是在磁盘上储存着,接下来谈谈它是如何储存的。

一.认识硬件-磁盘

1.磁盘的物理构成

在2000年的时候流行过一段时间的光盘。

这种光盘有一面是光滑的,而磁盘就由一个或者多个这样的光盘组成(它的两面都是光滑的)。

磁盘有一个磁头,当电脑关机时,磁头就会转到磁头停靠点。当磁盘通电时,磁盘会顺时针或逆时针高速旋转,同时磁头也会来回摆动。整个磁盘的底部会有一个与电脑的连接口,当把磁盘插入到电脑里时,电脑就能通过连接的总线把二进制信号读入电脑。

磁头是两面都有,如果只有一个光盘那么就有两个磁头,如果是两个光盘,那么就有四个磁头。注意磁头和盘面不接触。

2.磁盘的存储构成

磁盘上的数据是有规律的,它会循着马达向外部扩散,形成一个一个的同心圈,数据就储存在这些圆上,这些同心圆被称为磁道 。在盘面上还会有一条条的线,将磁道分割成一个个扇形区域,这些区域被称为扇区。磁盘被访问的最基本单位就是扇区-一般512B/4KB。

要把数据储存到磁盘第一个问题就是定位---面->磁道->扇区。 从上往下看,多个圆重合在一起形成一个柱形结构,这个结构被称为柱面。前面说到磁头会左右摆动,就是在定位磁道。

磁盘为什么慢主要取决于:1.确认磁道;2.盘片的自转。 如果数据无序,势必会导致盘片的自转次数变多。所以运动越少,效率越高;运动越多,效率越低。

3.逻辑结构

虽然在物理结构上是圆形,但在逻辑结构上可以看成线性。

每一个扇区都有对应的下标,那么这样我们就能通过下标计算它所处的面,磁道。

回归到硬件:不仅CPU里有寄存器,磁盘里也有寄存器。

进程可以让操作系统间接的帮忙检查状态寄存器,判断状态是否变化,如果变化则操作结束,否则进行等待。然后IO访问控制寄存器,查看指令,接着对数据进行相应的操作。

二.文件系统

如果一个电脑的磁盘有800GB的大小,那么毫无疑问这对于操作系统来说太大了不易于管理。于是我们可以将磁盘划分为C盘,D盘...之类的,当然这还是有些大,于是操作系统就引入了Inode。

BootBlock:一般被称为启动分区,主要包括一些磁盘分区的起止位置,开机信息等等。

Block group:就是把磁盘划分成更多份。那么就把一块很大的磁盘变成了管理一个Block group的小快。而这些块里面的就是文件系统。

Data Blocks:存文件内容的区域。

Linux ext2文件系统,上图为磁盘文件系统图(内核内存映像肯定有所不同),磁盘是典型的块设备,硬盘分区被划分为一个个的block。一个block的大小是由格式化的时候确定的,并且不可以更改。例如mke2fs的-b选项可以设定block大小为1024、2048或4096字节。而上图中启动块(Boot Block)的大小是确定的。

相关推荐
dessler37 分钟前
Docker-run命令详细讲解
linux·运维·后端·docker
群联云防护小杜1 小时前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
PyAIGCMaster1 小时前
ubuntu装P104驱动
linux·运维·ubuntu
奈何不吃鱼1 小时前
【Linux】ubuntu依赖安装的各种问题汇总
linux·运维·服务器
icy、泡芙1 小时前
T527-----音频调试
linux·驱动开发·音视频
aherhuo1 小时前
kubevirt网络
linux·云原生·容器·kubernetes
爱码小白1 小时前
网络编程(王铭东老师)笔记
服务器·网络·笔记
zzzhpzhpzzz1 小时前
Ubuntu如何查看硬件型号
linux·运维·ubuntu
蜜獾云1 小时前
linux firewalld 命令详解
linux·运维·服务器·网络·windows·网络安全·firewalld
陌北v12 小时前
Docker Compose 配置指南
运维·docker·容器·docker-compose