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
  • 新分区需格式化和挂载后才能使用
相关推荐
步步为营DotNet22 分钟前
深入理解IAsyncEnumerable:.NET中的异步迭代利器
服务器·前端·.net
学习中的阿陈23 分钟前
pig、sqoop安装
linux·服务器·sqoop
CQ_YM31 分钟前
Linnux开发四大工具
linux·vim
大聪明-PLUS37 分钟前
在 C++/CLI 中开发描述符类
linux·嵌入式·arm·smarc
weixin_4365250739 分钟前
jar包启动使用logs替换nohup日志文件
java·linux·数据库
宠..40 分钟前
创建文本框控件
linux·运维·服务器·开发语言·qt
Bigan(安)44 分钟前
【奶茶Beta专项】【LVGL9.4源码分析】03-显示框架-display
linux·c语言·mcu·arm·unix
mljy.1 小时前
Linux《进程间关系和守护进程》
linux
win水1 小时前
十,进程控制
linux·服务器·vim·gcc·g++