标题：linux磁盘分区
硬盘的物理结构
为了便于理解，可将硬盘看作一个圆，它是坚硬金属材料制成的涂以磁性介质的盘片，不同容量硬盘的盘片数不等.每个盘有两面，都可记录信息.要了解硬盘的物理结构，需要弄懂磁道、扇区、柱面、簇等几个概念.
磁道：上图中硬盘被一圈圈分成18等分的同心圆，这些同心圆就是磁道.但打开硬盘，用户不能看到这些，它实际上是被磁头磁化的同心圆.这些磁道是有间隔的，因为磁化单元太近会产生干扰。
扇区：每个磁道中被分成若干等份的区域.扇区是硬盘数据存储的最小单位.
柱面：假如一个硬盘只有上图中的3个磁盘片，每一片中的磁道数是相等的.从外圈开始，这些磁道被分成了0磁道、1磁道、2磁道...具有相同磁道编号的同心圆组成面就称作柱面.为了便于理解，柱面可以看作没有底的铁 桶.从上图可以看出，柱面数就是磁盘上的磁道数.柱面是硬盘分区的最小单位.因此，一个硬盘的容量=柱面*磁头*扇区*512
簇：扇区是硬盘数据存储的最小单位，但操作系统无法对数目众多的扇区进行寻址，所以操作系统就将相邻的扇区组合在一起，形成一个簇，然后再对簇进行管理.每个簇可以包括2、4、8、16、32、64个扇区.
硬盘的分区
要掌握硬盘的分区，需要掌握MBR、扩展分区、逻辑分区的概念.
一个是放置该硬盘的信息区，称之为主引导分区(master boot recorder,MBR)，一个是实际文件数据放置的地方.其中，MBR是整个硬盘最重要的区域.一旦MBR物理实体损坏时，则该硬盘就差不多报废了.一般来说，MBR有512个字节，且可以分为两个部分.
(1)第一部分有446个字节，用于存放引导代码，即bootloader.
(2)第二部分有64个字节，用于存放磁盘分区表.其中，每个分区的信息需要用16个字节来记录，因此，一个硬盘最多可以有4个分区.这4个分区称之为主分区和扩展分区(extended).
注：通常所说的"硬盘分区"就是指修改磁盘分区表，它定义了"第n个磁盘块是从第x个柱面到第y个柱面".因此，当系统要读取第n个磁盘块时，就是去读硬盘上第x个柱面到第y个柱面的信息.
由于扩展分区只能有一个，所以这4个分区可以是4个主分区或者3个主分区加1个扩展分区，如下所示:
P + P + P + P
P + P + P + E
重点说明的是，扩展分区不能直接使用，还需要将其划分为逻辑分区才行.这样就产生了一个问题，既然扩展分区不能直接使用，但为什么还要划分出一定的空间来给扩展分区呢?这是因为，如果用户想要将硬盘划分为5个分区的话，那该如何?此时，就需要扩展分区来帮忙了.
由于MBR仅能保存4个分区的数据信息，如果超过4个，系统允许在额外的硬盘空间存放另一份磁盘分区信息，这就是扩展分区.若将硬盘分成3P+E，则E实际上是告诉系统，磁盘分区表在另外的那份分区表，即扩展分区其实是指向正确的额外分区表.本身扩展分区不能直接使用，还需要额外将扩展分区分成逻辑分区才能使用，因此，用户通过扩展分区就可以使用5个以上的分区了.
Attention!!!
(1)实际上，不建议用户将硬盘分为4个主分区.这是因为，假如一个20GB的硬盘，若4个主分区占据了15GB的空间，则剩下的5GB空间完全不能使用，因为已经没有多余的分区表可以记录这些空间了.
(2)考虑到磁盘的连续性，一般建议将扩展分区放在最后面的柱面内.
(3)理论上允许一个硬盘只有1个主分区，其它空间都分配给扩展分区.
Linux磁盘分区
在Windows操作系统中，是先将物理地址分开，再在分区上建立目录.在Windows操作系统中，所有路径都是从盘符开始，如C://program file.
Linux正好相反，是先有目录，再将物理地址映射到目录中.在Linux操作系统中，所有路径都是从根目录开始.Linux默认可分为3个分区，分别是boot分区、swap分区和根分区.
无论是Windows操作系统，还是Linux操作系统，每个分区均可以有不同的文件系统，如FAT32、NTFS、Yaffs2等.
(1)boot分区
该分区对应于/boot目录，约100MB.该分区存放Linux的Grub(bootloader)和内核源码.用户可通过访问/boot目录来访问该分区.换句话说，用户对/boot目录的操作就是操作该分区.
(2)swap分区
该分区没有对应的目录，故用户无法访问.
Linux下的swap分区即为虚拟内存.虚拟内存用于当系统内存空间不足时，先将临时数据存放在swap分区，等待一段时间后，然后再将数据调入到内存中执行.所以说，虚拟内存只是暂时存放数据，在该空间内并没有执行.
Ps:虚拟内存
虚拟内存是指将硬盘上某个区域模拟为内存.因此虚拟内存的实际物理地址仍然在硬盘上.虚拟内存，或者说swap分区只能由系统访问，其大小为物理内存的2倍.
(3)根分区
在Linux操作系统中，除/boot目录外的其它所有目录都对应于该分区.因此，用户可通过访问除/boot目录外的其它所有目录来访问该分区.
Attention!!!
(1)在Linux操作系统中，用户可根据需要进行修改分区.修改后的分区中，同一目录下的文件可能在不同分区中.比如/home目录下有a、b、c三个目录，可将不同的分区挂载到这三个目录下.这种操作是允许的.
(2)一块磁盘上最多有13个分区:
为了实现硬盘上的最多分区，可以将硬盘分区为1个主分区和3个扩展分区，而每个扩展分区又可以分为4个逻辑分区.这样，一块硬盘上最多有13个分区.
<1>硬盘上至少有1个主分区.
<2>逻辑分区不能再进行分区.
(3)Linux分区目录和"盘符"的关系
假如硬盘安装在IDE1的主盘，并用户想分区成6个可以使用的硬盘分区，则可以采用下面两种方式.
方式一：采用3个主分区和3个逻辑分区
方式二：采用1个主分区和5个逻辑分区
安装Linux时，默认分为三个区，分别是/boot分区、根分区和swap分区.这三个分区分别对应的盘符是hda1、hda2、hda3.
(4)Linux允许使用fdisk -l命令和df -h命令来查询其硬盘分区.其中，df无法显示出swap分区的大小.
[root@localhost /]#fdisk -l
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 1175 9333765 83 Linux
/dev/hda3 1176 1305 1044225 82 swap
[root@localhost /]#df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/had2 8.8GB 3.1GB 5.3GB 38% / (根分区)
/dev/hda1 99MB 9.2MB 85MB 10% /boot (boot分区)
(5)在PC机下，A、B盘并不存在，这两个盘在Linux下类似于hda1/hda2，而C盘类似于hda3，D、E、F盘类似于hda5、hda6、hda7.
(6)swap分区不对应"盘符".
(7)若硬盘的MBR已坏，则该磁盘就不能再作为引导盘，只能作为数据盘.因为MBR位于硬盘的起始处，用户不能通过软件进行修复，也不能跳过起始处.而硬盘中间的某个磁道坏了，用户可以软件修复，也可以跳过该磁道.
嵌入式系统分区
嵌入式系统可以分为4个区，分别是bootloader、para、kernel、根分区等，与Windows、Linux分区不同.
(1)在嵌入式系统中，没有swap分区，只有实际的物理空间.
(2)bootloader、para、kernel这三个分区的功能类似于Linux系统中的/boot分区，这三个分区分别存放嵌入式系统的启动代码和内核.
注：Linux系统中/boot分区内存放着linux启动代码和内核源码.
(3)根分区(/)可以构造，其功能类似于Linux系统中的根分区.在这个分区中可以创建许多目录，比如/root、/home、/usr等，但不能创建/boot目录.
(4)分区bootloader、para、kernel只能由地址来区分，而根分区只能由目录来区分.
(5)嵌入式系统的驱动程序、上层软件都放在根分区.在嵌入式系统启动后，系统无法查看到bootloader、para、kernel这三个分区.