文章目录
- 前言
- 一、安装和启动
- 二、基本命令
- 2.1 查看分区表
- 2.2 删除分区
- 2.3 创建新分区
- 2.4 更改分区类型
- 2.5 其他指令
- 三、注意事项
- 四、其他相关工具
前言
在Linux系统中,磁盘管理是维护系统性能和数据安全的重要环节。fdisk 是一个强大的命令行工具,专门用于磁盘分区的创建、删除和管理。本文将详细介绍 fdisk 命令的基本用法和常见操作,帮助用户高效地管理磁盘。
一、安装和启动
在大多数 Linux 发行版中,fdisk 默认已安装,如果未安装,可以通过包管理器进行安装。
启动 fdisk 的基本命令格式为:sudo fdisk /dev/sdX,其中,/dev/sdX 是你要操作的磁盘设备名,例如,/dev/sdb
root@jeff:/home/jeff# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 64M 1 loop /snap/core20/2379
loop1 7:1 0 87M 1 loop /snap/lxd/28373
loop2 7:2 0 63.7M 1 loop /snap/core20/2434
loop3 7:3 0 39.1M 1 loop /snap/snapd/21184
loop4 7:4 0 38.8M 1 loop /snap/snapd/21759
loop5 7:5 0 87M 1 loop /snap/lxd/29351
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 48G 0 part└─ubuntu--vg-ubuntu--lv 253:0 0 48G 0 lvm /
sdb 8:16 1 115.6G 0 disk
└─sdb1 8:17 1 115.6G 0 part
sr0 11:0 1 1024M 0 rom
root@jeff:/home/jeff# fdisk /dev/sdbWelcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Command (m for help):
二、基本命令
进入 fdisk 交互模式后,可以使用以下命令进行操作:
2.1 查看分区表
命令: p
功能: 打印当前分区表,显示分区的编号、起始扇区、结束扇区、大小和类型。
Command (m for help): pDisk /dev/sdb: 115.59 GiB, 124117843968 bytes, 242417664 sectors
Disk model: DataTraveler 3.0
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: 0x749ffca9Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 242417663 242415616 115.6G 7 HPFS/NTFS/exFATCommand (m for help):
以下是对各个部分的解释:
磁盘信息概述
- Disk /dev/sdb: 磁盘设备,名为 /dev/sdb
- Size: 磁盘的大小为 115.59 GiB(即 124117843968 字节)
- Sectors: 磁盘包含 242417664 个扇区
- Disk model: 磁盘的型号为 DataTraveler 3.0,表明这是一个 USB 闪存驱动器
- Units: 每个单位的大小为 1 * 512 = 512 bytes,这表示每个扇区的大小为 512 字节
- Sector size (logical/physical): 逻辑扇区大小和物理扇区大小都是 512 bytes,这是常见的扇区大小
- I/O size (minimum/optimal): 最小和最优的 I/O 大小均为 512 bytes
- Disklabel type: 分区表类型为 dos,这表明这是一个传统的 MBR 分区表格式
- Disk identifier: 分区标识符为 0x749ffca9,是用于识别此磁盘的唯一值
分区信息
Device | Boot | Start | End | Sectors | Size | Id | Type |
---|---|---|---|---|---|---|---|
/dev/sdb1 | 2048 | 242417663 | 242415616 | 115.6G | 7 | HPFS/NTFS/exFAT |
- Device: /dev/sdb1 是磁盘上的第一个分区
- Boot: 此列为空,表明该分区不是可引导的
- Start: 分区的起始扇区为 2048,这是磁盘上的第一个有效数据扇区
- End: 分区的结束扇区为 242417663
- Sectors: 此分区包含 242415616 个扇区(从 2048 到 242417663)
- Size: 分区的大小为 115.6G,与整个磁盘的大小一致,表明此分区使用了整个磁盘的空间
- Id: 分区类型 ID 为 7,表示该分区的类型为 HPFS/NTFS/exFAT,这通常用于 Windows 系统的 NTFS 或 exFAT 文件系统
- Type: 表示此分区的文件系统类型,主要为 HPFS/NTFS/exFAT,说明该分区可以用于存储大文件并且可以在多种操作系统之间共享
2.2 删除分区
命令: d
功能: 删除指定的分区 (注意:输入指令 w 使其生效,如果有多个分区会提示你输入要删除的分区编号)
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.Command (m for help): p
Disk /dev/sdb: 115.59 GiB, 124117843968 bytes, 242417664 sectors
Disk model: DataTraveler 3.0
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: 0x749ffca9Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.root@jeff:/home/jeff# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 64M 1 loop /snap/core20/2379
loop1 7:1 0 87M 1 loop /snap/lxd/28373
loop2 7:2 0 63.7M 1 loop /snap/core20/2434
loop3 7:3 0 39.1M 1 loop /snap/snapd/21184
loop4 7:4 0 38.8M 1 loop /snap/snapd/21759
loop5 7:5 0 87M 1 loop /snap/lxd/29351
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 48G 0 part└─ubuntu--vg-ubuntu--lv 253:0 0 48G 0 lvm /
sdb 8:16 1 115.6G 0 disk
sr0 11:0 1 1024M 0 rom
2.3 创建新分区
命令: n
功能: 创建新分区。你可以选择主分区或扩展分区,系统会提示输入分区编号、起始扇区和大小。
Command (m for help): n
Partition typep primary (0 primary, 0 extended, 4 free)e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-242417663, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-242417663, default 242417663): +16GCreated a new partition 1 of type 'Linux' and of size 16 GiB.
Partition #1 contains a exfat signature.Do you want to remove the signature? [Y]es/[N]o: yesThe signature will be removed by a write command.Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.root@jeff:/home/jeff# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 64M 1 loop /snap/core20/2379
loop1 7:1 0 87M 1 loop /snap/lxd/28373
loop2 7:2 0 63.7M 1 loop /snap/core20/2434
loop3 7:3 0 39.1M 1 loop /snap/snapd/21184
loop4 7:4 0 38.8M 1 loop /snap/snapd/21759
loop5 7:5 0 87M 1 loop /snap/lxd/29351
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 48G 0 part└─ubuntu--vg-ubuntu--lv 253:0 0 48G 0 lvm /
sdb 8:16 1 115.6G 0 disk
└─sdb1 8:17 1 16G 0 part
sr0 11:0 1 1024M 0 rom
root@jeff:/home/jeff#
流程:
- 选择分区类型(主分区或扩展分区)
- 输入分区编号(例如,1 ~ 4)
- 输入起始扇区(可以按 Enter 使用默认值)
- 输入分区大小(可以用 “+16G” 表示 16GB,直接按Enter默认使用全部内存)
主分区(Primary Partition): 主分区是磁盘上可以直接用于存储文件系统的分区。每个物理磁盘最多可以包含 4 个主分区。
扩展分区(Extended Partition): 扩展分区是一种特殊类型的分区,不能直接格式化为文件系统。它的主要目的是容纳多个逻辑分区。
2.4 更改分区类型
命令: t
功能: 更改分区的文件系统类型。
Command (m for help): p
Disk /dev/sdb: 115.59 GiB, 124117843968 bytes, 242417664 sectors
Disk model: DataTraveler 3.0
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: 0x749ffca9Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 33556479 33554432 16G 83 LinuxCommand (m for help): t
Selected partition 1
Hex code or alias (type L to list all): L00 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
01 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
02 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
03 XENIX usr 3c PartitionMagic 84 OS/2 hidden or c6 DRDOS/sec (FAT-
04 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
05 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
06 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
07 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
08 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
09 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
0a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
0b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
0c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi ea Linux extended
0e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs
0f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f1 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f4 SpeedStor
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fc VMware VMKCORE
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fd Linux raid auto
1c Hidden W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep
1e Hidden W95 FAT1 80 Old Minix be Solaris boot ff BBTAliases:linux - 83swap - 82extended - 05uefi - EFraid - FDlvm - 8Elinuxex - 85
Hex code or alias (type L to list all): 7
Changed type of partition 'Linux' to 'HPFS/NTFS/exFAT'.Command (m for help): p
Disk /dev/sdb: 115.59 GiB, 124117843968 bytes, 242417664 sectors
Disk model: DataTraveler 3.0
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: 0x749ffca9Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 33556479 33554432 16G 7 HPFS/NTFS/exFATCommand (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
注意:fdisk 工具的 t 指令用于更改现有分区的文件系统类型标识符,分区类型标识符是用于指示特定分区应使用哪种文件系统或用途的数字代码,并不会直接改变分区的文件系统格式,因此我们需要一些额外的工具来格式化该分区的文件系统类型,比如将分区格式化为 exFAT,可以使用 mkfs.exfat 工具。
使用指令 sudo mkfs.exfat /dev/sdb1 将sdb1分区文件系统类型格式化为exfat类型。
root@jeff:/home/jeff# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 64M 1 loop /snap/core20/2379
loop1 7:1 0 87M 1 loop /snap/lxd/28373
loop2 7:2 0 63.7M 1 loop /snap/core20/2434
loop3 7:3 0 39.1M 1 loop /snap/snapd/21184
loop4 7:4 0 38.8M 1 loop /snap/snapd/21759
loop5 7:5 0 87M 1 loop /snap/lxd/29351
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 48G 0 part└─ubuntu--vg-ubuntu--lv 253:0 0 48G 0 lvm /
sdb 8:16 1 115.6G 0 disk
└─sdb1 8:17 1 16G 0 part
sr0 11:0 1 1024M 0 rom
root@jeff:/home/jeff# mkfs.exfat /dev/sdb1
exfatprogs version : 1.1.3
Creating exFAT filesystem(/dev/sdb1, cluster size=32768)Writing volume boot record: done
Writing backup volume boot record: done
Fat table creation: done
Allocation bitmap creation: done
Upcase table creation: done
Writing root directory entry: done
Synchronizing...exFAT format complete!
这样,该分区既能在Linux下使用,也能在Windows上使用啦。
2.5 其他指令
输入 m 可以查看所有的指令
Command (m for help): mHelp:DOS (MBR)a toggle a bootable flagb edit nested BSD disklabelc toggle the dos compatibility flagGenericd delete a partitionF list free unpartitioned spacel list known partition typesn add a new partitionp print the partition tablet change a partition typev verify the partition tablei print information about a partitionMiscm print this menuu change display/entry unitsx extra functionality (experts only)ScriptI load disk layout from sfdisk script fileO dump disk layout to sfdisk script fileSave & Exitw write table to disk and exitq quit without saving changesCreate a new labelg create a new empty GPT partition tableG create a new empty SGI (IRIX) partition tableo create a new empty DOS partition tables create a new empty Sun partition tableCommand (m for help):
三、注意事项
- 备份数据: 在进行任何分区操作之前,确保已备份所有重要数据,以防止数据丢失。
- 操作权限: fdisk 需要 root 权限。
- MBR与GPT: fdisk 主要用于 MBR 分区,如果你的磁盘使用 GPT,推荐使用 gdisk 或 parted。
备注:MBR 是较老的分区格式,适合小型磁盘(最大2TB)和简单分区需求。GPT 是现代标准,提供更大的灵活性和扩展性,适合大容量磁盘(超过2TB)和复杂分区需求。
四、其他相关工具
- parted: 一个更强大、更灵活的分区工具,支持 MBR 和 GPT 分区。
- gdisk: 专为 GPT 分区表设计的工具,提供了类似 fdisk 的功能。
- gparted: 一个图形界面的分区管理工具,适合不熟悉命令行的用户。