第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:基础分区
- 使用
fdisk为/dev/sdb创建一个大小为 2GB 的主分区 (/dev/sdb1)。 - 格式化该分区为
xfs文件系统 (mkfs.xfs)。 - 将其挂载到
/mnt/practice1。 - 使用
df -h和lsblk命令验证结果。
练习 2:多分区管理
- 在练习1的基础上,使用
fdisk删除/dev/sdb1分区。 - 重新规划
/dev/sdb:- 创建一个 1GB 的主分区 (
/dev/sdb1)。 - 创建一个扩展分区,占用剩余空间。
- 在扩展分区内创建两个逻辑分区,每个大小约为 1.5GB (
/dev/sdb5,/dev/sdb6)。
- 创建一个 1GB 的主分区 (
- 格式化所有分区为
ext4。 - 将三个分区分别挂载到
/mnt/part1、/mnt/part5、/mnt/part6。
练习 3:场景应用
你的服务器新增了一块数据盘 /dev/sdc(假设为 10GB)。你需要将其规划为:
/data目录使用 5GB 的主分区。/backup目录使用剩余的所有空间。 请使用fdisk完成分区、格式化(选择你喜欢的文件系统)、并实现开机自动挂载(编辑/etc/fstab文件)。
5. 常见错误
-
选择错误的磁盘:
- 错误: 在
fdisk /dev/sda上操作,误删系统分区。 - 解决: 操作前反复使用
fdisk -l确认磁盘型号、大小,再进入fdisk交互界面后用p命令再次核对。
- 错误: 在
-
分区表未写入:
- 错误: 创建完分区后,误按
q退出,导致所有操作作废。 - 解决: 完成所有分区创建后,务必使用
w命令保存并退出。如果不想保存,才用q。
- 错误: 创建完分区后,误按
-
忽略对齐警告:
- 错误:
fdisk可能提示分区未对齐到物理扇区边界(The partition ... is not properly aligned...),这会导致性能下降。 - 解决: 在指定起始扇区时,直接回车使用默认值(通常是 2048),
fdisk会自动处理对齐。
- 错误:
-
混淆主分区、扩展分区和逻辑分区:
- 错误: 尝试创建第5个主分区,或在没有扩展分区的情况下创建逻辑分区。
- 解决: 牢记 MBR 规则:主分区≤4个。如果需要超过4个分区,必须使用“3主+1扩展”的组合,然后在扩展分区内创建逻辑分区。
-
格式化未完成分区:
- 错误: 在
fdisk中创建分区后,忘记格式化(mkfs)就直接尝试挂载。 - 解决:
fdisk只负责划分“空间”,格式化是赋予“空间”“文件系统规则”的独立步骤。
- 错误: 在
6. 小结
fdisk是管理 MBR 分区表 的强大交互式工具,适用于小于 2TB 的磁盘。- 分区操作是破坏性的,务必确认目标磁盘并谨慎操作。
- 核心流程为:
fdisk /dev/sdX-> 使用n创建分区 -> 使用w写入 ->mkfs格式化 ->mount挂载。 - 理解 主分区、扩展分区、逻辑分区 的区别和限制是正确使用
fdisk的关键。 - 对于大于 2TB 的磁盘或现代系统需求,下一课将学习更先进的
parted工具与 GPT 分区方案。
完成本课后,你已经掌握了传统磁盘分区的核心技能。接下来,我们将学习如何应对更大磁盘和更灵活分区需求的方案。