1.基本概念


硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区。


    一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。 

在windows下激活的主分区是硬盘的启动分区,他是独立的,也是硬盘的第一个分区,正常分的话就是C区。 在linux下主分区和逻辑分区都可以用来放系统,引导os开机,grub会兼容windows系统开机启动。

分出主分区后,其余的部分可以分成扩展分区,一般是剩下的部分全部分成扩展分区,也可以不全分,那剩的部分就浪费了。

但扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。

在linux中第一块硬盘分区为hda分区,主分区编号为hda1-4,逻辑分区从5开始。

硬盘的容量=主分区的容量+扩展分区的容量

扩展分区的容量=各个逻辑分区的容量之和

主分区也可成为“引导分区”,会被操作系统和主板认定为这个硬盘的第一个分区。所以C盘永远都是排在所有磁盘分区的第一的位置上。

MBR(主引导记录)的分区表(主分区表)只能存放4个分区,如果要分更多的分区的话就要一个扩展分区表(EBR),扩展分区表放在一个系统ID为0x05的主分区上,这个主分区就是扩展分区,扩展分区能可以分若干个分区,每个分区都是个逻辑分区

 

2.扩展分区和逻辑分区


    DOS和FAT文件系统最初都被设计成可以支持在一块硬盘上最多建立24个分区,分别使用从C到Z 24个驱动器盘符。但是主引导记录中的分区表最多只能包含4个分区记录,为了有效地解决这个问题,DOS的分区命令FDISK允许用户创建一个扩展分区,并且在扩展分区内再建立最多23个逻辑分区,其中的每个分区都单独分配一个盘符,可以被计算机作为独立的物理设备使用。关于逻辑分区的信息都被保存在扩展分区内,而主分区和扩展分区的信息被保存在硬盘的MBR内。这也就是说无论硬盘有多少个分区,其主启动记录中只包含主分区(也就是启动分区)和扩展分区两个分区的信息。


    在安装CentOS5.3的过程中,会遇到磁盘分区的界面,下拉式菜单中有4个选项,这时你不要选择默认,打开下拉式菜单,选择最后一项(翻译成中文意思是:建立自定义的分割模式)。然后选择右下角的确认,在下一个对话界面里依序建立/、/home 及 swap ,完成后如图。确认设置后的分割区。

 

为强调重点,把图中重要内容,再写一遍。

 

/             根目录         ext3        hda1   

 

/home    用户目录        ext3        hda2

 

Swap     交换分区        swap       hda3


对hda1的解释:

hd:IDE硬盘。如果是SCSI硬盘,则为sd,这个只能记住,没有更好的办法。

a:: 第一块硬盘。如果是第二块硬盘,则为b,依此类推c,d……

 

1: 主分区。其中1,2,3,4都是主分区(或扩展分区, 主分区+扩展分区<=4, 这是因为硬盘有64字节描述分区,每一个占用16字节),从第5开始为逻辑分区,最大到16,新的Linux版本无限制

 

磁盘容量与主分区、扩展分区、逻辑分区的关系:

 

硬盘的容量=主分区的容量+扩展分区的容量

 

扩展分区的容量=各个逻辑分区的容量之和

 

一块物理硬盘只能有: 一到四个主分区(但其中只能有一个是活动的主分区),或一到三个主分区,和一个扩展分区。分别对应hda1,hda2,hda3,hda4.

 

Linux 中规定,每一个硬盘设备最多能有 4 个主分区(其中包含扩展分区)构成,任何一个扩展分区都要占用一个主分区号码,也就是在一个硬盘中,主分区和扩展分区一共最多是 4 个。

 

我曾经的困惑点是:不知道扩展分区要占用主分区(最多可以有4个)一个分区号码。

我的总结:一块硬盘可以只设主分区,这时主分区可设置4个分区号。也可以设置成主分区+逻辑分区,这时也是最多4个分区号码,但是变成了4 = 3 + 1.其中4是主分区和扩展分区加起来最多4个;  3是主分区,可以小于或等于3;  1是扩展分区号,占用了一个主分区号。从5开始到16,都是逻辑分区。如果只有一个5,则扩展分区不再进行分区了,那么扩展分区就是逻辑分区了(扩展分区的磁盘总量等于一个逻辑分区的磁盘总量)。常见的是扩展分区被分成几个逻辑分区,用5,6,7,8等号码标识。

 

再来理解上面的分区:

 

/            根目录         ext3        hda1     活动主分区,启动OS

 

/home    用户目录        ext3        hda2     主分区

 

swap     交换分区        swap       hda3     主分区

 

此处可能暗示有一个扩展分区,其应为hda4。因为这样后面还可以设hda5,hda6,……

 

也可能就只有3个主分区(最多可以有4个)已占满磁盘容量。

 

假设现在你的Linux操作系统磁盘空间只有16000M,又按照上面的设置分配磁盘空间。这样就没有扩展分区了。

 

硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍

我们知道硬盘的第一个扇区也就是第0扇区是用来存放主引导记录(MBR)的,因此也称MBR扇区。一个扇区是512字节,因此MBR的大小也是512字 节,其具体数据结构是:446个字节的引导代码、64个字节的分区表及2个字节的签名值"55AA"。由于MBR的分区表只有64个字节,这决定了它只能 存储4个分区记录。这就是为什么一块硬盘最多只能有4个“主分区"的原因。记住,“主分区”就是指记录在主引导记录MBR分区表中的分区,除此之外主分区 并无特别之处,但是过去的一些老操作系统往往不能安装在主分区之外的分区上,所以,主分区也贴上“专门用来安装操作系统”的标签。

 

 

我 们已经知道了MBR中的分表区只能存放4个分区(即4个主分区),那系统是如何划分出4个以上的分区的呢?一种直白而简单的思路就是把其中一个主分区再进 行细分,衍生出一个二级分区表。对的,这个被用来二次分区的主分区就是“扩展分区”,它下面的二级分区就是“逻辑分区”。

 

关于如何在Linux下如何使用parted工具时行分区,这里转载一篇文章, 讲解的非常清晰. 原文出处:http://dngood.blog.51cto.com/446195/647702/

 

一 关键词


MBR和2TB的限制

在使用fdisk建立分区时,我们最大只能建立2TB大小的分区,如果你的磁盘(阵列)大于2TB,只能通过划分多个分区的方法才能充分利用磁盘容量,这对于使用小于2TB分区的朋友没啥影响,但对于使用大于2TB分区(比如5TB的分区)的朋友就会遇到问题了,要突破这个限制;我们先来了解下MBR(Master Boot Record)和GPT(GUID Partition Table).

 

MBR

主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)。

 

MBR是由分区程序(如Fdisk,Parted)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而能够实现多系统引导。

 

从主引导记录的结构可以知道,它仅仅包含一个64个字节的硬盘分区表。由于每个分区信息需要16个字节,所以对于采用MBR型分区结构的硬盘(其磁盘卷标类型为MS-DOS),最多只能识别4个主要分区。所以对于一个采用此种分区结构的硬盘来说,想要得到4个以上的主要分区是不可能的。这里就需要引出扩展分区了。扩展分区也是主分区(Primary partition)的一种,但它与主分区的不同在于理论上可以划分为无数个逻辑分区,每一个逻辑分区都有一个和MBR结构类似的扩展引导记录(EBR)。

在MBR分区表中最多4个主分区或者3个主分区+1个扩展分区,也就是说扩展分区只能有一个,然后可以再细分为多个逻辑分区。

在Linux系统中,硬盘分区命名为sda1-sda4或者hda1-hda4(其中a表示硬盘编号可能是a、b、c等等)。在MBR硬盘中,分区号1-4是主分区(或者扩展分区),逻辑分区号只能从5开始。

在MBR分区表中,一个分区最大的容量为2T,且每个分区的起始柱面必须在这个disk的前2T内。你有一个3T的硬盘,根据要求你至少要把它划分为2个分区,且最后一个分区的起始扇区要位于硬盘的前2T空间内。如果硬盘太大则必须改用GPT。

 

 

GPT

全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。它是EFI(可扩展固件接口标准)的一部分,用来替代BIOS中的主引导记录分区表。但因为MBR分区表不支持容量大于2.2TB(2.2 × 1012字节)的分区,所以也有一些BIOS系统为了支持大容量硬盘而用GPT分区表取代MBR分区表。

 

在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。

 

与 支持最大卷为2 TB(Terabytes)并且每个磁盘最多有4个主分区(或3个主分区,1个扩展分区和无限制的逻辑驱动器)的MBR磁盘分区的样式相比,GPT磁盘分 区样式支持最大卷为18 EB(Exabytes)并且每磁盘的分区数没有上限,只受到操作系统限制(由于分区表本身需要占用一定空间,最初规划硬盘分区时,留给分区表的空间决定 了最多可以有多少个分区,IA-64版Windows限制最多有128个分区,这也是EFI标准规定的分区表的最小尺寸)。与MBR分区的磁盘不同,至关 重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区。另外,GPT分区磁盘有备份分区表来提高分区数据结构的完整性。

 

 

EFI

可 扩展固件接口(英文名Extensible Firmware Interface 或EFI)是一种个人电脑系统规格,用来定义操作系统与系统韧体之间的软件界面,为替代BIOS的升级方案。可扩展固件接口负责加电自检(POST)、连 系操作系统以及提供连接操作系统与硬件的接口。

EFI最初由英特尔开发,现时由UEFI论坛来推广与发展。

 

 

UEFI

是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFI Form的国际组织,贡献者有Intel,Microsoft,AMI,等几个大厂,属于open source,目前版本为2.1。

 

 

 

二 创建一个大于2TB的分区

 

MBR 与 GPT,都是分区格式,其中MBR最大分区小于等于2TB,而GPT分区没有2TB的限制,理论最大分区18 EB!

 

现在我们知道了要创建一个大于2TB的分区,就不能使用MBR 格式的分区表了,而要使用GPT格式的分区表,我们最常用的fdisk 分区工具就爱莫能助了,需要使用linux 下的Parted分区工具!

 

测试环境为:

 

Dell R710  2u 服务器

 

cpu 2* XEON 5606

 

mem 16G

 

disk 6*1TB sas 7200rpm

 

raid raid level 5  perc 6i卡

 

rhel 6 64bit ,创建一个4TB大小分区

 

下面正式开始分区:

 

1 在使用parted 分区之前,我们先用fdisk -l 来查看下硬盘信息!

 

2 上边的信息我们知道 /dev/sdb 4.6TB,现在使用parted 命令,如下图。

 

3 进入parted 后,执行2,3,4,5,6,7,8,9,10,10,11步骤,指令下边有解释!

 

4 分区完成后使用print 可以看到刚才分区的信息!大小 4684GB

 

5 quit 用于退出parted环境,信息提示更新/etx/fstab!

 

6 再用fdisk -l 来查看下 sdb硬盘,现在已经有sdb1 分区了,注意system gpt!

 

7 parted 到这里就完成了!

 

下面格式化/dev/sdb1 文件系统为EXT4:

 

1 执行 mkfs.ext4 /dev/sdb1 一路回车即可!

 

更新/etc/fstab :

 

1.使用blkid 查看分区的uuid 如下图,复制新分区/dev/sdb1的 UUID

  

2 将 /dev/sdb1的 UUID 添加到 /etc/fstab,/dev/sdb1 挂载在 /data 目录下!

 

3 至此全部完成, 下面检查一下!

 

mount -a 重新挂载 /etc/fstab 文件中的记录!

 

mount 可以发现 /dev/sdb1 已经挂载到 /data 目录下了!

 

df -h 发现 /data 4.2TB

 

三 详细介绍下Parted命令

 

[root@abintel ~]# parted --help

用法:parted [选项]... [设备 [命令 [参数]...]...]

将带有“参数”的命令应用于“设备”。如果没有给出“命令”,则以交互模式运行。

 

选项:

-h, --help                    显示此求助信息

-i, --interactive             在必要时,提示用户

-s, --script                  从不提示用户

-v, --version                 显示版本

 

命令:

检查 MINOR                   对文件系统进行一个简单的检查

cp [FROM-DEVICE] FROM-MINOR TO-MINOR      将文件系统复制到另一个分区

help [COMMAND]                打印通用求助信息,或关于 COMMAND 的信息

mklabel 标签类型              创建新的磁盘标签 (分区表)

mkfs MINOR 文件系统类型       在 MINOR 创建类型为“文件系统类型”的文件系统

mkpart 分区类型 [文件系统类型] 起始点 终止点      创建一个分区

mkpartfs 分区类型 文件系统类型 起始点 终止点 创建一个带有文件系统的分区

move MINOR 起始点 终止点      移动编号为 MINOR 的分区

name MINOR 名称               将编号为 MINOR 的分区命名为“名称”

print [MINOR]                 打印分区表,或者分区

quit                          退出程序

rescue 起始点 终止点          挽救临近“起始点”、“终止点”的遗失的分区

resize MINOR 起始点 终止点    改变位于编号为 MINOR 的分区中文件系统的大小

rm MINOR                      删除编号为 MINOR 的分区

select 设备                     选择要编辑的设备

set MINOR 标志 状态           改变编号为 MINOR 的分区的标志

 

注意:


mklabel label-type 必须是一下这些类型:

 

* bsd

* loop (raw disk access)

* gpt

* mac

* msdos

* pc98

* sun

 

例:(parted) mklabel gtp 或者 (parted) mklabel msdos


mkpart(建立新分区)

 

格式:mkpart part-type fs-type start end 

 

建立一个新的分区

 

part-type是以下类型之一 primary(主分区), extended(扩展分区), logical(逻辑分区)。

 

fs-type来指定文件系统,比如ext4 。

 

start和end是新分区开始和结束的具体位置。0表示起止,-1表示结尾;或者以mb表示或者GB表示!