linux磁盘管理文件系统

   机械磁盘构造图

 

盘片(Platter):盘片是硬盘驱动器内的圆形磁性盘片,通常由金属或玻璃制成。数据存储在盘片上,以磁性方式表示。每个盘片通常都有两个磁性表面,上下两个面可用于存储数据。
主轴(Spindle):主轴是盘片的中央轴,固定在硬盘驱动器的机壳内。主轴旋转,使盘片以高速旋转,通常以每分钟数千转的速度。这种旋转速度决定了硬盘的性能。
磁头臂(Actuator Arm):磁头臂是连接读写磁头的机械臂,它可以在硬盘内部移动。磁头臂的移动使读写磁头能够定位到正确的磁道以读取或写入数据。
读写磁头(Read/Write Head):读写磁头是位于磁头臂末端的部件,用于读取和写入数据。它可以悬浮在盘片上的磁性表面上,并在读取数据时感知磁性变化,或在写入数据时改变磁性状态。
启停区(Landing Zone):启停区是硬盘驱动器上的特殊区域,位于盘片上的一个磁道,通常接近磁头臂的内部位置。当硬盘驱动器处于非操作状态时,读写磁头通常会停靠在启停区,以避免与盘片接触,从而减少磨损。启停区还用于硬盘启动时的磁头位置初始化。

  文件读写原理

这是在机械磁盘中,比较重要的一些部件,在学习完这些部件的基础作用后,我们再来探讨一下,文件是怎么存储到磁盘上的呢?文件是什么?

文件对于我们用户来说,可以是txt文本文档,也可以是docx文档,简单概括来说,就是各种各样的字符组合,被我们称为文件。但对于计算机而言,文件是什么呢?计算机的世界只有机器语言,也就是010101这种二进制文本。而我们在认识部件的时候也知道了,盘片是用来存储数据的,那这些二进制是怎么样写到盘片上的呢?

盘片是一个拥有磁性表面的圆盘,而磁性最为明显的特征就是南北两极,所以,我们使用南北极来表示二进制中0和1。当我们需要写数据时,读写磁头在盘片上磁化一个区域,让这个区域来表示所需要的0或者1。当我们需要读取数据时,读写磁盘划过盘片,读取这一区域上磁场方向,然后翻译成二进制,以此给到计算机使用。这就是我们读写文件的原理,是不是还挺简单的?

接下来,我们再来学两个比较深入一些的概念,当磁头臂不动,盘片进行旋转时,此时读写磁头会读取到一个圆环的数据,这个圆环被我们称作为磁道。而再将磁道进行划分,就可以得到磁盘的最小存储单元扇区。

  文件系统的作用

在认识了磁盘及文件读写后,我们再来看看,文件系统在这里究竟充当了一个什么角色吧。在进行盘片存储时,不知道你们有没有发现某个问题,举个例子,磁盘的最小存储单元是扇区,默认情况下一个扇区的大小是512字节,如果我们存储2K的文件,会用到4个扇区,可能就是图中的1,2,3,4这四个扇区;但如果说,在一个磁盘上,有多个文件在同时写入,比如一个demo和一个test,那有没有可能,demo占据1和3扇区,test占据2、4扇区,像这种存储就是不连续的扇区存储,就会存在问题。

我们是通过盘片的旋转和读写磁头来获取数据的,如果一个文件的第一部分在第一个扇区,最后一部分在最后一个扇区,那此时盘片是不是得旋转一整圈?如果存储是连续的扇区,那有没有可能,盘片旋转半圈就找到了整个文件。所以,不连续的扇区存储会存在问题,读写的性能会比较差,如果存储变得连续,那么寻址时间变短,读写性能也就得到了提升。

那我们是如何解决这个问题的呢?就是文件系统了,文件系统提出了一个概念——数据块。数据块就是将多个连续的扇区组合在一起,形成了一个数据块,以此来解决碎片化存储的问题,怎么解决的呢?就是簇现象,或者说是块对齐。举个例子,一个文件,实际大小只有1k,但是它会占用文件系统一整个块的大小,虽然这种方式会略微的浪费磁盘空间,但有助于提升文件系统的性能。

因为块就是文件系统最小的存储单元,一个块只会给一个文件使用,以此来解决碎片存储的问题。一个数据块的大小默认是4k,当然你也可以自己设置。

接下来,我们再想想,文件系统将文件存放在数据块上,那文件系统是如何知道文件在哪些块上的呢?还记得我们之前对文件系统的描述吗?它为文件编了一个号码,让文件数据有序的存储在指定的数据块上,这个号就是inode。所以,一个文件实际上就是由inode和block来组成。

   inode与block

inode(索引节点)是在Unix和类Unix操作系统中用于管理文件和目录的数据结构。每个文件和目录在文件系统中都有一个相关联的inode,该inode记录了与文件或目录有关的元数据信息和文件数据的位置。Block则是存放了文件的内容数据。

一个文件由两部分组成,inode+block,inode就是文件的元数据,描述数据的数据,包含了文件的各种信息:

文件类型,权限,UID和GID
文件的链接数
文件大小和时间戳
文件数据块(block)在磁盘上的块指针
文件的其他信息

我们可以使用 ls -I 来查看文件的inode

但inode中并不包含文件名,inode是给到系统使用的,但我们用户仍然是凭借文件名来识别文件的,那文件名与inode的映射关系存放在哪里呢?

就存放在文件的上级目录中,目录同样是一种文件,它自己也有inode与block,文件的block存放的是自己的内容,而目录的block存放的则是该目录下所有文件名和inode之间的对应关系。

未经允许不得转载:宜昌煜扬数据恢复 » linux磁盘管理文件系统

赞 (0)