当前位置:   article > 正文

Linux小黑板(5):磁盘与文件系统_文件系统和磁盘关系

文件系统和磁盘关系

 "这月蹦迪没我"


一、浅谈磁盘

        磁盘作为计算机硬件里,唯一的机械设备。在数据存储的领域,有着不可磨灭的作用。相较于,保持通电情况下具有保持数据的不丢失的内存,磁盘能够"永久性"地存储 数据。

         磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘),如今常用的磁盘是硬磁盘(Hard disk,简称硬盘)。

        磁盘作为外设,访问肯定会很慢!因此,它常常被拿来同内存的访问读取速度相比较,

  • 内存访问速度是纳秒级(10的-9次方)
  • 硬盘的访问速度是微秒级(10的-3次方)

 对比内存与磁盘从访问方式上:

  • 顺序访问:这种情况下,内存访问速度仅仅是硬盘访问速度的6~7倍
  • 随机访问:这种情况下,内存访问速度就要比硬盘访问速度快上10万倍以上 

但是很多时候,在企业中,并不会因为磁盘的访问速度而将其淘汰掉! 毕竟,内存的成本造价 远超于硬盘的成本,硬盘仍然能以更大的容量,成为存储的主流。 

(1)磁盘的存储结构

俯视结构;

盘片结构;

侧视图;

        有了上面盘片寻址的基础,也就不难理解下面的图。   

         我们都知道,计算机只认识二进制数据。那么磁盘是如何读写的呢?它是如何区别0,1的呢?

        硬盘的盘片上具有磁性,利用磁头进行影响这些带磁的物质排列顺序。磁铁圈影响它们的带电状况,来表示0,1。(显然这里的专业性,不在本篇所讲)。

(2)磁盘的逻辑结构

①LBA地址

        如果你有无穷大的力气,掰直由铝合金打造的硬盘;正如拉常 “老古董”磁带般轻松;

      逻辑区块地址(Logical Block AddressLBA)是描述计算机存储设备数据所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。LBA可以意指某个数据区块的地址或是某个地址所指向的数据区块。

 那么操作系统如何进行 LAB的地址转换呢? 下面我就小小地举个例子;

         为什么需要抽象成逻辑地址?按照磁盘寻址的地址(CHS)难道不香吗?

         1.其原因一肯定在于:抽象成LAB地址 一定是便于OS进行管理的。其次这与后面操作系统与磁盘进行的数据交互的大小也相关(之后会提及)。

        2.其原因二在于:软件与硬件层面上的解耦。

②inode 

        虽然,磁盘寻址按照扇区(512byte)进行,但是这依旧很小!!当要读取足够大的数据时,显然不够有效地减少IO的次数。OS文件系统定制了对多个扇区进行读取: 1KB\2KB\4KB为基本本单位。 哪怕! 你就仅仅要读取或者写入1byte,OS也按照以页(Page)为单位,将数据进行load,并为你写回磁盘!

       这里当然又是局部性原理“救”了我们。

        一个计算机程序倾向于引用邻近于其最近引用过的数据项的数据项。从效率上能够提高cpu高速缓存的命中率。从程序安全上,有可能程序在进行磁盘数据交互时的字节大小,超过了物理内存的总大小,因为其"倾向于较小的活动页面集合上的工作",接下来会对这个工作集命中,而不会产生额外的磁盘流量。

         我们大多数笔记本都只携带了一个硬盘(固态),只不过这个硬盘被划分为了多个区。

那么为什么要么做呢?

        举个例子:

        我们大中国的领土面积有九百六十多万平方千米,但是我们并不是"一方"管理这庞大的区域面积。 而是分为34个省会,四川省、云南省、陕西省……,同时省下面又分了很多个市级,四川省成都市、四川省内江市……。 

        同样的,幼稚园初中高中只有班主任 ,但到了大学就有辅导员。初高中没有各级学院,但到了大学就有经济、护理、电子信息学院等等。

        这么做的目的 就是为了方便管理! 

   然而,计算机里的磁盘分区,远远比不上那些行政区划的管理! 因为一方水土,一方文化。 不是靠模板就能治理好的! 

    对于磁盘而言,500GB和100GB的区别相差无几! 管理好500G大小的磁盘 就等于只需要管理好100GB大小的磁盘大小! 其余的 照着复制粘贴即可!

Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子
Super Block:存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了。

Group Descriptor Table:块组描述符,描述块组属性信息,有兴趣的同学可以在了解一下块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用。

inode Bitmap:每个bit表示一个inode是否空闲可用
Data Blocks:存放文件内容

inode_block存储;

再谈目录 

①文件名与inode

        目录是不是文件呢? 是的! 那它是不是也是有它的属性 + 内容呢?是的!

        刚刚才说了文件的结构。目录也是文件,那它也有自己的inode。那么目录的Datablock是什么呢? inode里不包括文件名,系统查找文件的属性内容只认inode,

        那么我们所看到的文件名是给谁用的呢? 答案是目录! 目录的数据块里存储的数据,就是inode与文件名的映射关系。我们用户 访问某个文件不用知道它的inode,只需要在一个目录下,拿文件名进行访问即可! 底层就是目录帮我 建立了 inode与文件名的映射关系。

②再谈目录权限

        如果要进入一个目录,我们不陌生,需要可执行权限,才能能够进入目录。那么

        如何理解目录的写权限?

对于目录而言,当用户创建一个文件时,本质就是拿着创建好的文件inode与文件名 建立映射关系,并向目录的数据块写入的过程。

同样,删除一个文件,其本质就是根据文件名找到对应的inode,根据inode将inode里的标记位"清零",同时目录并将文件名与inode的映射关系清空即可。

        如何理解目录的读权限?

对于目录而言,读权限,就是访问目录数据块。只有拥有读权限,才能够拿到文件名映射的inode。


总结:

①磁盘是外设具有高容量存储,但低访问效率(相较于cpu、内存)的特点

②磁盘的物理结构:写入读取的磁头、存储信息的扇区。

③磁盘定位算法(CHS),先确定在哪一个磁头,在确定在哪一个柱面(一条磁道),定位在哪一个扇区。

④磁盘的LAB(逻辑)地址是 OS与磁盘数据交互的单位。可以实现软硬件功能的解耦。

⑤linux系统中访问文件的本质,是访问inode。inode是文件系统中文件的唯一标识。

⑥目录也是文件,也是有独立的inode的。但是目录的数据块存储的是文件名与inode的唯一映射关系


本篇就到此结束了,

感谢你的阅读,

祝你好运~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/1004509
推荐阅读
相关标签
  

闽ICP备14008679号