Linux fdisk 创建分区(主分区、扩展分区和逻辑分区)全指南
分区是磁盘管理的核心操作之一。它将物理磁盘划分为多个独立的逻辑区域,帮助我们:
- 分离操作系统与用户数据(避免系统崩溃导致数据丢失)
- 优化磁盘性能(如将频繁访问的文件放在独立分区)
- 实现多系统共存(如Windows与Linux双启动)
- 管理磁盘空间(避免单个分区占用全部空间)
fdisk 是Linux系统中最经典的命令行分区工具,支持MBR(Master Boot Record)和GPT(GUID Partition Table)两种分区表格式,能够创建主分区、扩展分区和逻辑分区。本文将从基础概念到实战操作,手把手教你用fdisk完成各类分区的创建,并分享最佳实践与常见问题排查。
目录#
- 前置知识:分区类型与fdisk概述
- 操作前准备:避免踩坑的关键步骤
- 实战:用fdisk创建分区(主/扩展/逻辑)
- 3.1 启动fdisk并选择目标磁盘
- 3.2 创建主分区(Primary Partition)
- 3.3 创建扩展分区(Extended Partition)
- 3.4 创建逻辑分区(Logical Partition)
- 3.5 保存并生效分区表
- 3.6 验证分区结果
- 最佳实践:让分区更安全、合理
- 常见问题与排查
- 总结
- 参考资料
前置知识:分区类型与fdisk概述#
在开始操作前,必须理解MBR分区表的限制(fdisk默认使用MBR,除非手动指定GPT)和三种分区类型的区别:
1. MBR分区表的核心限制#
- 最多支持4个主分区(Primary Partition)
- 若需超过4个分区,必须创建1个扩展分区(Extended Partition),并在其中划分逻辑分区(Logical Partition)
- 单块磁盘最大支持2TB(超过2TB需用GPT分区表)
2. 三种分区类型的区别#
| 类型 | 数量限制 | 作用 | 能否引导系统 |
|---|---|---|---|
| 主分区 | 最多4个 | 独立存储区域 | 是 |
| 扩展分区 | 最多1个(代替1个主分区) | 作为逻辑分区的“容器” | 否 |
| 逻辑分区 | 无上限(受磁盘空间限制) | 依赖扩展分区存在 | 否 |
3. fdisk工具的特点#
- 命令行交互工具,适用于所有Linux发行版
- 支持MBR(dos)和GPT(gpt)分区表
- 操作前需确认目标磁盘(切勿选错磁盘,否则会丢失数据!)
操作前准备:避免踩坑的关键步骤#
在使用fdisk前,必须完成以下准备:
1. 获取管理员权限#
fdisk需要修改磁盘分区表,因此必须用sudo或root用户操作。
2. 识别目标磁盘#
使用以下命令列出系统中的所有磁盘,确认目标磁盘(如新增的/dev/sdb):
# 方法1:简洁列出磁盘与分区(推荐)
lsblk
# 方法2:详细列出磁盘信息
fdisk -l示例输出(lsblk):
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 19G 0 part /
└─sda2 8:2 0 1G 0 part [SWAP]
sdb 8:16 0 50G 0 disk # 目标磁盘(未分区)
3. 数据备份#
分区操作会彻底清除磁盘上的所有数据! 若目标磁盘已有数据,请务必先备份。
实战:用fdisk创建分区(主/扩展/逻辑)#
本节以**新磁盘/dev/sdb**为例,演示创建:
- 1个10GB主分区(
/dev/sdb1) - 1个20GB扩展分区(
/dev/sdb2) - 2个5GB逻辑分区(
/dev/sdb5、/dev/sdb6)
3.1 启动fdisk并选择磁盘#
运行以下命令启动fdisk,并指定目标磁盘(注意:替换/dev/sdb为你的磁盘!):
sudo fdisk /dev/sdb启动后会进入fdisk交互界面,提示:
Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): # 输入m可查看帮助
3.2 创建主分区(Primary Partition)#
主分区是独立的存储区域,适合安装系统或存放重要数据。
操作步骤:
- 输入
n(new,创建新分区),按回车; - 输入
p(primary,主分区),按回车; - 输入分区编号(如
1,主分区编号1-4),按回车; - 输入起始扇区(默认是第一个可用扇区,直接回车);
- 输入结束扇区(指定分区大小,如
+10G表示10GB),按回车; - 输入
p(print,查看分区表),验证主分区是否创建成功。
示例交互:
Command (m for help): n # 创建新分区
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p # 选择主分区
Partition number (1-4, default 1): 1 # 分区编号1
First sector (2048-104857599, default 2048): # 起始扇区默认
Last sector, +sectors or +size{K,M,G,T,P} (2048-104857599, default 104857599): +10G # 10GB大小
Created a new partition 1 of type 'Linux' and of size 10 GiB.
Command (m for help): p # 查看分区表
Disk /dev/sdb: 50 GiB, 53687091200 bytes, 104857600 sectors
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/sdb1 2048 20973567 20971520 10G 83 Linux # 新创建的主分区
3.3 创建扩展分区(Extended Partition)#
若需创建超过4个分区,必须先创建扩展分区(它会占用1个主分区名额)。
操作步骤:
- 输入
n,按回车; - 输入
e(extended,扩展分区),按回车; - 输入分区编号(如
2,主分区已用1,剩余2-4),按回车; - 起始扇区默认(直接回车);
- 结束扇区指定扩展分区大小(如
+20G,后续逻辑分区将从这里划分),按回车; - 输入
p,验证扩展分区是否创建成功。
示例交互:
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 # 选择扩展分区
Partition number (2-4, default 2): 2 # 分区编号2
First sector (20973568-104857599, default 20973568): # 默认起始扇区
Last sector, +sectors or +size{K,M,G,T,P} (20973568-104857599, default 104857599): +20G # 20GB大小
Created a new partition 2 of type 'Extended' and of size 20 GiB.
Command (m for help): p # 查看分区表
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 20973567 20971520 10G 83 Linux
/dev/sdb2 20973568 62916607 41943040 20G 5 Extended # 扩展分区
3.4 创建逻辑分区(Logical Partition)#
逻辑分区必须依赖扩展分区存在,编号从5开始(无论主分区用了多少)。
操作步骤:
- 输入
n,按回车; - 此时fdisk会自动选择
l(logical,逻辑分区),直接回车; - 起始扇区默认(直接回车);
- 结束扇区指定大小(如
+5G),按回车; - 重复步骤1-4,创建第二个逻辑分区(如
+5G); - 输入
p,验证逻辑分区是否创建成功。
示例交互:
Command (m for help): n # 创建新分区
Partition type
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5) # 自动识别为逻辑分区
Select (default p): # 直接回车(默认l)
Adding logical partition 5 # 逻辑分区编号从5开始
First sector (20975616-62916607, default 20975616): # 默认起始扇区
Last sector, +sectors or +size{K,M,G,T,P} (20975616-62916607, default 62916607): +5G # 5GB大小
Created a new partition 5 of type 'Linux' and of size 5 GiB.
# 再次创建第二个逻辑分区
Command (m for help): n
Partition type
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p):
Adding logical partition 6
First sector (31461632-62916607, default 31461632):
Last sector, +sectors or +size{K,M,G,T,P} (31461632-62916607, default 62916607): +5G
Created a new partition 6 of type 'Linux' and of size 5 GiB.
Command (m for help): p # 查看最终分区表
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 20973567 20971520 10G 83 Linux
/dev/sdb2 20973568 62916607 41943040 20G 5 Extended
/dev/sdb5 20975616 31459583 10483968 5G 83 Linux # 逻辑分区5
/dev/sdb6 31461632 41945599 10483968 5G 83 Linux # 逻辑分区6
3.5 保存并退出fdisk#
所有分区操作仅在内存中生效,需输入w(write,写入磁盘)才能永久保存:
Command (m for help): w # 写入分区表
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
注意:若操作错误,可输入q(quit,退出不保存)放弃修改。
3.6 验证分区结果#
用以下命令验证分区是否成功创建:
# 方法1:列出磁盘分区(简洁)
lsblk /dev/sdb
# 方法2:查看详细分区表
fdisk -l /dev/sdb示例输出(lsblk):
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 0 50G 0 disk
├─sdb1 8:17 0 10G 0 part
├─sdb2 8:18 0 20G 0 part
├─sdb5 8:21 0 5G 0 part
└─sdb6 8:22 0 5G 0 part
最佳实践:让分区更安全、合理#
1. 优先选择GPT分区表#
- 若磁盘≥2TB或需超过4个分区,必须用GPT(fdisk创建GPT需加
-l gpt参数,或用gdisk工具); - GPT支持无限分区(理论上),更适合现代系统。
2. 备份是底线#
- 分区前必须备份目标磁盘的所有数据(如用
dd或rsync); - 若操作失误,数据无法恢复(除非用专业恢复工具)。
3. 合理规划分区布局#
- 系统分区(
/)建议20-50GB(视发行版而定); - 交换分区(swap)建议1-2倍内存(若内存≥16GB,可设为4-8GB);
- 数据分区(如
/home)单独划分,避免系统重装丢失数据; - 逻辑分区适合存放临时数据或次要文件(因依赖扩展分区)。
4. 避免选错磁盘#
- 用
lsblk或fdisk -l确认目标磁盘(如/dev/sdb是新磁盘,/dev/sda是系统盘); - 若误操作系统盘(如
/dev/sda),会导致系统崩溃。
5. 格式化与挂载分区#
- 分区创建后需格式化(如
mkfs.ext4 /dev/sdb1)才能使用; - 用
mount命令挂载分区(如mount /dev/sdb1 /mnt),或写入/etc/fstab实现开机自动挂载。
常见问题与排查#
1. 分区未生效?#
- 原因:未输入
w命令写入分区表; - 解决:重新运行fdisk,输入
w保存。
2. 无法创建逻辑分区?#
- 原因:未先创建扩展分区;
- 解决:先创建扩展分区,再创建逻辑分区。
3. 无法创建第5个主分区?#
- 原因:MBR限制最多4个主分区;
- 解决:将其中一个主分区改为扩展分区,再创建逻辑分区。
4. 逻辑分区编号从5开始?#
- 原因:MBR标准规定逻辑分区编号从5开始(无论主分区用了多少);
- 解决:正常现象,无需修改。
5. 磁盘空间计算错误?#
- 原因:扇区大小理解错误(默认512字节);
- 解决:用
+size格式指定大小(如+10G),避免手动计算扇区。
总结#
fdisk是Linux系统中最基础、最常用的分区工具,掌握它能帮你灵活管理磁盘空间。关键要点:
- MBR分区表的限制(4主分区、2TB上限);
- 主分区→扩展分区→逻辑分区的创建顺序;
- 操作前备份、确认目标磁盘、写入修改。
对于现代系统,建议优先使用GPT分区表(用gdisk或parted工具),但fdisk仍是学习分区基础的最佳工具。
参考资料#
若有疑问,可随时查阅上述资料或在评论区交流!