Linux 命令:fdisk

Linux fdisk 命令完全指南

  • fdisk 是 Linux 系统中用于磁盘分区管理 的经典命令行工具,支持 MBR(Master Boot Record)分区表(不支持 GPT 分区表,GPT 需用 gdiskparted),适用于磁盘分区创建、删除、查看、修改等操作。以下是结构化、可实践的详细用法:
  • 资料合集:https://pan.quark.cn/s/6fe3007c3e95

一、核心功能与适用场景

功能 适用场景
查看磁盘分区信息 确认磁盘分区布局、类型、大小
创建/删除分区 新磁盘初始化、调整分区结构
修改分区类型 标记分区为 Linux、NTFS、FAT32 等
激活/取消激活分区 设置可引导分区(MBR 模式)
保存/放弃分区修改 提交分区表变更或撤销操作

二、基本语法

bash 复制代码
fdisk [选项] 设备文件
  • 设备文件:磁盘设备(如 /dev/sda/dev/vda),不可直接操作分区(如 /dev/sda1
  • 常用选项:
    • -l:列出所有磁盘及分区信息(最常用,无需权限)
    • -u:以扇区(sector)为单位显示分区大小(默认以柱面 cylinder 显示)
    • -s 分区:显示指定分区的大小(单位:块,1 块=1KB)

三、常用操作步骤(实战)

1. 查看磁盘分区信息(无权限,安全)

bash 复制代码
# 查看所有磁盘及分区详细信息
fdisk -l

# 查看指定磁盘(如 /dev/sda)的分区信息
fdisk -l /dev/sda

# 以扇区为单位显示(更精确)
fdisk -lu /dev/sda

输出解读

  • Disk /dev/sda: 500 GiB:磁盘总大小
  • Device Boot Start End Sectors Size Id Type:分区列表
    • Device:分区设备名(如 /dev/sda1
    • Boot:是否为引导分区(* 表示是)
    • Start/End/Sectors:分区起始/结束扇区、总扇区数
    • Size:分区大小
    • Id/Type:分区类型 ID(如 83=Linux 分区,7=NTFS 分区)

2. 磁盘分区管理(需 root 权限,谨慎操作)

步骤 1:进入 fdisk 交互模式
bash 复制代码
sudo fdisk /dev/sda  # 操作 /dev/sda 磁盘,替换为实际磁盘设备

进入后提示 Command (m for help):,输入 m 可查看所有命令。

步骤 2:核心交互命令(常用)
命令 功能 操作示例
p 查看当前磁盘分区表 输入 p 后回车,显示 /dev/sda 的分区信息
n 创建新分区 见下文详细步骤
d 删除分区 输入 d → 输入分区号(如 3)→ 确认删除
t 修改分区类型 输入 t → 输入分区号 → 输入类型 ID(如 7=NTFS)
a 激活/取消引导分区 输入 a → 输入分区号 → 切换 Boot 标记
w 保存修改并退出 所有操作完成后输入 w,分区表生效(关键!)
q 放弃修改并退出 未保存时输入 q,不影响原有分区
步骤 3:创建新分区(详细流程)

假设在 /dev/sda 上创建一个新的 Linux 分区(类型 83):

  1. 输入 n → 选择分区类型(p 主分区,e 扩展分区,默认 p
  2. 输入分区号(如 3,默认按顺序分配)
  3. 指定分区起始扇区(默认回车,使用空闲扇区起始位置)
  4. 指定分区大小:
    • 直接输入大小(如 20G 表示 20GB,500M 表示 500MB)
    • 或输入结束扇区(如 +20G 等价于起始扇区+20GB)
  5. 输入 t → 选择新创建的分区号 → 输入 83(Linux 分区类型)
  6. 输入 p 验证分区是否创建成功
  7. 输入 w 保存并退出,分区表生效

3. 关键注意事项

  • 操作前备份数据:修改分区表可能导致数据丢失,务必提前备份
  • 正确识别设备 :通过 fdisk -l 确认目标磁盘(如 /dev/sda),避免误操作系统磁盘
  • 分区生效
    • MBR 分区表:w 保存后立即生效(无需重启)
    • 新分区需格式化后才能使用(如 mkfs.ext4 /dev/sda3 格式化为 ext4)
  • GPT 分区不支持 :若磁盘是 GPT 分区表,需使用 gdisk(fdisk 升级版)或 parted

四、常见问题与解决方案

1. 无法创建分区:提示"没有空闲扇区"

  • 原因:磁盘已无未分配空间
  • 解决:删除无用分区(d 命令)或缩小现有分区(需用 resize2fs 等工具)

2. 保存后分区未显示

  • 原因:系统未重新读取分区表

  • 解决:

    bash 复制代码
    # 重新读取分区表(无需重启)
    sudo partprobe /dev/sda
    # 或重启系统
    sudo reboot

3. 误删除分区如何恢复

  • 立即停止对磁盘的写入操作

  • 使用工具如 testdisk 恢复分区表:

    bash 复制代码
    sudo apt install testdisk  # Debian/Ubuntu
    sudo yum install testdisk  # CentOS/RHEL
    sudo testdisk /dev/sda     # 按提示操作恢复

五、常用组合命令(高效操作)

bash 复制代码
# 快速查看磁盘分区大小(以 GB 为单位)
fdisk -l /dev/sda | grep "GiB"

# 查看所有 Linux 类型分区(ID=83)
fdisk -l /dev/sda | grep "83 Linux"

# 显示分区 /dev/sda1 的大小(单位:KB)
fdisk -s /dev/sda1

# 格式化新创建的分区为 ext4
sudo mkfs.ext4 /dev/sda3

# 挂载分区到 /mnt/newdisk
sudo mkdir -p /mnt/newdisk
sudo mount /dev/sda3 /mnt/newdisk

总结

fdisk 是 Linux 磁盘分区管理的基础工具,核心优势是轻量、支持 MBR 分区表,适合快速查看分区信息或简单分区操作。需注意:

  • 操作磁盘设备(如 /dev/sda)而非分区
  • 必须 root 权限,修改前备份数据
  • GPT 分区表建议使用 gdiskparted
  • 新分区需格式化和挂载后才能使用
相关推荐
大树889 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠9 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质10 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush410 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52010 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz10 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工11 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智11 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩11 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_11 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化