硬盘的结构:

   硬盘主要由盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口和缓冲等几个部分组成。

   所有的盘片都固定在盘片主轴上,盘片之间保证绝对的平衡。在盘片的每一个存储面上都有一个磁头,磁头与盘面之间的距离比头发丝的直径还要小。所有磁头都连接在磁头控制器上,由磁头控制器控制磁头的动作。磁头可沿着盘片的半径进行移动,而盘片怎么由盘片主轴带动进行每分钟几千上万的高速旋转,所以可以通过磁头读取到盘片存储面上存储的信息。由于上述原因硬盘内部必须是真空状态,任何一粒灰尘都会使硬盘报废。


   为了方便数据的管理硬盘还从逻辑上划分为磁道、柱面和扇区。磁道以同心圆的方式分布在盘片存储面上,所有的数据都存储在磁道上。所有盘面的相同磁道之间组成一个个柱面,柱面编号从0开始计数。磁道又被划分为若干个弧面,每个弧面的大小为512个字节,这就是扇区,它是硬盘的最小存储单位,扇区编号从1开始计算。所以整个硬盘的容量就等于柱面数x磁头数x扇区数x512字节。


MBR:

   硬盘上的0柱面0磁头1扇区是一个特别的扇区,被称作主引导扇区(MBR),是计算机开机后访问硬盘必须读取的首个扇区。其中,446字节存储bootloader,64字节存储硬盘分区,最后2个字节存储特征码0x55AA,用来表示主引导记录是否有效。


硬盘的分区:

   在使用MBR的硬盘上,由于分区表为64字节,而每个分表大小为16个字节,所以只能有4个主分区或者3个主分区和一个扩展分区。扩展分区只能有一个,并且不能直接使用,需要在扩展分区内划分逻辑分区。虽然扇区是硬盘的最小存储单位,但是由于硬盘的磁头只能在盘面的半径上进行移动,所以对硬盘进行分区的时候是以柱面来划分的,一个柱面最好处于一个分区。在linux内,主分区和扩展分区可以由/dev/sd'x'{1,2,3,4}来标识,逻辑分区从/dev/sd'x'5开始依次进行标识。

   在linux下可以用fdsik命令对硬盘进行分区,该命令只能由管理员运行,fdisk命令的使用格式:


   fdisk [option] DEVICE


fdisk -l [DEVICE],用来显示指定磁盘或系统上所有磁盘的分区信息,如下图:

linux磁盘分区_linux

上图sda磁盘一共有15665个柱面(cylinders),每个柱面上有63个扇区(sectors/track),每个扇区有255个磁头(heads),所以整个硬盘的容量=15665*63*255*512bytes.

上图sda1分区中,Start表示其实柱面,End表示结束柱面,Blocks表示分区块数量,Id表示分区文件系统system ID,System用来修饰前面的system ID。

上图sda1分区信息最下方的警告信息表示,sda1分区没有以整个柱面大小结束。

fdsik  DEVICE,用来为指定磁盘建立分区,如下图显示

linux磁盘分区_转换器_02

输入m+Enter ,显示的交互界面:

linux磁盘分区_控制器_03

输入n+Enter创建一个新的分区

linux磁盘分区_计算机_04

输入"p"创建主分区

linux磁盘分区_计算机_05
输入分区号,进入分区大小设置界面

linux磁盘分区_同心圆_06

如上图所示,选择分区编号后,可以设置分区起始柱面和结束柱面,并且设置范围是磁盘用户的柱面数,也可以直接使用+size{K,M,G}的方式进行设置,这样更加的直观,比如设置10G的分区,只需要在last cylinder处"+10G"就可以了,系统会自动将大小换算成柱面数。

创建完成后,可以通过"p"命令显示分区信息

linux磁盘分区_同心圆_07

再输入"n",然后输入"e"创建扩展分区

linux磁盘分区_控制器_08

扩展分区无法直接使用,需要在扩展分区内创建逻辑分区,再输入"n"创建逻辑分区

linux磁盘分区_转换器_09

创建完成后还可以通过"t"修改分区类型,再修改前可先使用"l"查看

linux磁盘分区_同心圆_10

上图所示选中的是几种常用分区类型:5 扩展分区、82 Swap交换分区、83 Linux分区、8e linuxLVM逻辑卷 fd linux软RAID。

linux磁盘分区_linux_11

完成分区操作后可以使用"w"命令保存退出fdisk,也可以使用q不保存退出。


linux下对硬件的操作必须由内核来进行,所以fdisk对磁盘进行分区操作后并不能立即生效,可以通过重启系统令内核重新检测分区表,如果不想重启系统,在RHEL5系列的系统上可以通过partprobe命令让内核重新探测分区表。

而在RHEL6系列系统上使用partprobe重新探测分区表时系统会报错,入下图:

linux磁盘分区_linux_12不过,RHEL6系列可以通过使用"partx"命令手动指定分区让内存进行磁盘探测,使用格式如下:

partx -a /dev/sd'x''#'  /dev/sd'x'

-a 参数 表示增加指定分区或者读取磁盘所有分区

完成上述操作后,可以通过"cat /proc/partition"来查看分区是否被内核检测到。当分区被内核检测到之后就可以进行分区格式化,也就是在分区上创建文件系统了。至于如何创建文件系统且听下回分解。