Linux分区工具终极指南:fdisk 和 gdisk
你是不是也遇到过这种情况: 新买了一块 4T 的硬盘加到服务器上,兴冲冲地用 fdisk 分区,结果发现系统只识别到了 2T? 或者在 UEFI 启动的新机器上,用老方法分区之后,系统死活启动不了?
别慌,这不是你硬盘坏了,也不是你操作错了,而是你用错了分区工具!
今天这篇文章,我就把 Linux 下最常用的两个分区工具 fdisk 和 gdisk 给你讲透,从底层原理到实操步骤,看完你再也不会踩坑。
一、先搞懂:MBR vs GPT,这才是根源
很多人搞不清 fdisk 和 gdisk 的区别,其实本质上,这两个工具对应的是两种完全不同的磁盘分区表标准:
-
fdisk 是 MBR 分区表的专属工具
-
gdisk 是 GPT 分区表的专属工具
搞懂了 MBR 和 GPT 的区别,你就自然明白两个工具的差异了。
什么是 MBR?
MBR(Master Boot Record,主引导记录)是老古董级的分区标准,从 DOS 时代就有了,距今已经快 40 年了。
它的设计受限于当年的硬件条件,有几个天生的缺陷:
-
最大只支持 2TB 的硬盘:因为它用 32 位来表示扇区地址,超过 2TB 的部分,它根本就 “看不见”
-
最多只能有 4 个主分区:如果想要更多分区,你必须把其中一个主分区改成 “扩展分区”,然后在里面建逻辑分区,非常麻烦
-
不支持 UEFI 启动:新的主板用 UEFI 启动的话,MBR 是不兼容的
-
没有备份:分区表只存一份,一旦损坏,整个硬盘的数据就全没了
什么是 GPT?
GPT(GUID Partition Table,全局唯一标识分区表)是新一代的分区标准,是 UEFI 启动的配套方案,专门用来解决 MBR 的各种缺陷。
它的优势简直是降维打击:
-
支持超大硬盘:理论上支持 9.4ZB 的硬盘(1ZB=10 亿 TB),你这辈子能买到的硬盘都够用
-
最多支持 128 个分区:不用再搞什么扩展分区了,想建多少建多少
-
原生支持 UEFI 启动:新服务器、新电脑的标配
-
自带备份和校验:分区表在磁盘开头和结尾各存了一份,万一坏了能自动恢复,安全多了
二、fdisk:老当益壮的传统分区工具
fdisk 是 Linux 下最老牌的分区工具,几乎所有系统都自带,很多人入门 Linux 学的第一个分区工具就是它。
适用场景
-
硬盘小于等于 2TB
-
老机器,用 BIOS 启动
-
不需要太多分区的老系统
常用用法
操作非常简单,直接跟磁盘路径就行:
fdisk /dev/sdb
进入交互界面后,常用的命令就这几个,记住就能用:
m # 查看帮助菜单
p # 打印当前的分区表(最常用,先看一眼现有分区)
n # 新建一个分区
d # 删除一个分区
t # 修改分区的类型 ID(比如改成 LVM 专用的)
w # 保存修改并退出(敲完这个才会真的生效!)
q # 不保存,直接退出(改错了就用这个跑路)
举个例子:用 fdisk 建一个 LVM 分区
# 1. 进入分区工具 fdisk /dev/sdb
# 2. 先看一下现有分区 Command (m for help): p
# 3. 新建分区 Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p
# 选主分区 Partition number (1-4, default 1): 1
# 分区号 First sector (2048-xxxx, default 2048): 回车默认 Last sector, +sectors or +size{K,M,G} ...: 回车默认(用满整个盘)
# 4. 把分区类型改成 LVM(默认是83,Linux普通分区) Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 8e # LVM 对应的类型ID是8e Changed type of partition 'Linux' to 'Linux LVM'
# 5. 检查一下,没问题就保存
Command (m for help): p Command (m for help): w
三、gdisk:现代服务器的首选利器
gdisk 全称是 GPT fdisk,你可以把它理解成 “为 GPT 设计的、用法和 fdisk 几乎一模一样的新版分区工具”。
没错,它的交互命令和 fdisk 基本一致,你学会了 fdisk,上手 gdisk 几乎没有任何学习成本!
适用场景
-
硬盘大于 2TB(必用!)
-
新服务器、云主机
-
UEFI 启动的系统
-
需要做 LVM、RAID 等高级存储
-
只要是新硬盘,无脑用它就对了
常用用法
同样,直接跟磁盘路径:
gdisk /dev/sdb
第一次用的时候,如果你的硬盘是全新的,它可能会提示你没有分区表,问你要不要转成 GPT,选 Y 就行。
交互命令和 fdisk 几乎一样,只是多了几个 GPT 专属的功能:
? # 查看帮助
p # 打印分区表
n # 新建分区
d # 删除分区
t # 修改分区类型
b # 备份分区表!(GPT专属,强烈推荐分区前先备份)
w # 保存退出
q # 放弃退出
分区类型 ID 要注意!
很多人用 gdisk 的时候,改类型的时候还输 8e,结果发现不对。 因为 GPT 用的是 4 位的类型码,和 MBR 的不一样!
最常用的几个记一下:
|
用途 |
GPT 类型码 |
MBR 类型码 |
|
Linux 普通文件系统 |
8300 |
83 |
|
Linux LVM 物理卷 |
8e00 |
8e |
|
EFI 系统分区 |
ef00 |
ef |
四、一张表看懂两者核心区别
|
对比项 |
fdisk (MBR) |
gdisk (GPT) |
|
最大支持硬盘 |
2TB 上限 |
9.4ZB(无限大) |
|
最大分区数量 |
最多 4 个主分区 |
默认 128 个分区 |
|
启动支持 |
仅支持 BIOS |
支持 BIOS + UEFI |
|
分区表备份 |
无 |
自动备份,可手动恢复 |
|
数据校验 |
无 |
有 CRC 校验,防损坏 |
|
新服务器推荐 |
不推荐 |
默认首选 |
|
大硬盘支持 |
不支持(>2T 识别不全) |
完美支持 |
五、实战:用 gdisk 给新硬盘分区做 LVM 扩容(合并磁盘)
结合之前我们讲过的 LVM 扩容,这里给你一套完整的、生产环境常用的操作流程,新手直接复制就能用。
场景
新增了一块 10T 的硬盘 /dev/sdb,要给它分区,然后加入 LVM 卷组扩容。
完整步骤
# 1. 先确认系统识别到了新硬盘 lsblk # 你应该能看到 /dev/sdb,没有分区的那种
# 2. 用 gdisk 给新硬盘分区 gdisk /dev/sdb
接下来是 gdisk 的交互过程,一步步跟着敲:
# 1. 进入后,先看一下当前的分区表 Command: p Disk /dev/sdb: 1953525168 sectors, 9.1 TiB # 这里能看到整个硬盘的大小,确认是10T没错
# 2. 新建分区 Command: n Partition number (1-128, default 1): 回车默认 First sector (2048-...): 回车默认(从开头开始) Last sector (..., default ...): 回车默认(用满整个硬盘) Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): 8e00 # 重点!改成LVM类型 Changed type of partition to 'Linux LVM'
# 3. 检查一下分区对不对 Command: p # 你应该能看到 /dev/sdb1,类型是 Linux LVM #
4. 没问题就保存 Command: w # 最后确认一下,输入 Y 回车 Do you want to proceed? (Y/N): Y
分区完成!接下来就是我们熟悉的 LVM 扩容步骤了:
# 3. 创建物理卷 pvcreate /dev/sdb1
# 4. 把新PV加入卷组(把你的vgname换成自己的) vgextend your_vg_name /dev/sdb1
# 5. 扩容逻辑卷 lvextend -l +100%FREE /dev/your_vg_name/your_lv_name
# 6. 刷新文件系统 # 如果是 ext4 resize2fs /dev/your_vg_name/your_lv_name # 如果是 XFS xfs_growfs /你的挂载点
搞定!10T 的新硬盘就无缝加到你的系统里了,全程不用重启,在线操作。
六、避坑指南:什么时候用哪个?
看到这里你可能会问,我到底什么时候用 fdisk,什么时候用 gdisk?
给你一个最简单的判断标准,不用想太多:
-
如果你的硬盘大于 2TB → 必须用
gdisk,fdisk 用不了 -
如果你的机器是 UEFI 启动 → 必须用
gdisk,不然启动不了 -
如果是新服务器、云主机、新硬盘 → 无脑用
gdisk,没毛病 -
只有一种情况你可以用 fdisk:老机器、老硬盘(≤2T)、BIOS 启动,而且你不想改老系统
最后总结
-
fdisk是给老古董 MBR 用的,适合小硬盘、老系统 -
gdisk是给现代 GPT 用的,支持大硬盘、UEFI,安全又好用 -
两者的操作命令几乎一样,学会一个就能用另一个
-
大于 2T 的硬盘,别再用 fdisk 踩坑了!
其实分区这个事,只要搞懂了底层的 MBR 和 GPT 的区别,就再也不会懵了。希望这篇文章能帮你避开那些新手常踩的坑。
更多推荐



所有评论(0)