磁盘管理工具
一、常用磁盘管理工具
1.1 fdisk
- 功能:传统的命令行分区工具,主要用于 MBR(Master Boot Record) 分区表。
特点:
- 支持创建、删除、调整分区(但调整分区功能有限)。
- 仅适用于磁盘容量 ≤ 2TB 的情况(MBR 的限制)。
- 最多支持 4 个主分区,或 3 个主分区 + 1 个扩展分区(扩展分区内可再分逻辑分区)。
适用场景:
- 管理旧系统或小型磁盘(≤2TB)。
- 需要兼容传统 BIOS 引导的系统。
- 例如:为旧服务器划分分区、修复 MBR 分区表问题。
1.2 gdisk
- 功能:现代命令行分区工具,专为 GPT(GUID Partition Table) 设计。
特点:
- 支持磁盘容量 >2TB(GPT 无容量限制)。
- 最多支持 128 个主分区(GPT 特性)。
- 兼容 UEFI 引导系统,常用于现代计算机。
适用场景:
- 管理大容量磁盘(如 4TB 以上的硬盘)。
- 为 UEFI 系统创建分区(如
/boot/efi分区)。 - 例如:在新电脑上安装 Linux 并配置 GPT 分区。
1.3 parted
- 功能:高级命令行工具,支持 MBR 和 GPT 分区表,功能更全面。
特点:
- 支持创建、删除、调整分区大小(需文件系统工具配合,如
resize2fs)。 - 支持脚本化操作,适合自动化任务。
- 可处理复杂分区需求(如对齐优化)。
- 支持创建、删除、调整分区大小(需文件系统工具配合,如
适用场景:
- 动态调整分区大小(如扩展
/home分区)。 - 跨分区表操作(需同时管理 MBR 和 GPT 磁盘)。
- 例如:在虚拟机中扩容磁盘后,使用
parted调整分区并配合resize2fs扩展文件系统。
- 动态调整分区大小(如扩展
1.4 partprobe
- 功能:通知操作系统内核重新读取分区表,无需重启。
特点:
- 适用于所有分区工具(
fdisk/gdisk/parted)修改后的场景。 - 避免因分区表缓存导致的分区信息不一致。
- 适用于所有分区工具(
适用场景:
- 修改分区表后立即生效(如删除旧分区后创建新分区)。
- 远程服务器操作时避免重启。
- 例如:在脚本中自动分区后运行
partprobe,再格式化新分区。
1.5 总结对比
| 工具 | 分区表支持 | 适用场景 | 典型操作 |
|---|---|---|---|
fdisk | MBR | 旧系统、小磁盘(≤2TB) | 创建主分区、修复 MBR |
gdisk | GPT | 大磁盘、UEFI 系统 | 创建 EFI 分区、管理 GPT 分区 |
parted | MBR/GPT | 动态调整分区、脚本化操作 | 调整分区大小、跨分区表操作 |
partprobe | 通用 | 分区修改后通知内核 | 避免重启、强制刷新分区表 |
1.6 注意事项
- 数据备份:分区操作可能导致数据丢失,务必提前备份。
- 文件系统支持:调整分区大小需文件系统工具配合(如
resize2fs用于 ext4)。 - 兼容性:UEFI 系统必须使用 GPT 分区表,BIOS 系统通常使用 MBR。
二、fdisk
fdisk 是一个常用的磁盘分区工具,主要用于在 Linux 系统中创建、删除、调整和管理磁盘分区。以下是一些常用的 fdisk 命令及其用途:
2.1 常用命令及用途
m: 显示帮助菜单,列出所有可用命令。p: 打印当前分区表,显示磁盘的分区信息。n: 创建一个新分区。d: 删除一个分区。t: 更改分区的类型(例如,将分区类型更改为 Linux swap、Linux LVM 等)。w: 将更改写入磁盘并退出。q: 不保存更改并退出。l: 列出所有已知的分区类型。a: 切换分区的可启动标志。v: 验证分区表。
2.2 使用 fdisk 进行分区的完整例子
假设我们有一块名为 /dev/sdb 的磁盘,我们想要在其中创建两个分区:一个主分区和一个扩展分区。
启动
fdisk:sudo fdisk /dev/sdb查看当前分区表:
输入p查看当前分区表:Command (m for help): p创建新分区:
输入n创建一个新分区: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-20971519, default 2048): [按回车键使用默认值] Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +5G这将创建一个大小为 5GB 的主分区。
创建扩展分区:
再次输入n创建另一个分区:Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): e Partition number (2-4, default 2): 2 First sector (10487808-20971519, default 10487808): [按回车键使用默认值] Last sector, +sectors or +size{K,M,G} (10487808-20971519, default 20971519): [按回车键使用默认值]这将创建一个扩展分区,占用剩余的磁盘空间。
查看分区表:
输入p查看当前分区表,确认分区已创建:Command (m for help): p保存并退出:
输入w将更改写入磁盘并退出:Command (m for help): w
2.3 总结
通过以上步骤,我们使用 fdisk 在 /dev/sdb 磁盘上创建了一个 5GB 的主分区和一个扩展分区。fdisk 是一个功能强大的工具,适合用于管理磁盘分区,但在操作时需要谨慎,以免误删或损坏数据。
三、gdisk
gdisk 是一个用于管理 GPT(GUID Partition Table) 分区表的工具,适用于现代磁盘(尤其是大于 2TB 的磁盘)。与 fdisk 不同,gdisk 专门设计用于 GPT 分区表,支持更多的分区和更大的磁盘容量。
以下是 gdisk 的常用命令及其用途,以及一个完整的使用示例。
3.1 常用命令及用途
p: 打印当前分区表,显示磁盘的分区信息。n: 创建一个新分区。d: 删除一个分区。t: 更改分区的类型(例如,将分区类型更改为 Linux filesystem、Linux swap 等)。w: 将更改写入磁盘并退出。q: 不保存更改并退出。l: 列出所有已知的分区类型。i: 显示分区的详细信息。c: 更改分区的名称(GPT 支持分区名称)。v: 验证分区表。
3.2 使用 gdisk 进行分区的完整例子
假设我们有一块名为 /dev/sdb 的磁盘,我们想要在其中创建两个分区:一个用于 Linux 文件系统,另一个用于 Linux swap。
启动
gdisk:sudo gdisk /dev/sdb查看当前分区表:
输入p查看当前分区表:Command (? for help): p创建新分区(Linux 文件系统):
输入n创建一个新分区:Command (? for help): n Partition number (1-128, default 1): [按回车键使用默认值] First sector (34-20971486, default 2048): [按回车键使用默认值] Last sector, +sectors or +size{K,M,G} (2048-20971486, default 20971486): +10G Hex code or GUID (L to show codes, Enter = 8300): [按回车键使用默认值(Linux filesystem)]这将创建一个大小为 10GB 的 Linux 文件系统分区。
创建新分区(Linux swap):
再次输入n创建另一个分区:Command (? for help): n Partition number (2-128, default 2): [按回车键使用默认值] First sector (20973568-20971486, default 20973568): [按回车键使用默认值] Last sector, +sectors or +size{K,M,G} (20973568-20971486, default 20971486): +2G Hex code or GUID (L to show codes, Enter = 8300): 8200这将创建一个大小为 2GB 的 Linux swap 分区。
查看分区表:
输入p查看当前分区表,确认分区已创建:Command (? for help): p保存并退出:
输入w将更改写入磁盘并退出:Command (? for help): w格式化分区:
分区创建完成后,需要格式化分区以便使用:格式化 Linux 文件系统分区:
sudo mkfs.ext4 /dev/sdb1格式化 Linux swap 分区:
sudo mkswap /dev/sdb2 sudo swapon /dev/sdb2
3.3 总结
通过以上步骤,我们使用 gdisk 在 /dev/sdb 磁盘上创建了一个 10GB 的 Linux 文件系统分区和一个 2GB 的 Linux swap 分区。gdisk 是管理 GPT 分区表的理想工具,特别适合现代大容量磁盘。与 fdisk 相比,gdisk 提供了更强大的功能和更灵活的分区管理。
四、parted
parted 是一个功能强大的磁盘分区工具,支持 MBR(Master Boot Record) 和 GPT(GUID Partition Table) 分区表。与 fdisk 和 gdisk 相比,parted 提供了一个交互式命令行界面,并且可以直接处理大容量磁盘(如大于 2TB 的磁盘)。以下是 parted 的常用命令及其用途,以及一个完整的使用示例。
4.1 常用命令及用途
print: 打印当前分区表,显示磁盘的分区信息。mkpart: 创建一个新分区。rm: 删除一个分区。resizepart: 调整分区的大小。set: 设置分区的标志(例如,boot、lvm等)。mklabel: 创建新的分区表(例如,gpt或msdos)。unit: 设置显示单位(例如,MB、GB、s等)。quit: 退出parted。
4.2 使用 parted 进行分区的完整例子
假设我们有一块名为 /dev/sdb 的磁盘,我们想要在其中创建两个分区:一个用于 Linux 文件系统,另一个用于 Linux swap。
启动
parted:sudo parted /dev/sdb查看当前分区表:
输入print查看当前分区表:(parted) print创建新的分区表(如果需要):
如果磁盘没有分区表,可以使用mklabel创建一个新的 GPT 分区表:(parted) mklabel gpt创建新分区(Linux 文件系统):
使用mkpart创建一个新分区:(parted) mkpart primary ext4 1MiB 10GiB这将创建一个从 1MiB 到 10GiB 的主分区,文件系统类型为
ext4。创建新分区(Linux swap):
再次使用mkpart创建另一个分区:(parted) mkpart primary linux-swap 10GiB 12GiB这将创建一个从 10GiB 到 12GiB 的 Linux swap 分区。
查看分区表:
输入print查看当前分区表,确认分区已创建:(parted) print退出
parted:
输入quit退出:(parted) quit格式化分区:
分区创建完成后,需要格式化分区以便使用:格式化 Linux 文件系统分区:
sudo mkfs.ext4 /dev/sdb1格式化 Linux swap 分区:
sudo mkswap /dev/sdb2 sudo swapon /dev/sdb2
4.3 总结
通过以上步骤,我们使用 parted 在 /dev/sdb 磁盘上创建了一个 10GB 的 Linux 文件系统分区和一个 2GB 的 Linux swap 分区。parted 是一个功能强大且灵活的工具,支持 MBR 和 GPT 分区表,特别适合处理大容量磁盘和复杂的分区需求。与 fdisk 和 gdisk 相比,parted 提供了更直观的命令行界面和更多的功能选项。