【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)的大小是确定的。

相关推荐
少妇的美梦17 小时前
logstash教程
运维
chen94517 小时前
k8s集群部署vector日志采集器
运维
chen94517 小时前
aws ec2部署harbor,使用s3存储
运维
轻松Ai享生活21 小时前
5 节课深入学习Linux Cgroups
linux
christine-rr1 天前
linux常用命令(4)——压缩命令
linux·服务器·redis
三坛海会大神5551 天前
LVS与Keepalived详解(二)LVS负载均衡实现实操
linux·负载均衡·lvs
東雪蓮☆1 天前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
qq_264220891 天前
LVS负载均衡群集和LVS+Keepalived群集
运维·负载均衡·lvs
乌萨奇也要立志学C++1 天前
【Linux】进程概念(二):进程查看与 fork 初探
linux·运维·服务器
雨落Liy1 天前
Nginx 从入门到进阶:反向代理、负载均衡与高性能实战指南
运维·nginx·负载均衡