欢迎各位兄弟 发布技术文章
这里的技术是共享的
硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区。一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。在windows下激活的主分区是硬盘的启动分区,他是独立的,也是硬盘的第一个分区,正常分的话就是C区。 在linux下主分区和逻辑分区都可以用来放系统,引导os开机,grub会兼容windows系统开机启动。分出主分区后,其余的部分可以分成扩展分区,一般是剩下的部分全部分成扩展分区,也可以不全分,那剩的部分就浪费了。但扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。在linux中第一块硬盘分区为hda分区,主分区编号为hda1-4,逻辑分区从5开始。硬盘的容量=主分区的容量+扩展分区的容量扩展分区的容量=各个逻辑分区的容量之和主分区也可成为“引导分区”,会被操作系统和主板认定为这个硬盘的第一个分区。所以C盘永远都是排在所有磁盘分区的第一的位置上。MBR(主引导记录)的分区表(主分区表)只能存放4个分区,如果要分更多的分区的话就要一个扩展分区表(EBR),扩展分区表放在一个系统ID为0x05的主分区上,这个主分区就是扩展分区,扩展分区能可以分若干个分区,每个分区都是个逻辑分区
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,又按照上面的设置分配磁盘空间。这样就没有扩展分区了。
我们知道硬盘的第一个扇区也就是第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表示!