76·存储管理进阶

fdisk 磁盘分区

fdiskpartition

第76课 - fdisk 磁盘分区

所属模块: 存储管理 难度: 中级 (Intermediate) 标签: fdisk, partition 上一课: 仓库管理与镜像配置 下一课: parted 与 GPT 分区


1. 学习目标

完成本课学习后,你将能够:

  • 理解 磁盘分区的基本概念及其在系统存储中的作用。
  • 掌握 使用 fdisk 工具查看、创建、删除和管理 MBR 磁盘分区。
  • 实践 为一个新的磁盘创建主分区、扩展分区和逻辑分区。
  • 识别 在使用 fdisk 过程中的常见错误及其解决方案。

2. 核心概念

什么是磁盘分区?

想象一下,你买了一个大书柜(物理硬盘)。直接把所有书(数据)堆在一起会非常混乱。分区就像是你把书柜用隔板分成几个独立的区域:一个放技术书籍,一个放小说,一个放杂志。每个区域(分区)都可以独立管理,比如格式化成不同的文件系统(ext4, xfs),或者在上面安装不同的操作系统。

为什么需要分区?

  • 组织与管理: 便于数据分类存放。
  • 数据安全: 系统崩溃时,可以只重装系统分区,保护其他分区数据。
  • 多系统共存: 在同一块硬盘上安装多个操作系统。
  • 性能优化: 将频繁读写的数据(如 /var)放在单独的分区。

MBR 分区表与 fdisk

fdisk 是一个经典的、基于文本交互的磁盘分区工具,主要用于管理 MBR (Master Boot Record) 分区表。

  • MBR 的限制: 只能管理最大 2TB 的硬盘,且最多只能有 4个主分区(或 3个主分区 + 1个扩展分区)。扩展分区不能直接使用,需要在其中创建逻辑分区
  • fdisk 的特点: 功能强大且稳定,是系统管理员的必备技能之一。但由于 MBR 的限制,对于大于 2TB 的硬盘或需要更多分区的现代系统,通常需要使用 parted 工具和 GPT 分区表(下一课内容)。

3. 代码示例

重要提示: 对磁盘分区操作是危险的,错误操作会导致数据丢失。请在测试虚拟机或使用新磁盘/空磁盘进行练习。以下示例假设我们有一块新的未分区磁盘 /dev/sdb

# 1. 首先,查看系统识别到的磁盘及其分区情况
sudo fdisk -l
# 输出中会列出 /dev/sda, /dev/sdb 等磁盘及其大小、分区表类型、已有分区。

# 2. 启动对目标磁盘 /dev/sdb 的交互式分区操作
sudo fdisk /dev/sdb

进入 fdisk 交互界面后,你会看到提示符 Command (m for help):。输入 m 可以查看所有可用命令。以下是一个创建分区的典型流程:

# 交互过程开始
Command (m for help): p   # 输入 p (print),查看当前分区表(此时应该为空)

# 步骤A: 创建一个 20GB 的主分区(/dev/sdb1)
Command (m for help): n   # 输入 n (new),创建新分区
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p   # 选择 p,创建主分区
Partition number (1-4, default 1): 1   # 选择分区号,默认为1
First sector (2048-..., default 2048):   # 起始扇区,直接回车使用默认值
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-..., default ...): +20G   # 输入 +20G,表示分区大小为20GB

# 步骤B: 将剩余所有空间创建为一个扩展分区
Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): e   # 这次选择 e,创建扩展分区
Partition number (2-4, default 2): 2
First sector (...):   # 回车使用默认起始扇区
Last sector, ...:   # 直接回车,使用所有剩余空间

# 步骤C: 在扩展分区内部创建一个 10GB 的逻辑分区
Command (m for help): n
Partition type
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l   # 选择 l,创建逻辑分区(逻辑分区从5开始编号)
Adding logical partition 5
First sector (...):   # 回车
Last sector, ...: +10G   # 大小为10GB

# 步骤D: 再次创建逻辑分区,使用扩展分区的剩余空间
Command (m for help): n
# ... 选择 l,编号为6,直接回车使用剩余空间。

# 最后,检查并写入分区表
Command (m for help): p   # 再次打印确认
Command (m for help): w   # 输入 w (write),将更改写入磁盘并退出
The partition table has been altered.
Syncing disks.

分区后的处理: 分区创建完成后,还需要格式化挂载才能使用。

# 3. 格式化新分区(假设使用 ext4 文件系统)
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.ext4 /dev/sdb5
sudo mkfs.ext4 /dev/sdb6

# 4. 创建挂载点并挂载分区
sudo mkdir -p /mnt/data1 /mnt/data2
sudo mount /dev/sdb1 /mnt/data1
sudo mount /dev/sdb5 /mnt/data2

# 5. 验证挂载
df -h

4. 实践练习

练习前准备: 请在虚拟机中添加一块新的虚拟硬盘(例如 5GB),系统将识别为 /dev/sdb(具体名称请用 fdisk -l 确认)。

练习 1:基础分区

  1. 使用 fdisk/dev/sdb 创建一个大小为 2GB 的主分区 (/dev/sdb1)。
  2. 格式化该分区为 xfs 文件系统 (mkfs.xfs)。
  3. 将其挂载到 /mnt/practice1
  4. 使用 df -hlsblk 命令验证结果。

练习 2:多分区管理

  1. 在练习1的基础上,使用 fdisk 删除 /dev/sdb1 分区。
  2. 重新规划 /dev/sdb
    • 创建一个 1GB 的主分区 (/dev/sdb1)。
    • 创建一个扩展分区,占用剩余空间。
    • 在扩展分区内创建两个逻辑分区,每个大小约为 1.5GB (/dev/sdb5, /dev/sdb6)。
  3. 格式化所有分区为 ext4
  4. 将三个分区分别挂载到 /mnt/part1/mnt/part5/mnt/part6

练习 3:场景应用 你的服务器新增了一块数据盘 /dev/sdc(假设为 10GB)。你需要将其规划为:

  • /data 目录使用 5GB 的主分区。
  • /backup 目录使用剩余的所有空间。 请使用 fdisk 完成分区、格式化(选择你喜欢的文件系统)、并实现开机自动挂载(编辑 /etc/fstab 文件)。

5. 常见错误

  1. 选择错误的磁盘:

    • 错误:fdisk /dev/sda 上操作,误删系统分区。
    • 解决: 操作前反复使用 fdisk -l 确认磁盘型号、大小,再进入 fdisk 交互界面后用 p 命令再次核对。
  2. 分区表未写入:

    • 错误: 创建完分区后,误按 q 退出,导致所有操作作废。
    • 解决: 完成所有分区创建后,务必使用 w 命令保存并退出。如果不想保存,才用 q
  3. 忽略对齐警告:

    • 错误: fdisk 可能提示分区未对齐到物理扇区边界(The partition ... is not properly aligned...),这会导致性能下降。
    • 解决: 在指定起始扇区时,直接回车使用默认值(通常是 2048),fdisk 会自动处理对齐。
  4. 混淆主分区、扩展分区和逻辑分区:

    • 错误: 尝试创建第5个主分区,或在没有扩展分区的情况下创建逻辑分区。
    • 解决: 牢记 MBR 规则:主分区≤4个。如果需要超过4个分区,必须使用“3主+1扩展”的组合,然后在扩展分区内创建逻辑分区。
  5. 格式化未完成分区:

    • 错误:fdisk 中创建分区后,忘记格式化(mkfs)就直接尝试挂载。
    • 解决: fdisk 只负责划分“空间”,格式化是赋予“空间”“文件系统规则”的独立步骤。

6. 小结

  • fdisk 是管理 MBR 分区表 的强大交互式工具,适用于小于 2TB 的磁盘。
  • 分区操作是破坏性的,务必确认目标磁盘谨慎操作
  • 核心流程为:fdisk /dev/sdX -> 使用 n 创建分区 -> 使用 w 写入 -> mkfs 格式化 -> mount 挂载。
  • 理解 主分区、扩展分区、逻辑分区 的区别和限制是正确使用 fdisk 的关键。
  • 对于大于 2TB 的磁盘或现代系统需求,下一课将学习更先进的 parted 工具与 GPT 分区方案。

完成本课后,你已经掌握了传统磁盘分区的核心技能。接下来,我们将学习如何应对更大磁盘和更灵活分区需求的方案。

练习编辑器

rust
Loading...

继续学习

完成本课后,建议继续学习下一课「parted 与 GPT 分区」 以巩固所学知识。