fdisk 磁盘分区实战:MBR与GPT分区表创建与3种分区类型详解
fdisk 磁盘分区实战:MBR与GPT分区表创建与3种分区类型详解
1. 磁盘分区基础概念与选择
当我们需要在Linux系统中管理磁盘空间时,分区是必不可少的一步操作。一块全新的硬盘就像一张白纸,分区就是在这张纸上划分出不同的区域,每个区域可以独立使用不同的文件系统,服务于不同的用途。
分区表类型 是磁盘分区的底层框架,目前主要有两种:
-
MBR(Master Boot Record) :
- 传统分区方案,兼容性好
- 最大支持2TB磁盘
- 最多4个主分区(或3主分区+1扩展分区)
- 扩展分区内可创建多个逻辑分区
-
GPT(GUID Partition Table) :
- 新一代分区方案,UEFI标准
- 支持超过2TB的大容量磁盘
- 理论上分区数量无限制(实际受系统约束)
- 内置冗余校验,更安全可靠
提示:对于新购买的服务器或云主机,特别是使用UEFI启动的系统,建议优先选择GPT分区表。而需要兼容旧系统或小容量磁盘时,MBR仍是可靠选择。
在云服务器环境中,阿里云、华为云等厂商提供的系统盘通常已经预装了操作系统并完成了分区。我们需要重点掌握的是数据盘的分区管理,这也是日常运维中最常遇到的操作场景。
2. MBR分区实战操作
2.1 准备工作
首先确认磁盘设备名和当前分区状态:
# 查看所有磁盘及分区信息
fdisk -l
# 示例输出:
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Disk /dev/vdb: 100 GiB, 107374182400 bytes, 209715200 sectors
假设我们要对 /dev/vdb 进行分区,这是一个100GB的云数据盘。
2.2 创建MBR分区表
进入fdisk交互界面:
fdisk /dev/vdb
在fdisk提示符下输入 o 创建新的MBR分区表:
Command (m for help): o
Created a new DOS disklabel with disk identifier 0x3e1a5b8c.
2.3 创建主分区
下面创建一个20GB的主分区:
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): +20G
Created a new partition 1 of type 'Linux' and of size 20 GiB.
2.4 创建扩展分区和逻辑分区
将剩余空间创建为扩展分区,并在其中划分逻辑分区:
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2):
First sector (41945088-209715199, default 41945088):
Last sector, +sectors or +size{K,M,G,T,P} (41945088-209715199, default 209715199):
Created a new partition 2 of type 'Extended' and of size 80 GiB.
Command (m for help): n
Partition type
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (41947136-209715199, default 41947136):
Last sector, +sectors or +size{K,M,G,T,P} (41947136-209715199, default 209715199): +30G
Created a new partition 5 of type 'Linux' and of size 30 GiB.
2.5 查看并保存分区结果
使用 p 命令查看分区表,确认无误后 w 保存:
Command (m for help): p
Disk /dev/vdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 41945087 41943040 20G 83 Linux
/dev/vdb2 41945088 209715199 167770112 80G 5 Extended
/dev/vdb5 41947136 104857599 62910464 30G 83 Linux
Command (m for help): w
The partition table has been altered.
3. GPT分区实战操作
3.1 创建GPT分区表
对于大于2TB的磁盘,必须使用GPT分区表:
fdisk /dev/vdc
输入 g 创建GPT分区表:
Command (m for help): g
Created a new GPT disklabel (GUID: 8B6F0E2D-3A1C-4F89-B5F4-9D7C1A3E5F9B).
3.2 创建分区
GPT分区没有主分区、扩展分区的概念,所有分区都是平等的:
Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-209715166, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-209715166, default 209715166): +50G
Created a new partition 1 of type 'Linux filesystem' and of size 50 GiB.
可以继续创建更多分区,GPT理论上支持最多128个分区。
3.3 分区类型调整
如果需要更改分区类型(如创建swap分区):
Command (m for help): t
Partition number (1-2, default 2): 2
Partition type (type L to list all types): 19 # Linux swap
Changed type of partition 'Linux filesystem' to 'Linux swap'.
4. 分区类型深度解析
4.1 主分区 vs 扩展分区 vs 逻辑分区
| 分区类型 | 最大数量 | 编号范围 | 是否可引导 | 典型用途 |
|---|---|---|---|---|
| 主分区 | 4 | 1-4 | 是 | 系统分区 |
| 扩展分区 | 1 | 1-4 | 否 | 容器分区 |
| 逻辑分区 | 无限制 | 5+ | 否 | 数据存储 |
4.2 分区方案设计建议
单系统简单方案 :
- /dev/sda1:/boot 分区(500MB-1GB)
- /dev/sda2:swap 分区(内存的1-2倍)
- /dev/sda3:/ 根分区(剩余空间的70%)
- /dev/sda4:/home 分区(剩余30%)
数据库服务器方案 :
- /dev/sdb1:系统分区(50GB)
- /dev/sdb2:数据分区(剩余空间)
- /dev/sdb5:日志分区(单独分区提高IO性能)
云服务器数据盘方案 :
- /dev/vdb1:单一数据分区(使用全部空间)
- 或按业务需求划分多个逻辑分区
5. 云环境下的特殊考量
在阿里云、华为云等云平台使用fdisk时,有几个需要特别注意的点:
-
设备命名规则 :
- 系统盘通常为
/dev/vda - 数据盘从
/dev/vdb开始依次递增
- 系统盘通常为
-
分区对齐 :
# 检查分区对齐 fdisk -l /dev/vdb | grep 'sectors$'确保起始扇区是2048的倍数(现代磁盘的最佳实践)
-
在线扩容处理 :
# 扩容后刷新分区表 partprobe /dev/vdb # 调整文件系统大小 resize2fs /dev/vdb1 -
自动化脚本示例 :
#!/bin/bash DISK="/dev/vdb" echo -e "n\np\n1\n\n\nw" | fdisk $DISK mkfs.ext4 "${DISK}1" mkdir /data echo "${DISK}1 /data ext4 defaults 0 0" >> /etc/fstab mount -a
6. 高级技巧与故障处理
6.1 分区恢复技巧
误删分区后,不要进行任何写操作,尝试恢复:
# 搜索丢失的分区
testdisk /dev/vdb
6.2 性能优化参数
# 查看分区IO统计
iostat -x /dev/vdb1 1
# 调整调度器(对SSD特别有效)
echo 'deadline' > /sys/block/vdb/queue/scheduler
6.3 常见问题解决
问题1 :fdisk显示分区但系统不识别
解决 :
partprobe /dev/vdb
问题2 :扩展分区空间已满无法新建逻辑分区
解决 :
- 备份数据
- 删除并重建更大的扩展分区
- 恢复逻辑分区
问题3 :GPT分区表损坏
解决 :
gdisk /dev/vdb
# 选择'recovery & transformation'选项
更多推荐


所有评论(0)