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
进入交互界面后,按以下步骤操作:
- 输入
n创建新分区 - 选择分区类型:
p主分区,e扩展分区 - 输入分区号(默认 1)
- 设置起始扇区(直接回车用默认值)
- 设置结束扇区:输入
+10G表示创建 10GB 分区 - 输入
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 类似:
n创建新分区- 设置分区号(默认 1)
- 设置起始扇区(默认)
- 设置大小:
+20G - 设置分区类型 GUID(Linux 文件系统默认 8300,直接回车即可)
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 本章知识体系
下面这张图帮你理清三款工具的关系和选择逻辑:
嗯,这张图把选择逻辑理得很清楚了。你只要记住:看磁盘大小 → 看是否需要在线调整 → 选工具,就不会出错。