首先让咱们从物理结构上了解一下硬盘的存储原理。html
硬盘构造示意图:ide
1. head:磁头,磁盘盘面上的磁头,有几个磁头,就有几个盘面。从0开始编号,最大255,表示总共256个磁头。spa
2. cylinder:柱面。每一个盘面上的磁道叠加起来,看起来就像一个柱体,所以被称为柱面。对于单个磁盘盘面来讲,一个柱面就是一个磁道,许多的同心圆磁道构成一个盘面。从0开始编号,最大1023,表示总共1024个磁道。操作系统
3. sector:扇区。每一个磁道上能够划分为若干段,每一段称为一个扇区,扇区是磁盘最小存储单位,通常每一个扇区存储 512 个字节数据。从1开始编号,最大63,表示63个扇区。code
扇区示意图:htm
你能够将一个硬盘想象为这么一栋圆柱体建筑,建筑有若干层,每一层正反面都是是一个圆形的田径场,这就是磁盘;每一个田径场是由 N 个跑道组成,这就是磁道;每一个田径场都有一个运输运动员进出场的接驳车,这就是磁头;用 N 条直径将整个田径场划分为 2N 个扇形,每条磁道都被直径划分为 2N 段,每条磁道的每一段就是扇区;每个运动员就是一个字节,每个扇区能够容纳 512 个运动员。对象
硬盘(圆柱体建筑)示意图:blog
单个磁盘单面(田径场)示意图:索引
了解了 head, cylinder, sector 是什么后,就能够计算出硬盘容量。get
例如如下硬盘信息:
$ sudo fdisk /dev/mmcblk0 -l
Disk /dev/mmcblk0: 31.9 GB, 31914983424 bytes 4 heads, 16 sectors/track, 973968 cylinders, total 62333952 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00062524 Device Boot Start End Blocks Id System /dev/mmcblk0p1 2048 43007 20480 6 FAT16 /dev/mmcblk0p2 43008 62332927 31144960 83 Linux
以上信息显示硬盘大小为 31914983424 bytes,约为 31.9 GB。
该硬盘共有 4 个磁头,973968 个柱面,16 个扇区,每一个扇区可存储 512 字节。
硬盘容量 = 4 heads × 973968 cylinders × 16 sectors × 512 bytes = 31914983424 bytes = 30.436 GB
扇区大小为 512 字节,但咱们实际上存储的东西最小颗粒也可能会大于 512 字节,所以在进行格式化时,咱们能够选择分配单元大小,即逻辑区块 Block,例如咱们指定格式化时数据最小存储单位为 1024 字节,那么一个 Block 就是 1024 字节,即 1 个Block 等于 2 个 sectors。
硬盘容量是如何增加的?
(机械)硬盘容量虽然愈来愈大,但基本的构造原理没有太大变化。
随着制造工艺技术提供,磁碟愈来愈薄,磁头也愈来愈小,这样一个硬盘储存器就能够装下愈来愈多的磁片,因为磁片表面密度愈来愈高,也就是磁道和扇区也愈来愈多,容量天然愈来愈大。
另外还有一种叫作多区记录技术,在此技术以前,每一个磁道都是被相同直径划分,这就意味着每一个磁道上的扇区是同样多的,外围的扇区明显比内围的扇区要宽,这就浪费了不少磁道长度。在多区记录技术引入后,外围的磁道就能够划分更多的扇区,从而增长容量。
以上就是硬盘的物理构造,硬盘只是存储介质,下面就让咱们在硬盘上规划出数据的存储方案,这就是对硬盘进行分区。
硬盘分区概念有三种,分别是主分区(primary partition)、扩展分区(extended partition)、逻辑分区(logical partition)。
在物理磁盘这个意义层面上,只有主分区和扩展分区,若是全部分区容量之和小于磁盘容量,剩余的部分就是未分配空间(unallocated disk)。硬盘分区信息保存在分区表(partition table)中,对操做系统而言,未分配空间是文件系统以外的不可用区域。
对于硬盘而言,最多有四个分区,最少有一个分区,其中至少得包含一个主分区,至多包含一个扩展分区。
分区是什么?为何要有分区?
分区就是将一个硬盘划分为若干连续的储存区域,分区表保存硬盘分区的索引,分区信息保存在分区表中。若是一个硬盘上只有一个分区,那么整个文件系统位于一个分区中,即整个文件系统存储在一个连续区域。若是该存储区域出现损坏,那么文件系统将受到破坏,用户可能丢失全部数据。对于文件系统而言,将系统数据和用户数据分开保存在不一样分区,能够避免用户数据增加以至填满整个硬盘,从而致使系统崩溃或挂起。若是使用多个分区,也能够根据存储的文件对象不一样,选择使用不一样容量的最小存储单元进行分区格式化。
什么是主分区和扩展分区?
在 Windows 平台下激活的主分区是硬盘的启动分区,通常是 C 盘,也是硬盘的第一个分区。在 Linux 平台主分区和扩展分区均可以用以安装操做系统核心。
主分区属于原子分区,不能再将其划分不一样区域来使用,数据直接保存在主分区的存储单元上。扩展分区不能直接用于储存数据,必须将扩展分区划分为更小的存储单元,即逻辑分区,数据都是保存在逻辑分区中。
主分区和逻辑分区比如是文件,而扩展分区比如是目录,硬盘空间主要由主分区、扩展分区(由逻辑分区组成)、未分配空间组成。
通常来讲,先分出主分区,剩下的就都划为扩展分区,没有必要的话,通常不留未分配空间以避免浪费硬盘空间。
总的说来,一个硬盘只能划分为四个分区(主分区和扩展分区),一个主分区就是一个分区,一个扩展分区能够划分为任意数量的逻辑分区。
什么是主引导扇区?
主引导扇区是位于磁盘最前面一段保存引导(loader)代码的区域,该代码也被称为主引导记录(MBR,Main Boot Record),这段代码的做用在于让磁盘操做系统(DOS)对磁盘进行读写时分区合法性判断、分区引导信息定位,它也是由磁盘操做系统(DOS)在对磁盘进行初始化的时候产生。
该磁盘区域不属于主分区和扩展分区,所以主引导程序更不属于硬盘上安装的任何操做系统。它做为磁盘上一个很是小的特殊区域独立存在,不会被分区空间内的格式化命令所擦除。该磁盘区域主要能够分为三个部分:
1. 主引导程序(即主引导记录 MBR),空间大小为 446 个字节。它会在硬盘启动后,将系统控制权转交给在分区表中登记的操做系统,让操做系统能够操做磁盘。
2. 分区表(DPT,Disk Partition Table),由四个分区表构成(每一个 16 字节,这也就是为何硬盘至多只有四个分区)。
3. 结束标识(2字节),值为 AA55(十六进制)。
简而言之,主引导程序的做用就是在硬盘启动后,引导电脑设备进入安装在硬盘上的操做系统程序。
1. 硬盘的扇面、磁道、扇区