【Linux】————磁盘与文件系统
发布时间 - 2025-06-20 00:00:00 点击率:次一、磁盘的物理结构
磁盘的物理结构如图所示:
其中具体的物理存储结构如下:
磁盘中存储的基本单位为扇区,一个扇区的大小通常为512字节或4KB,我们这里暂且认为是512字节。一般来说,一个扇区都是512字节,同半径所有的扇区构成了一圈磁道。
因此,当我们需要读取指定文件数据时,首先要确定是哪一个盘面,其次再确定是哪一个磁道,最后根据扇区的编号去定位扇区。通过磁头、柱面(磁道)、扇区来定位扇区的方法称为CHS定位法。
一个普通文件包括属性和内容,本质上都是数据,占据一个或多个扇区。我们既然能够用CHS定位任意一个扇区,就能定位任意多个扇区,从而从硬件角度读取或写入文件。
二、磁盘逻辑抽象我们已经知道如果操作系统可以得知CHS的地址,就能够访问任意一个扇区。但是由于操作系统是软件,磁盘是硬件,为了防止硬件发生迭代变化而操作系统也需要随之变化,就需要做好操作系统与硬件的解耦工作,因此操作系统内部使用的不是CHS的地址。
为了减少进行IO操作的频率,操作系统与外设进行IO操作的基本单位大小是4KB(可以调整)。即使只需要修改一个字节的数据,也需要把这个数据所在的4KB大小的数据都加载进内存,修改好后再统一写回磁盘,因此我们把磁盘称为块设备。操作系统需要有一套新的地址来进行块级别的访问。
把磁盘磁道看作一个连续的空间结构:
扇区就相当于连续的数组,此时定位一个扇区只需要一个数组下标。由于操作系统是以4KB为单位进行IO的,所以一个操作系统级别的文件块要包括8个扇区。操作系统不关心扇区的概念,计算机常规的访问地址是通过起始地址和偏移量的方式进行的,因此操作系统访问数据块时,只需要知道数据块的起始地址和4KB就可以了,把数据块看作一种类型。
三、文件系统由于磁盘很大,为了更加方便的管理,操作系统对磁盘块进行了分区。分区后再对每一个磁盘区域进行分组。具体结构如下:
在操作系统对磁盘进行分区时,会在最开始的位置设置一个Boot Block,这段区域主要保存与操作系统相关的内容,比如分区表、镜像地址等。一般而言,这个分区存在于0号盘面的0号磁道的1号扇区。当用户开机时,操作系统会加载磁盘的驱动,读取磁盘的分区表,再从特定分区的开始位置读取到操作系统所在的地址,并加载操作系统,此时操作系统才算真正运行起来。
之后是操作系统对每一个分区进行分组形成的诸多Block group,即块组。每一个Block group都有上图所示的6块区域。
1、Super BlockSuper Block保存的是文件系统的所有属性信息,包括文件系统的类型、整个分组的情况。记录的信息主要有:block和inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最后一次写入数据的时间,最近一次写入磁盘的时间等其他文件系统的相关信息。
2、Group Descriptor TableGDT为组描述符,保存该组内的详细统计等属性信息。比如本组内从哪里到哪里是哪部分内容,本组被使用了多少等。
3、inode Table一般而言,我们把文件内部所有属性的集合称为inode节点,一般大小为128字节。一个文件会有一个inode,一个分组内会有大量的文件,也有大量的inode节点,所以在组内会有一个专门的区域来保护这些inode节点,这个区域就称为inode Table,也叫inode表。
在分组内部,每个inode表都有自己的inode编号,inode编号本身也属于对应文件的属性,Linux查找一个文件的时候,也是通过inode编号来查找的。
一个inode对应一个文件,该文件的inode属性和该文件对应的数据块是有映射关系的。
4、Data Blocks文件的内容是变化的,用数据块来进行保存。所以要保存一个有效文件的内容,就需要n个数据块。如果有多个文件就需要多个数据块。这些数据块所在的区域就是Data Blocks。一个数据块的默认大小是4KB。
Linux查找一个文件,首先找到该文件的inode。在inode结构体内部有一个int blocks[NUM]数组,数组内记录了存储该文件内容的数据块的地址。一个分组中,百分之95以上的内容都是Data Blocks。
当操作系统要加载一个文件时,只加载该文件的inode节点。而inode节点中包含该文件内容数据块的映射关系,想要访问哪部分内容,就根据映射关系把哪一部分内容加载到内存中。
5、inode Bitmapinode Bitmap是一个位图结构,每个bit表示一个inode是否空闲可用。
6、Block BitmapBlock Bitmap是一个位图结构,记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用。
四、Linux下文件系统在Linux中,使用ls命令加上-i选项,就可以观察到文件的inode:
1、inode与文件名Linux系统只认inode
值,且inode属性中不会包含文件名,因为文件名只是提供给用户看的
任何一个文件一定存在于目录中,目录其实也是一个文件,也有自己的inode值和对应的数据块,目录的数据库块里保存的是该目录的文件名和inode值对应的映射关系,而且在目录内,文件名与inode编号互为key值
inode number在一个分区内唯一有效,不能跨分区使用。根据inode number可以确定该文件在当前分区的哪一个分组。
2、文件的增删查改2.1、查看文件内容首先要在当前目录下找到目标文件的inode number。一个目录也是文件,也隶属于一个分区,在该分区中通过目标文件的inode number找到分组,在该组的inode Table区域找到目标文件的inode。通过目标文件的inode与对应Data blocks的映射关系,找到该文件的数据块,加载到操作系统,最后显示在显示器上。2.2、删除文件在当前目录下,根据文件名找到目标文件的inode number。根据inode number找到目标文件的inode,结合与对应Data blocks的映射关系,把block bitmap对应的比特位设置为0。根据inode number把inode bitmap对应的比特位设置为0。2.3、创建文件操作系统在目录所处的分组里扫描inode bitmap,找到空余的位置并设置为1,获得inode number。把该文件创建出来后的默认属性填充到对应的inode中。在当前所处的目录文件的Data blocks里追加一条新的文件名与inode number的映射关系。2.4、补充内容>
# linux
# 操作系统
# 结构体
# int
# number
# table
# 数据库
# 扇区
# 该文件
# 磁道
# 加载
# 多个
# 都是
# 文件系统
# 分区表
# 会有
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
南京网站制作费用,南京远驱官方网站?
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
如何打造高效商业网站?建站目的决定转化率
中国移动官方网站首页入口 中国移动官网网页登录
如何在新浪SAE免费搭建个人博客?
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
网站制作壁纸教程视频,电脑壁纸网站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel如何实现本地化和多语言支持?(i18n教程)
iOS发送验证码倒计时应用
微信小程序 闭包写法详细介绍
如何用5美元大硬盘VPS安全高效搭建个人网站?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
微信小程序 wx.uploadFile无法上传解决办法
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
如何在IIS中新建站点并配置端口与物理路径?
原生JS实现图片轮播切换效果
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
详解jQuery中基本的动画方法
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
JavaScript常见的五种数组去重的方式
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
利用JavaScript实现拖拽改变元素大小
LinuxCD持续部署教程_自动发布与回滚机制
中山网站制作网页,中山新生登记系统登记流程?
QQ浏览器网页版登录入口 个人中心在线进入
Android自定义listview布局实现上拉加载下拉刷新功能
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
网易LOFTER官网链接 老福特网页版登录地址
如何快速完成中国万网建站详细流程?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
iOS验证手机号的正则表达式
如何确保FTP站点访问权限与数据传输安全?
昵图网官方站入口 昵图网素材图库官网入口
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
太平洋网站制作公司,网络用语太平洋是什么意思?
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法

