你是不是也遇到过这种情况: 新买了一块 4T 的硬盘加到服务器上,兴冲冲地用 fdisk 分区,结果发现系统只识别到了 2T? 或者在 UEFI 启动的新机器上,用老方法分区之后,系统死活启动不了?

别慌,这不是你硬盘坏了,也不是你操作错了,而是你用错了分区工具!

今天这篇文章,我就把 Linux 下最常用的两个分区工具 fdiskgdisk 给你讲透,从底层原理到实操步骤,看完你再也不会踩坑。


一、先搞懂:MBR vs GPT,这才是根源

很多人搞不清 fdiskgdisk 的区别,其实本质上,这两个工具对应的是两种完全不同的磁盘分区表标准:

  • fdisk 是 MBR 分区表的专属工具

  • gdisk 是 GPT 分区表的专属工具

搞懂了 MBR 和 GPT 的区别,你就自然明白两个工具的差异了。

什么是 MBR?

MBR(Master Boot Record,主引导记录)是老古董级的分区标准,从 DOS 时代就有了,距今已经快 40 年了。

它的设计受限于当年的硬件条件,有几个天生的缺陷:

  1. 最大只支持 2TB 的硬盘:因为它用 32 位来表示扇区地址,超过 2TB 的部分,它根本就 “看不见”

  2. 最多只能有 4 个主分区:如果想要更多分区,你必须把其中一个主分区改成 “扩展分区”,然后在里面建逻辑分区,非常麻烦

  3. 不支持 UEFI 启动:新的主板用 UEFI 启动的话,MBR 是不兼容的

  4. 没有备份:分区表只存一份,一旦损坏,整个硬盘的数据就全没了

什么是 GPT?

GPT(GUID Partition Table,全局唯一标识分区表)是新一代的分区标准,是 UEFI 启动的配套方案,专门用来解决 MBR 的各种缺陷。

它的优势简直是降维打击:

  1. 支持超大硬盘:理论上支持 9.4ZB 的硬盘(1ZB=10 亿 TB),你这辈子能买到的硬盘都够用

  2. 最多支持 128 个分区:不用再搞什么扩展分区了,想建多少建多少

  3. 原生支持 UEFI 启动:新服务器、新电脑的标配

  4. 自带备份和校验:分区表在磁盘开头和结尾各存了一份,万一坏了能自动恢复,安全多了


二、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?

给你一个最简单的判断标准,不用想太多:

  1. 如果你的硬盘大于 2TB → 必须用 gdisk,fdisk 用不了

  2. 如果你的机器是 UEFI 启动 → 必须用 gdisk,不然启动不了

  3. 如果是新服务器、云主机、新硬盘 → 无脑用 gdisk,没毛病

  4. 只有一种情况你可以用 fdisk:老机器、老硬盘(≤2T)、BIOS 启动,而且你不想改老系统


最后总结

  • fdisk 是给老古董 MBR 用的,适合小硬盘、老系统

  • gdisk 是给现代 GPT 用的,支持大硬盘、UEFI,安全又好用

  • 两者的操作命令几乎一样,学会一个就能用另一个

  • 大于 2T 的硬盘,别再用 fdisk 踩坑了!

其实分区这个事,只要搞懂了底层的 MBR 和 GPT 的区别,就再也不会懵了。希望这篇文章能帮你避开那些新手常踩的坑。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐