【Linux】了解磁盘/文件系统/inode
创始人
2024-05-14 13:59:25
0

文章目录

  • 一.磁盘
    • 1.磁盘的结构
    • 2.磁盘的定位(寻找方案)
    • 3.磁盘的分区与格式化介绍
  • 二.理解inode
  • 三.ext2文件系统的存储方案


一.磁盘

1.磁盘的结构

在这里插入图片描述

在这里插入图片描述

问题1:什么是磁盘?

磁盘是在冯诺依曼体系结构中几乎唯一的机械设备,机械设备意味着它的效率低,那么我们为什么还会使用磁盘呢?因为磁盘相比我们所熟知的内存有一个极大的优势,那就是永久性,磁盘是一种永久性存储介质,而内存是一种掉电易失存储介质,也就是没电了,存储的数据就没了。因此目前所有的普通文件都是存储在磁盘上的。

磁盘在冯诺依曼体系结构当中既可以充当输入设备,有可以充当输出设备。
在这里插入图片描述

问题2:了解磁盘结构

介绍一下磁盘中的几个重要部分
盘片(Platter):磁盘一般是由多个盘片组成的,而每个盘片都有上下2个盘面。
磁头(Head) :每个盘面都有一个对应的磁头,也就是一个盘片都有上下2个磁头。磁头的作用是对磁盘进行写入和读取
磁道(Track) :当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在盘片的表面画出一个圆形轨迹,这个圆形轨迹就称为磁道。
扇区(Sector) :每个磁道都被切分为很多扇形区域,这个扇形区域被称为扇区,磁盘在寻址的时候,基本单位是扇区(512字节)。如图所示,越靠近同心圆的扇区面积越小,越远离扇区的同心圆面积越大,但是每一个扇区的存储大小均为512字节
柱面(Cylinder):不同盘片的相同编号的磁道构成的圆柱面就被称之为柱面。

磁盘是计算机中唯一一个机械结构并且是一个外设,相对于其他存储设备来说较慢。但是价格低廉、存储量大,成为了企业存储设备的首选。磁盘磁头和盘面之间的距离极近,不能进灰尘,使用时禁止搬移抖动刮花盘面,以免造成数据丢失。

磁盘通过磁头充放电,完成盘面南北极的调转,即二进制数据的写入

2.磁盘的定位(寻找方案)

对磁盘进行读写操作时,一般有以下几个步骤(CHS定位法):
1、先定位磁道(cylinder)(柱面)
2、定位磁头(head)(即盘面)
3、定位扇区(sector)。

磁头会通过摆动确认在哪个磁道,通过盘片高速旋转让磁头定位扇区。(磁盘转速与磁头寻址速度匹配,所以盘片旋转速度越快,该磁盘的IO效率越高)

3.磁盘的分区与格式化介绍

1.线性存储介质

将一摞磁盘沿磁道“拉直”,就抽象成了线性结构。想想磁带,当磁带被卷起来时,其就像磁盘一样是圆形的,但当我们把磁带拉直后,其就是线性的。那么整个磁盘可以看做一个sector arr[n]数组,对磁盘数据的管理就变成了对数组的管理。只要知道了扇区的下标,就可以定位扇区。这个下标在操作系统内部称为LBA地址。根据LBA地址可以转化为CHS地址,从而找到对应扇区。
在这里插入图片描述

为什么操作系统要将CHS定位法抽象为LBA地址?

1.便于操作系统管理硬盘;
2.不想让操作系统的代码和硬件强耦合,硬件的变化并不会影响操作系统。

2.磁盘分区

看作线性存储介质后,就方便我们对磁盘进行管理了。因为磁盘的容量很大,我们可以对磁盘进行分区管理。磁盘通常被称为块设备,一般以扇区为单位,一个扇区的大小通常为512字节。我们若以大小为512G的磁盘为例,该磁盘就可被分为十亿多个扇区。在分区之后,对每个区域的管理都是相同的,不同的目录与文件就可以存储进不同的分区,这将很大程度的减少工作量。

在Linux中,我们可以通过以下命令查看我们磁盘的分区信息:

1 | [zxn@VM-0-15-centos ~]$ ls /dev/vda* -l

在分区之后,我们可以每个区域进行格式化。
  
大小为4KB的页框和页帧

操作系统中内存以4KB大小划分,每个空间被称为页框

磁盘中的文件,尤其是可执行文件也时安装4KB大小划分好的,每个块被称为页帧

磁盘的最小单位是扇区,512个字节。操作系统的文件系统每次读取数据会以1KB,2KB,4KB为基本单位(大部分是4KB)读取至内存。以4KB为基本单元进行IO时,有时4KB的数据并不能完全被利用,但是这不代表浪费。根据局部性原理,当计算机访问某些数据时,它附近的数据也有非常大的概率被访问到,加载4KB有助于提高IO效率,同时增大缓存命中率。(本质上是一种数据预加载,以空间换时间的做法)。

3.磁盘的格式化

当磁盘完成分区后,我们还需要对磁盘进行格式化。磁盘格式化就是对磁盘中的分区进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除。
简单来说,磁盘格式化就是对分区后的各个区域写入对应的管理信息。

其中,写入的管理信息是什么是由文件系统决定的,不同的文件系统格式化时写入的管理信息是不同的,常见的文件系统有EXT2、EXT3、XFS、NTFS等。

二.理解inode

磁盘文件由两部分构成,分别是文件内容和文件属性。文件内容就是文件当中存储的数据,文件属性就是文件的一些基本信息,例如文件名、文件大小以及文件创建时间等信息都是文件属性,文件属性又被称为元信息。

在Linux操作系统中,文件的属性信息和内容是分离存储的,其中保存元信息的结构称之为inode,因为系统当中可能存在大量的文件,所以我们需要给每个文件的属性集起一个唯一的编号,即inode
,inode是一个文件的属性集合,Linux中几乎每个文件都有一个inode,为了区分系统当中大量的inode,我们为每个inode设置了inode编号。

在命令行当中输入ls -i,即可显示当前目录下各文件的inode编号
在这里插入图片描述

三.ext2文件系统的存储方案

磁盘采用分而治之的思想,例如一块500G的磁盘可以划分成4个125G进行管理,每个125G又可以分为多个5G进行管理等。计算机为了更好的管理磁盘,会对磁盘进行分区。而对于每一个分区来说,分区的头部会包括一个启动块(Boot Block),对于该分区的其余区域,EXT2文件系统会根据分区的大小将其划分为一个个的块组(Block Group)。每个组块都有着相同的组成结构,每个组块都由超级块(Super Block)、块组描述符表(Group Descriptor Table)、块位图(Block Bitmap)、inode位图(inode Bitmap)、inode表(inode Table)以及数据表(Data Block)组成。

注意: 启动块的大小是确定的,而块组的大小是由格式化的时候确定的,并且不可以更改。
在这里插入图片描述

在这里插入图片描述
1.Super Block(超级块): 存放文件系统的结构信息。记录的信息主要有:Data Block和inode的总量,未使用的Data Block和inode的数量,一个Data Block和inode的大小,最近一次被挂载的时间,最近一次写入数据的时间,最后一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统的结构就破坏了,幸运的是,在一个分区中,超级块的数量不止一个,起到了备份的作用。

2.Group Descriptor Table(块组描述符表): 描述该分区中块组的属性信息。

3.Block Bitmap(块位图): 块位图当中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用。用0表示某位没有被使用,用1表示某位数据块已经被使用。

4.inode Bitmap(inode位图): inode位图当中记录着每个inode是否空闲可用。用0表示某位没有被使用,用1表示某位inode已经被使用。

5.inode Table(inode表): 保存了分组内部所有的可用(已使用+未使用)的inode。用来存放文件的属性信息的,如文件的大小、权限、类型、创建时间、所属组、所属用户等。我们使用ls -l看到的信息,都是从这里获取的。每个文件对应一个inode,因此每个inode中都存储一个inode编号用来区分。唯独文件名不在inode表中存储。一个文件对应一个inode,inode是固定大小。每个分组中的inode为了区分彼此,它们都有自己的ID。同一分区的inode是连续的,不同分区的inode是无关联的

6.Data blocks(数据块): 保存的是分组内部所有文件的数据块。单个Data block:存放文件内容,大小随文件大小变化而变化。但是对于目录文件:会存放目录下的所有文件名到其中。文件名保存在它所在目录的数据块中!

如何理解创建一个空文件?

1.通过inode的位图,找到一个未使用的inode,然后将某个空闲位置的inode值修改为1。;
2.在inode表中找到对应的inode,并将文件的属性信息填入到inode结构中;
3.将该文件的inode编号与文件名这对映射关系添加到目录文件的数据块中。

如何理解对文件写入信息?

1.通过文件的inode编号找到对应的inode结构,扫描Block Bitmap,找到空闲的块,将其值改为1;
2.通过inode结构找到存储该文件的数据块,并将数据写入数据块,建立数据块和inode结构的对应关系;
3.说明:一个文件使用的数据块和inode结构的对应关系,是通过一个数组来进行维护的,该数组一般可以存储15个元素,其中前12个元素分别对应该文件使用的12个数据块,剩余的三个元素分别是一级索引,二级索引和三级索引,当该文件使用的数据块的个数超过12个时,可以用这三个索引进行数据块的扩充。

如何理解删除一个文件?

1.将该文件的inode在inode位图中置为无效;
2.将该文件申请过的数据块在块位图中置为无效。

此操作并不会真正将文件的属性信息和内容删除,而只是将其inode号和数据块号置为了无效,所以我们如果想要恢复文件,只需要找到被删除的文件的inode编号,将inode Bitmap中的比特位由0置1,找到该文件在inode Table中的位置,根据其中的映射关系找到文件的数据块,并把Block Bitmap由0置1即可恢复文件。注意文件被删除后,如果想恢复,就不要再创建文件,因为后续创建其他文件或是对其他文件进行写入操作申请inode号和数据块号时,可能会将该置为无效了的inode号和数据块号分配出去。

如何理解目录?

通过以上学习,我们知道了文件系统是使用inode编号查找和删除文件的,但是用户用的可不是inode编号,而是文件名。
1.都说Linux下一切皆文件,目录当然也是个文件,也有自己的inode编号和数据块;
2.目录的inode结构当中存储的就是目录的属性信息,比如目录的大小,拥有者等;
3.但是目录的数据块中存储的是该目录下的文件名以及对应文件的inode编号(文件名和inode的映射关系),所以在一个目录下创建文件,必须要有写入权限,原因就是创建文件需要在目录的数据块中写入文件名和inode。

这同时也解释了一个目录下不能出现同名文件的原因,

相关内容

热门资讯

安卓系统app和ios系统的区... 你有没有发现,手机里的APP就像是个大杂烩,各有各的特色,各有各的玩法。今天,咱们就来聊聊安卓系统和...
宿迁综合办公系统安卓,便捷高效... 你有没有听说最近宿迁市推出了一款超级方便的安卓应用——宿迁综合办公系统?这可是个大新闻,让我来给你详...
小米平板4系统安卓下载,畅享智... 亲爱的数码爱好者们,你是否在寻找一款性价比超高、性能稳定的平板电脑呢?小米平板4绝对是你的不二之选!...
安卓系统易用性盘点,人性化设计... 你有没有发现,手机里的安卓系统就像一个万能的小助手,无论你是喜欢玩游戏、看视频,还是处理工作,它都能...
鸿蒙系统中出现安卓代码 鸿蒙系统中的安卓代码奇缘在当今科技飞速发展的时代,智能手机已经成为了我们生活中不可或缺的一部分。而在...
安卓系统的双开免费的,免费畅享... 《探索安卓系统的双开免费新世界》在数字化时代,智能手机已经成为我们生活中不可或缺的一部分。而在这众多...
转国外的安卓系统,探索国外安卓... 你有没有想过,让你的安卓手机体验一下国外的风味呢?想象那些国外的应用、游戏,还有那独特的系统设置,是...
安卓系统韩国能用吗,兼容性与使... 你有没有想过,如果你去韩国旅游或者工作,你的安卓手机还能不能用呢?这个问题可真是让人好奇啊!毕竟,每...
安卓手机系统占多少储存 你有没有发现,你的安卓手机越来越慢了?是不是觉得存储空间不够用,连个新应用都装不下?别急,今天就来给...
freemeos是安卓系统吗,... 你有没有听说过freemeOS这个系统?是不是好奇它是不是安卓系统呢?今天,我就来给你揭秘这个神秘的...
安卓系统其他应用耗电大,那些默... 手机电量总是不够用?是不是觉得安卓系统的其他应用耗电特别大?别急,今天就来给你揭秘这个谜团,让你手机...
华为os系统怎么换安卓系统,轻... 你有没有想过,你的华为手机里那个自家的OS系统,突然间想换换口味,试试安卓的精彩世界呢?别急,今天就...
诺基亚回用安卓系统吗,新篇章的... 你有没有听说最近的大消息?诺基亚,那个曾经手机界的巨头,竟然有可能会重新启用安卓系统!这可不是开玩笑...
安卓软件开发考勤系统 你有没有想过,在忙碌的安卓软件开发工作中,如何轻松管理团队考勤呢?别急,今天就来给你揭秘一款特别实用...
炉石传说安卓系统要求,解锁全新... 亲爱的玩家们,你是否已经迫不及待地想要在安卓设备上畅玩《炉石传说》了呢?别急,在这之前,你得先确保你...
安卓手机刷掌阅系统 你有没有想过,你的安卓手机可以变成一个掌阅小能手呢?没错,就是那种随时随地都能畅读各种电子书的掌阅系...
飞车手游ios系统跟安卓系统,... 你有没有发现,最近手机上的一款飞车手游特别火呢?这款游戏不仅画面精美,操作流畅,而且玩法多样,吸引了...
安卓平板显示系统不兼容,安卓平... 你有没有遇到过这种情况?买了一款心仪的安卓平板,满怀期待地想要体验各种精彩应用,结果却发现有些应用显...
安卓系统安装破解app病毒,安... 你知道吗?在安卓系统上安装破解版的APP,听起来是不是有点刺激?但别高兴得太早,这背后可是隐藏着不少...
安卓版桌面操作系统,探索安卓桌... 你有没有想过,你的安卓手机桌面操作系统,其实就像是一个小小的魔法世界呢?在这个世界里,你可以随意布置...