Linux fdisk 创建分区(主分区、扩展分区和逻辑分区)全指南

分区是磁盘管理的核心操作之一。它将物理磁盘划分为多个独立的逻辑区域,帮助我们:

  • 分离操作系统与用户数据(避免系统崩溃导致数据丢失)
  • 优化磁盘性能(如将频繁访问的文件放在独立分区)
  • 实现多系统共存(如Windows与Linux双启动)
  • 管理磁盘空间(避免单个分区占用全部空间)

fdisk 是Linux系统中最经典的命令行分区工具,支持MBR(Master Boot Record)和GPT(GUID Partition Table)两种分区表格式,能够创建主分区、扩展分区和逻辑分区。本文将从基础概念到实战操作,手把手教你用fdisk完成各类分区的创建,并分享最佳实践与常见问题排查。

目录#

  1. 前置知识:分区类型与fdisk概述
  2. 操作前准备:避免踩坑的关键步骤
  3. 实战:用fdisk创建分区(主/扩展/逻辑)
    • 3.1 启动fdisk并选择目标磁盘
    • 3.2 创建主分区(Primary Partition)
    • 3.3 创建扩展分区(Extended Partition)
    • 3.4 创建逻辑分区(Logical Partition)
    • 3.5 保存并生效分区表
    • 3.6 验证分区结果
  4. 最佳实践:让分区更安全、合理
  5. 常见问题与排查
  6. 总结
  7. 参考资料

前置知识:分区类型与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需要修改磁盘分区表,因此必须用sudoroot用户操作。

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)#

主分区是独立的存储区域,适合安装系统或存放重要数据。

操作步骤

  1. 输入n(new,创建新分区),按回车;
  2. 输入p(primary,主分区),按回车;
  3. 输入分区编号(如1,主分区编号1-4),按回车;
  4. 输入起始扇区(默认是第一个可用扇区,直接回车);
  5. 输入结束扇区(指定分区大小,如+10G表示10GB),按回车;
  6. 输入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个主分区名额)。

操作步骤

  1. 输入n,按回车;
  2. 输入e(extended,扩展分区),按回车;
  3. 输入分区编号(如2,主分区已用1,剩余2-4),按回车;
  4. 起始扇区默认(直接回车);
  5. 结束扇区指定扩展分区大小(如+20G,后续逻辑分区将从这里划分),按回车;
  6. 输入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开始(无论主分区用了多少)。

操作步骤

  1. 输入n,按回车;
  2. 此时fdisk会自动选择l(logical,逻辑分区),直接回车;
  3. 起始扇区默认(直接回车);
  4. 结束扇区指定大小(如+5G),按回车;
  5. 重复步骤1-4,创建第二个逻辑分区(如+5G);
  6. 输入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. 备份是底线#

  • 分区前必须备份目标磁盘的所有数据(如用ddrsync);
  • 若操作失误,数据无法恢复(除非用专业恢复工具)。

3. 合理规划分区布局#

  • 系统分区(/)建议20-50GB(视发行版而定);
  • 交换分区(swap)建议1-2倍内存(若内存≥16GB,可设为4-8GB);
  • 数据分区(如/home)单独划分,避免系统重装丢失数据;
  • 逻辑分区适合存放临时数据或次要文件(因依赖扩展分区)。

4. 避免选错磁盘#

  • lsblkfdisk -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分区表(用gdiskparted工具),但fdisk仍是学习分区基础的最佳工具。

参考资料#

  1. fdisk官方手册
  2. Linux分区指南(Red Hat)
  3. MBR与GPT分区表对比
  4. lsblk命令手册

若有疑问,可随时查阅上述资料或在评论区交流!