在Linux系统中删除分区是一项需要谨慎操作的任务,因为分区删除会导致该分区内的所有数据永久丢失,若操作不当还可能损坏整个磁盘分区表,影响系统或其他数据的正常使用,本文将详细介绍Linux系统中删除分区的完整流程、常用工具及注意事项,帮助用户安全、准确地完成分区删除操作。
删除分区的准备工作
在执行分区删除操作前,必须完成以下准备工作,以降低数据丢失和系统风险:
- 备份重要数据:删除分区会清空该分区内的所有文件,若分区中有重要数据,需提前通过
rsync
、tar
等工具备份到其他磁盘或存储设备,使用rsync -av /path/to/partition/ /path/to/backup/
备份整个分区数据。 - 确认目标分区:通过
lsblk
或fdisk -l
命令查看当前系统的磁盘及分区信息,明确要删除的分区名称(如/dev/sdb1
、/dev/nvme0n1p2
等),避免误删其他分区。sudo lsblk -f # 查看磁盘、分区及其文件系统 sudo fdisk -l # 查看详细的分区表信息
- 卸载目标分区:若目标分区已挂载(如通过
mount
命令查看),需先卸载,若分区正在使用(如系统根分区或活跃的swap分区),需进入恢复模式或使用Live USB启动系统后再操作。sudo umount /dev/sdb1 # 卸载分区 # 若提示“device is busy”,可强制卸载(谨慎使用): sudo umount -l /dev/sdb1
常用分区删除工具及操作步骤
Linux系统提供了多种分区管理工具,如fdisk
(适用于MBR分区表)、parted
(支持MBR和GPT分区表)、gdisk
(适用于GPT分区表)等,用户可根据分区表类型选择合适的工具。
使用fdisk
删除MBR分区表中的分区
fdisk
是Linux中最经典的分区工具,适用于MBR(主引导记录)分区表,操作简单直观。
操作步骤:
- 启动
fdisk
并指定目标磁盘(如/dev/sdb
):sudo fdisk /dev/sdb
- 查看当前分区表:输入
p
(print),列出磁盘的分区信息,确认要删除的分区号(如/dev/sdb1
对应分区号1)。 - 删除分区:输入
d
(delete),然后输入要删除的分区号(如1),系统会提示“Partition 1 has been deleted”。 - 保存并退出:输入
w
(write),将修改写入分区表;若不保存,输入q
(quit)退出。
示例输出:
Command (m for help): p
Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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 20971519 20969472 10G 83 Linux
Command (m for help): d
Partition number (1-1, default 1): 1
Partition 1 has been deleted.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
使用parted
删除MBR或GPT分区表中的分区
parted
是一款功能强大的分区工具,支持MBR和GPT分区表,操作更灵活,适合处理复杂分区场景。
操作步骤:
- 启动
parted
并指定目标磁盘(如/dev/sdc
):sudo parted /dev/sdc
- 查看分区表:输入
print
,列出分区信息,确认要删除的分区名称(如/dev/sdc1
对应1
)。 - 删除分区:输入
rm 分区号
(如rm 1
),系统会提示“Partition 1 deleted”。 - 退出:输入
quit
,自动保存修改。
示例输出(GPT分区表):
GNU Parted 3.4
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: ATA SanDisk Ultra II (scsi)
Disk /dev/sdc: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 106MB 105MB fat32 boot, esp
2 106MB 500GB 500GB ext4
(parted) rm 1
(parted) print
Model: ATA SanDisk Ultra II (scsi)
Disk /dev/sdc: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
2 106MB 500GB 500GB ext4
(parted) quit
Information: You may need to update /etc/fstab.
使用gdisk
删除GPT分区表中的分区
gdisk
是专门为GPT(GUID分区表)设计的工具,操作逻辑与fdisk
类似,但更适合UEFI系统及大容量磁盘。
操作步骤:
- 启动
gdisk
并指定目标磁盘(如/dev/sdd
):sudo gdisk /dev/sdd
- 查看分区表:输入
p
(print),列出分区信息,确认要删除的分区号。 - 删除分区:输入
d
(delete),然后输入分区号,系统提示“Partition number deleted”。 - 保存并退出:输入
w
(write),若提示“Do you want to proceed? (Y/N)”,输入Y
确认。
示例输出:
GPT fdisk (gdisk) version 1.0.4
Partition table scan:
MBR: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): p
Disk /dev/sdd: 1000GB, 1000204886016 bytes, 1953164808 sectors
Disk model: WDC WD10EZEX
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 12345678-1234-5678-9012-123456789ABC
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953164774
Partitions will be aligned on 2048-sector boundaries
Total free space is 2097152 sectors (1024.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 2097151 1024.0MiB EF00 EFI System
2 2097152 1953164774 931.5GiB 8300 Linux filesystem
Command (? for help): d
Partition number (1-2): 1
Partition 1 deleted.
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdd.
The operation has completed successfully.
分区删除后的验证与处理
删除分区后,需通过以下步骤验证操作是否成功,并根据需求进行后续处理:
- 检查分区是否存在:使用
lsblk
或fdisk -l
查看目标磁盘,确认删除的分区已从列表中消失。sudo lsblk /dev/sdb # 查看/dev/sdb的分区情况
- 更新文件系统表(可选):若删除的分区曾挂载到
/etc/fstab
中,需编辑/etc/fstab
文件,删除对应的挂载条目,避免系统启动时报错。sudo nano /etc/fstab # 注释或删除包含已删除分区的行
- 创建新分区(可选):若需要重新利用释放的空间,可通过
fdisk
、parted
等工具创建新分区并格式化。
常用分区工具对比
为方便用户选择工具,以下是fdisk
、parted
、gdisk
的对比:
工具名称 | 适用分区表 | 特点 | 常用命令 |
---|---|---|---|
fdisk |
MBR | 简单易用,适合传统BIOS系统;不支持GPT分区表 | p (查看)、d (删除)、w (保存) |
parted |
MBR、GPT | 支持多种分区表,可调整分区大小,适合复杂场景 | print (查看)、rm (删除)、quit (退出) |
gdisk |
GPT | 专为GPT设计,支持大容量磁盘和UEFI系统 | p (查看)、d (删除)、w (保存) |
注意事项
- 数据备份优先:删除分区不可逆,务必提前备份重要数据,避免数据丢失。
- 确认目标磁盘:操作时务必指定正确的磁盘设备(如
/dev/sdb
而非/dev/sda
),防止误删系统所在磁盘。 - 谨慎操作系统分区:不要删除系统正在使用的分区(如根分区、
/boot
、swap
),否则可能导致系统无法启动。 - 避免强制卸载:若分区无法卸载,优先排查占用进程(如
fuser -km /dev/sdb1
),而非直接强制卸载,可能导致数据损坏。 - 分区表损坏处理:若删除分区后系统无法识别磁盘,可尝试使用
testdisk
等工具修复分区表,但成功率较低,建议提前备份分区表(sudo dd if=/dev/sda of=sda_mbr bs=512 count=1
)。
相关问答FAQs
Q1:删除分区后,数据是否可以恢复?
A:若删除分区后未对磁盘进行写入操作(如格式化、创建新分区),可通过数据恢复工具(如testdisk
、PhotoRec
)尝试恢复数据,但恢复成功率取决于数据是否被覆盖,因此建议提前备份数据。
Q2:删除分区时提示“Device or resource busy”,如何解决?
A:该错误表示目标分区正在被使用(如进程挂载、系统文件访问),可尝试以下方法解决:
- 使用
fuser -km /dev/sdb1
强制关闭占用进程(-k
为强制终止,-m
为指定设备); - 若为系统关键分区(如
/home
),需重启系统进入恢复模式后再操作; - 检查是否有虚拟机或容器挂载了该分区,关闭后重试。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/32061.html