磁盘管理

目前主要用的磁盘主要是机械式硬盘.

机械式硬盘:(具体图片请看后面)

    U盘  , 光盘   ,    软盘  ,   硬盘  ,  磁盘  

磁盘:

     一般而言扇区(Sector)大小为 512 个字节

     不同磁盘上的相同编号的磁道组成柱面

磁盘: 0 盘面 0 磁道 0 扇区 叫做主引导记录 ,不属于任何文件系统叫 MBR(Master Boot Record )(512 byte)

  MBR 分为3段 :

        446 byte : BootLoader ,引导加载器(程序,引导操作系统启动)

         64 bytes :

                   每 16 bytes 标志一个分区

         2 bytes : Magic Number 标志MBR 是否有效

        硬盘 : 主分区 + 扩展分区 <= 4  (扩展只能有一个)  扩展分区相当于一个指针指向一文件

       上面记录分区信息

          划分分区是按柱面进行的 ,柱面编号从外到里,为从 0 到  n 。外面的磁道读写性能较好。

   


文件系统(以 ext2  为例)

  文件系统是管理软件,能把存储空间分为元数据(Metadata) 存储区,数据存储区。

 数据存储区分为磁盘块(block)。


元数据中有个块位图 bitmap ,每个块在里面有一个位。

inode(index node): 元数据中存放每个文件的对应信息(号码,文件权限,属主,

所存储的块,时间戳,大小等,就是没有文件名,更重要的是记录这个文件对应了那些磁盘块)

inode 也有一个位图,标记inode号是否已经使用了。



wKiom1V-HcLA5kF1AACI_VPSrzc916.jpg

  根是自引导,目录和下面的文件和它的关系放在block里面。


 创建文件过程,先判断路径是否存在,如果存在的话,首先扫描 inode 位图,分配一个空闲

的inode编号给它,然后找 inode 对应的表,在表上建立新的条目,在找扫描块位图,分配

对应的 block  。

 删除文件 : 把目录上对应的条目删除了。把对应的 inode 号码在位图中标记为空,在块位图

中把对应的 block 标记为空。(里面数据不动)

 在同一分区上剪切比复制快多了,因为复制会创建新文件,剪切只是改变 block 对应的路径 。



查找  /var/log/messag查找文件的过程 :

首先  /  是自引用的 ,首先在元数据区中找 /  对应的条目,根据其条目找到对应的 block ,block 中找到  var  对应的 inode 号 ,再根据 inode号 到元数据里面找到 var 下那张表,也即从var 指向的 block

中找到 messages  对应的 inode 号 ,从而找到messages 对应的 block。


目录只是个路径映射表,


创建一个文件的过程 :

 例如 在 /backup 目录下新建一个目录 test.txt  大小为 10 k ,首先确保  /backup 目录存在,

首先扫描 inode 表位图找到一个空闲的 inode ,将这个号占用,然后查找  /backup 目录对应的

磁盘块,也即是  /backup 的路径映射表,在里面建立一个新的条目  test.txt 并将刚刚找到的

inode 号 填进去,接下来扫描 block 位图,分配 block。


wKioL1V-H4nBiEvAAAKwpFYLGYA632.jpg删除文件 :

  找到文件所在目录的路径映射表,找到文件对应的inode号并且在路径映射表将这一条条目删除,

并将这个inode 对应的块位图,对应的块标记为未使用 ,并在inode的位图中把对应的 inode 号

标为未使用。


复制文件:

 就是建立一个新文件的过程,但是建立的新文件与原先文件的内容一样。


剪切文件 :

 在同一个分区上,数据,inode根本就没动,只是原先文件对应的条目删除,再添加一条条目,但

          还是对应原先的inode 和 block。

 跨分区的话,在新分区上建立一个新文件,把老分区上的文件复制过去,然后再删除老分区上的文件。



实际上磁盘的组成更加复杂,事实上磁盘是由很多个块组(block group)组成的,每一个块组里面都有 block 位图,inode 位图。

而且在磁盘中还有一个块存储了全局描述信息,叫做超级块。



注意 : 如果不划分区,一个磁盘上只能存储一个文件系统。分区划分后能够存储多个文件系统。

抹除一个磁盘上的所有分区(拿sda为例):

  dd      if=/dev/zero    of=/dev/sda   bs=512    count=1

  sync      同步

 sleep   3  以防太快损害磁盘

注意不要对根所在分区进行操作,要睡眠几秒



下面的图片仅供参考 :

    磁盘的物理组成


   wKiom1V9eszCKqlUAAExoCEsar8613.jpg


            磁盘的物理组成   轴

wKiom1V9exbiN4S6AADoyk_Cq4g635.jpg

           磁盘的   读写头

wKiom1V9e7Tje01rAAGgT2tkKnw603.jpg



wKioL1V9fbLi8xSFAAER42ZdT30437.jpg

        硬盘的外部结构 

wKiom1V9fG-gHWzsAAE_PpdUlh8760.jpg



wKioL1V9fmfi538IAAHjtp5B2S0691.jpg



wKioL1V9fv-jTH79AAFS02RhBMc882.jpg



你可能感兴趣的:(图片,操作系统,程序,magic,bootloader)