磁盘是计算机中的一个外部存储,是一个可长期存储数据的设备。我们日常使用磁盘的时候,都是先将磁盘分区,然后格式化成一个文件系统,之后操作系统才能用来进行文件管理。
磁盘为什么要分区呢?早期的磁盘容量比较小,所以没有分区机制,后来越来越大,人们发现这样管理起数据很麻烦,而且无法装多个操作系统系统。于是科学家们就研制出了磁盘分区机制,目的就是为了将磁盘容量切分,便于数据的管理,而且可以将一块硬盘当成“多个硬盘”来使用,安装多个操作系统。知道了这个概念后,我们看一下磁盘的工作过程及物理组成(顺序有些颠倒是不是?无所谓啦,反正你明白就好~~)。
由于现在的磁盘有很多种,U盘、SSD硬盘,机械磁盘。不过由于现实中我们的计算机最普及的还是机械硬盘,所以我们只讲一讲机械硬盘的原理。
磁盘的物理由:磁盘片、马达(主轴)、机械臂(磁头驱动机构)、磁头组成。当通电后,磁盘的主轴马达开始带动盘片转动,而磁头依据机械臂悬浮在盘片上边,这样就实现了数据的写入和消除(磁性信息,都是二进制代码,可以简单理解为有磁为1,无磁为0)。盘片有A面B面,而且是多盘片,所以一个盘片就有两个机械臂和两个磁头(比如我是4盘片,就有8个磁头和机械臂),不过他们是重叠的,所以可能俯瞰是看不出来的~~
除了知道了磁盘的大概组成方式和如何工作的,还要了解几个其他概念:
1.磁道:磁盘转动时磁头划过的圈,就是磁道,磁道越靠外越好,至于为什么稍后会提到。
2.柱面:由于磁盘一般是由多个盘片构成,磁道必定会重叠,也就是形成一个柱子一样的东西。这个就叫做柱面,看下图:
3.扇区:磁道被分割成弧状,下图所示就是扇区(实际上并不是从外到内都是同样的扇区数,要不然怎么会是每个扇区都是512Bytes大小呢?你说是吧),每个扇区512Bytes。还记得上面提到的越靠外的磁道性能越好吧?这是因为内圆和外圆的周长不同所致,要保证每个扇区都是512Bytes,那么扇区数肯定是不同(下图只是为了形象)的咯。所以当你读取一个大数据的时候,可能存储在最里面的磁道会存储不完,还要让机械臂移动到其他磁道上,然后找到找到扇区才能继续读取;而最外面的磁道因为比里面的要长,扇区肯定也要多,那么存储的就越多,数据可能就全部都存储在了这个磁道上,那么磁头就可以一口气读取完,性能肯定会有所提升!你可以用分区工具看看你的C盘,是不是都是从0磁柱开始的?这就是原因所在。
了解了基本的组成后,我们来总结一下:
磁盘由:盘片、机械臂、磁头和马达等几大部分组成。在盘片上又划分了磁道、磁柱、扇区。为了安装多个操作系统(将容量平均划分),出现了分区机制。
知道了物理组成后,我们接着谈一下分区:磁盘的0磁道0磁柱0扇区是MBR(Master Boot Record,主引导记录),其中446Bytes是存放boot loader(操作系统引导程序),64Bytes存放分区表信息(一个分区占用16Bytes)。最后2Bytes是标记位,标记MBR是否可用。其他的都比较好理解,我们就不多说了,只说一下关于这64Bytes分区信息:
上面我们讲,MBR记录分区信息的空间只有64Bytes大小,每个分区占用16Bytes,所以最多只能有4个分区。大家可能有疑惑,我的磁盘不止4个分区啊,你搞错了吧?其实事实是我说的那样,分区最多只能有4个,但后来人们发现磁盘容量越来越大,有时候只分四个分区无法满足要求,于是就又出现了扩展分区,相应的之前的普通分区也就称作了主分区(扩展分区+主分区只能有四个,扩展分区最多只能有一个)。扩展分区并不是一个分区,它仅仅是一个指针,指向了其他的扇区。它所指向的扇区里面则又存放了分区表信息。所以创建扩展分区后不能直接使用,还需要在其基础上创建分区,在其基础上创建的分区我们叫作逻辑分区。
在Linux中,分区的命令有多个:fdisk/sfdisk/parted,我们最常用的是fdisk,这个命令也比较简单,我们看一下:
fdisk [options] [/dev] -l [/dev] #列出磁盘或分区信息 #我们分区的时候,直接fdisk [/dev],之后会进入一个交互模式,有很多命令: m #列出帮助信息 n #创建一个分区,选择此项后,会进入一个二级交互模式: Command action e extended #扩展分区,只能有一个 Partition number (1-4) #指定一个分区号 First cylinder (1-208050, default 1) #选择开始柱面,默认从1开始 Using default value 1 #直接回车使用了默认的1 Last cylinder, +cylinders or +size{K,M,G} (1-208050, default 208050): #选择结束的柱面或者+大小,默认指定全部信息; n #创建分区 Command action l logical (5 or over) #逻辑分区,从5开始,其他步骤和上面相同 p primary partition (1-4) #主分区,1-4是分区号 #请参考划分扩展分区 划分好后,刷新一下分区表信息: CentOS 5 # partprobe CetnOS 6 # partx/kpartx ;如果出现刷新不出来的情况,先使用 #kpartx -af /dev,之后使用# partx -a /dev。还是不出现就多来几遍就好了。
预知后事如何,请看(磁盘文件系统管理2)。
本文出自 “SystemCall社区” 博客,请务必保留此出处http://minux.blog.51cto.com/8994862/1711353
原文:http://minux.blog.51cto.com/8994862/1711353