2、分区工具实战:fdisk、parted、gdisk 的安装与基本使用

分区工具,说白了就是咱们操作磁盘的「手术刀」。选对了工具,事半功倍;选错了,数据全完。今天我就把三把最常用的刀——fdisk、parted、gdisk——掰开揉碎讲清楚。

一句话总结三者的定位:

  • fdisk:MBR 分区表的老牌工具,兼容性最好,但最大只支持 2TB 磁盘。
  • gdisk:GPT 分区表的专用工具,fdisk 的「GPT 升级版」,支持 2TB 以上磁盘。
  • parted:全能型选手,既支持 MBR 也支持 GPT,还能在线调整分区大小。

2.1 安装:别等到要用才装

大多数 Linux 发行版默认都装了 fdisk。但 gdisk 和 parted 不一定。我个人习惯是,新装系统后第一时间把这三样都装上,省得到时候抓瞎。

Debian/Ubuntu 系:

sudo apt update
sudo apt install fdisk gdisk parted -y

RHEL/CentOS 系:

sudo yum install fdisk gdisk parted -y
# 或者用 dnf(CentOS 8+)
sudo dnf install fdisk gdisk parted -y

小提示: 如果你用的是最小化安装的 CentOS,fdisk 可能没装。别问我怎么知道的——有一次我在客户现场,ssh 上去发现连 fdisk 都没有,那叫一个尴尬。所以,先检查一下:

which fdisk gdisk parted

2.2 fdisk:MBR 分区的老江湖

fdisk 是我最早接触的分区工具。它的交互界面很「复古」,但胜在稳定。咱们直接上手操作。

2.2.1 查看磁盘信息

sudo fdisk -l

这条命令会列出所有磁盘及其分区表。输出里你会看到类似这样的信息:

Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x12345678

Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1  *       2048   2099199   2097152    1G 83 Linux
/dev/sda2       2099200 1048575999 1046476800  499G 8e Linux LVM

注意看 Disklabel type: dos,这表示磁盘用的是 MBR 分区表。如果是 GPT,这里会显示 gpt。

2.2.2 创建分区(交互式)

假设我们要在 /dev/sdb 上创建一个 10GB 的主分区:

sudo fdisk /dev/sdb

进入交互界面后,按以下步骤操作:

  1. 输入 n 创建新分区
  2. 选择分区类型:p 主分区,e 扩展分区
  3. 输入分区号(默认 1)
  4. 设置起始扇区(直接回车用默认值)
  5. 设置结束扇区:输入 +10G 表示创建 10GB 分区
  6. 输入 w 保存并退出

警告: 在输入 w 之前,所有操作都只是内存中的「草稿」。按 q 可以放弃修改。我曾经手滑把分区表写错了,还好及时发现按了 q,不然客户的数据库就没了。所以,写盘前一定再三确认。

2.2.3 非交互式操作(脚本化)

如果你需要批量操作,可以用 echo 或 printf 把命令传进去:

echo -e "n\np\n1\n\n+10G\nw" | sudo fdisk /dev/sdb

嗯,这写法看着有点丑。但自动化部署时很管用。

2.3 gdisk:GPT 时代的接班人

gdisk 的用法和 fdisk 几乎一模一样。区别在于:它默认创建 GPT 分区表,支持 2TB 以上的磁盘。

2.3.1 查看 GPT 分区表

sudo gdisk -l /dev/sdc

输出示例:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
   2         2099200        41963519   19.0 GiB    8E00  Linux LVM

2.3.2 创建 GPT 分区

sudo gdisk /dev/sdc

交互步骤和 fdisk 类似:

  1. n 创建新分区
  2. 设置分区号(默认 1)
  3. 设置起始扇区(默认)
  4. 设置大小:+20G
  5. 设置分区类型 GUID(Linux 文件系统默认 8300,直接回车即可)
  6. w 保存

避坑指南: 我曾经在 3TB 的磁盘上用了 fdisk,结果只认出来 2TB。后来换成 gdisk 才搞定。记住:磁盘超过 2TB,必须用 GPT 分区表,必须用 gdisk 或 parted。

2.4 parted:全能选手,在线调整

parted 比前两个工具更「现代」。它支持交互式和非交互式两种模式,而且可以在不丢失数据的情况下调整分区大小——当然,前提是文件系统支持。

2.4.1 查看分区表

sudo parted -l

或者指定磁盘:

sudo parted /dev/sdd print

2.4.2 创建 GPT 分区(非交互式)

sudo parted /dev/sdd mklabel gpt
sudo parted /dev/sdd mkpart primary ext4 1MiB 10GiB

这里要注意:parted 的单位默认是 MiB/GiB,不是 MB/GB。1MiB = 1.048576 MB,虽然差别不大,但在精确对齐时会有影响。

2.4.3 调整分区大小(在线操作)

假设 /dev/sdd1 是 ext4 文件系统,我们要把它从 10GiB 扩大到 20GiB:

# 先扩展分区
sudo parted /dev/sdd resizepart 1 20GiB
# 再扩展文件系统
sudo resize2fs /dev/sdd1

重要提醒: 调整分区大小前,一定要备份数据。虽然 parted 的在线调整功能很成熟,但万一断电或系统崩溃,数据损坏的风险依然存在。我在生产环境上操作过几十次,没出过问题,但每次操作前我都会做一次全量备份——这是职业习惯。

2.5 三款工具对比

特性 fdisk gdisk parted
分区表类型 MBR GPT MBR + GPT
最大磁盘容量 2TB 8ZB(理论) 8ZB(理论)
最大分区数 4 个主分区 128 个 128 个(GPT)
在线调整大小 不支持 不支持 支持
交互式操作 是 是 是
脚本化操作 较麻烦 较麻烦 方便
适用场景 老旧系统、2TB 以下磁盘 2TB 以上磁盘、UEFI 启动 需要在线调整、混合分区表

2.6 实战场景:该用哪个?

我根据实际项目经验,给你几个选择建议:

  • 场景一: 给 500GB 的旧服务器加数据盘,BIOS 启动 → 用 fdisk,简单稳定。
  • 场景二: 新买的 4TB 硬盘,UEFI 启动 → 用 gdisk,GPT 是唯一选择。
  • 场景三: 需要把 100GB 分区扩大到 200GB,且不能停机 → 用 parted,在线调整是它的绝活。
  • 场景四: 自动化部署脚本,批量创建分区 → 用 parted 的非交互模式,干净利落。

我的个人习惯: 日常运维用 fdisk 查信息,创建 GPT 分区用 gdisk,需要调整大小或写脚本时用 parted。三把刀各有各的用处,别指望一把刀打天下。

2.7 本章知识体系

下面这张图帮你理清三款工具的关系和选择逻辑:

分区工具选择流程图 分区工具选择逻辑 磁盘需要分区 磁盘容量 > 2TB? 是 用 gdisk 或 parted 否 用 fdisk 需要在线调整大小? 是 用 parted 否 用 fdisk/gdisk 提示:fdisk 只支持 MBR,gdisk 只支持 GPT,parted 两者都支持

嗯,这张图把选择逻辑理得很清楚了。你只要记住:看磁盘大小 → 看是否需要在线调整 → 选工具,就不会出错。