fdisk命令

fdisk 命令 #

fdisk是一个用于创建和操作磁盘分区表的命令行工具。它允许用户创建、调整、删除和查看分区,是Linux系统中进行磁盘管理的基本工具之一。

语法 #

fdisk [选项] [设备]

常用选项 #

选项 描述
-l, --list 列出指定设备或所有设备的分区表
-s, --size 显示设备大小(以块为单位)
-b, --sectors 指定扇区大小(512、1024、2048或4096)
-u, --units[=单位] 显示单位(‘cylinders’或’sectors’,默认为sectors)
-C, --cylinders 数量 指定柱面数量
-H, --heads 数量 指定磁头数量
-S, --sectors 数量 指定每个磁道的扇区数量
-v, --version 显示版本信息
-h, --help 显示帮助信息

交互式命令 #

fdisk的交互式界面中,可以使用以下命令:

命令 描述
a 切换可启动标志
b 编辑嵌套的BSD磁盘标签
c 切换DOS兼容性标志
d 删除分区
l 列出已知的分区类型
n 添加新分区
o 创建新的空DOS分区表
p 打印分区表
q 退出而不保存更改
s 创建新的空Sun分区表
t 更改分区类型
u 更改显示/输入单位
v 验证分区表
w 写入分区表到磁盘并退出
x 额外功能(仅限专家)

常见用法 #

1. 列出所有磁盘分区 #

sudo fdisk -l

2. 列出特定设备的分区 #

sudo fdisk -l /dev/sda

3. 启动交互式分区工具 #

sudo fdisk /dev/sdb

4. 创建新分区 #

启动交互式界面后:

  1. 输入n创建新分区
  2. 选择分区类型(主分区p或扩展分区e
  3. 选择分区号(1-4)
  4. 指定起始扇区(按Enter使用默认值)
  5. 指定结束扇区或分区大小(例如+10G表示10GB)
  6. 输入w保存更改

5. 删除分区 #

启动交互式界面后:

  1. 输入d删除分区
  2. 选择要删除的分区号
  3. 输入w保存更改

6. 更改分区类型 #

启动交互式界面后:

  1. 输入t更改分区类型
  2. 选择要更改的分区号
  3. 输入分区类型代码(可以先使用l列出所有类型)
  4. 输入w保存更改

7. 查看当前分区表 #

启动交互式界面后,输入p显示当前分区表。

8. 创建交换分区 #

启动交互式界面后:

  1. 输入n创建新分区
  2. 完成分区创建步骤
  3. 输入t更改分区类型
  4. 选择刚创建的分区号
  5. 输入82(Linux交换分区类型)
  6. 输入w保存更改

常见分区类型代码 #

代码 分区类型
83 Linux
82 Linux 交换
8e Linux LVM
7 NTFS/exFAT
c FAT32 (LBA)
ef EFI 系统分区
fd Linux RAID 自动检测

实用示例 #

1. 创建一个新的MBR分区表并添加分区 #

sudo fdisk /dev/sdb

交互式命令序列:

o   # 创建新的空DOS分区表
n   # 添加新分区
p   # 主分区
1   # 分区号1
     # 默认起始扇区
+20G # 20GB大小
n   # 添加另一个分区
p   # 主分区
2   # 分区号2
     # 默认起始扇区
     # 默认结束扇区(使用剩余所有空间)
w   # 写入更改并退出

2. 创建一个交换分区 #

sudo fdisk /dev/sdb

交互式命令序列:

n   # 添加新分区
p   # 主分区
3   # 分区号3
     # 默认起始扇区
+4G  # 4GB大小
t   # 更改分区类型
3   # 分区号3
82  # Linux交换分区类型
w   # 写入更改并退出

然后格式化并启用交换分区:

sudo mkswap /dev/sdb3
sudo swapon /dev/sdb3

3. 将分区转换为LVM #

sudo fdisk /dev/sdb

交互式命令序列:

t   # 更改分区类型
1   # 分区号1
8e  # Linux LVM类型
w   # 写入更改并退出

4. 查看分区详细信息 #

sudo fdisk -l /dev/sdb

输出示例:

Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 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: 0x00000000

Device     Boot    Start       End   Sectors  Size Id Type
/dev/sdb1           2048  41945087  41943040   20G 83 Linux
/dev/sdb2       41945088 167772159 125827072   60G 83 Linux
/dev/sdb3      167772160 176160767   8388608    4G 82 Linux swap

注意事项 #

  1. 数据丢失风险:修改分区表可能导致数据丢失。在使用fdisk之前,务必备份重要数据。

  2. 重启生效:某些分区表更改可能需要重启系统才能完全生效。

  3. 大磁盘限制:传统的MBR分区表最多支持2TB的磁盘大小和4个主分区。对于更大的磁盘或更多分区,应考虑使用GPT分区表和gdisk工具。

  4. 权限要求:修改分区表需要root权限。

  5. 活动分区:不能修改当前正在使用的分区。如果需要修改系统磁盘,考虑使用Live CD/USB启动。

与其他分区工具的比较 #

工具 优点 缺点 适用场景
fdisk 简单、轻量、广泛可用 不支持GPT、有分区大小限制 小型磁盘、简单分区需求
gdisk 支持GPT分区表、大磁盘 不如fdisk普遍 大于2TB的磁盘、需要超过4个主分区
parted 支持多种分区表、可调整分区大小 命令较复杂 高级分区管理、在线调整分区大小
gparted 图形界面、直观易用 需要图形环境 桌面系统、不熟悉命令行的用户

提示 #

  • 使用fdisk -l快速查看系统中的所有磁盘和分区
  • 在执行任何分区操作前,确保已备份重要数据
  • 使用q命令可以安全退出而不保存任何更改
  • 创建分区后,需要使用mkfs命令格式化分区才能使用
  • 对于大于2TB的磁盘,应使用gdiskparted工具
  • 在修改系统磁盘分区前,确保了解可能的风险和恢复方法
  • 使用lsblk命令可以以树状结构显示所有块设备,便于理解磁盘和分区的关系