Linux如何删除分区?

在Linux系统中删除分区是一项需要谨慎操作的任务,因为分区删除会导致该分区内的所有数据永久丢失,若操作不当还可能损坏整个磁盘分区表,影响系统或其他数据的正常使用,本文将详细介绍Linux系统中删除分区的完整流程、常用工具及注意事项,帮助用户安全、准确地完成分区删除操作。

linux 如何删除分区

删除分区的准备工作

在执行分区删除操作前,必须完成以下准备工作,以降低数据丢失和系统风险:

  1. 备份重要数据:删除分区会清空该分区内的所有文件,若分区中有重要数据,需提前通过rsynctar等工具备份到其他磁盘或存储设备,使用rsync -av /path/to/partition/ /path/to/backup/备份整个分区数据。
  2. 确认目标分区:通过lsblkfdisk -l命令查看当前系统的磁盘及分区信息,明确要删除的分区名称(如/dev/sdb1/dev/nvme0n1p2等),避免误删其他分区。
    sudo lsblk -f  # 查看磁盘、分区及其文件系统
    sudo fdisk -l  # 查看详细的分区表信息
  3. 卸载目标分区:若目标分区已挂载(如通过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(主引导记录)分区表,操作简单直观。

操作步骤

  1. 启动fdisk并指定目标磁盘(如/dev/sdb):
    sudo fdisk /dev/sdb
  2. 查看当前分区表:输入p(print),列出磁盘的分区信息,确认要删除的分区号(如/dev/sdb1对应分区号1)。
  3. 删除分区:输入d(delete),然后输入要删除的分区号(如1),系统会提示“Partition 1 has been deleted”。
  4. 保存并退出:输入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分区表,操作更灵活,适合处理复杂分区场景。

linux 如何删除分区

操作步骤

  1. 启动parted并指定目标磁盘(如/dev/sdc):
    sudo parted /dev/sdc
  2. 查看分区表:输入print,列出分区信息,确认要删除的分区名称(如/dev/sdc1对应1)。
  3. 删除分区:输入rm 分区号(如rm 1),系统会提示“Partition 1 deleted”。
  4. 退出:输入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系统及大容量磁盘。

操作步骤

  1. 启动gdisk并指定目标磁盘(如/dev/sdd):
    sudo gdisk /dev/sdd
  2. 查看分区表:输入p(print),列出分区信息,确认要删除的分区号。
  3. 删除分区:输入d(delete),然后输入分区号,系统提示“Partition number deleted”。
  4. 保存并退出:输入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.

分区删除后的验证与处理

删除分区后,需通过以下步骤验证操作是否成功,并根据需求进行后续处理:

linux 如何删除分区

  1. 检查分区是否存在:使用lsblkfdisk -l查看目标磁盘,确认删除的分区已从列表中消失。
    sudo lsblk /dev/sdb  # 查看/dev/sdb的分区情况
  2. 更新文件系统表(可选):若删除的分区曾挂载到/etc/fstab中,需编辑/etc/fstab文件,删除对应的挂载条目,避免系统启动时报错。
    sudo nano /etc/fstab  # 注释或删除包含已删除分区的行
  3. 创建新分区(可选):若需要重新利用释放的空间,可通过fdiskparted等工具创建新分区并格式化。

常用分区工具对比

为方便用户选择工具,以下是fdiskpartedgdisk的对比:

工具名称 适用分区表 特点 常用命令
fdisk MBR 简单易用,适合传统BIOS系统;不支持GPT分区表 p(查看)、d(删除)、w(保存)
parted MBR、GPT 支持多种分区表,可调整分区大小,适合复杂场景 print(查看)、rm(删除)、quit(退出)
gdisk GPT 专为GPT设计,支持大容量磁盘和UEFI系统 p(查看)、d(删除)、w(保存)

注意事项

  1. 数据备份优先:删除分区不可逆,务必提前备份重要数据,避免数据丢失。
  2. 确认目标磁盘:操作时务必指定正确的磁盘设备(如/dev/sdb而非/dev/sda),防止误删系统所在磁盘。
  3. 谨慎操作系统分区:不要删除系统正在使用的分区(如根分区、/bootswap),否则可能导致系统无法启动。
  4. 避免强制卸载:若分区无法卸载,优先排查占用进程(如fuser -km /dev/sdb1),而非直接强制卸载,可能导致数据损坏。
  5. 分区表损坏处理:若删除分区后系统无法识别磁盘,可尝试使用testdisk等工具修复分区表,但成功率较低,建议提前备份分区表(sudo dd if=/dev/sda of=sda_mbr bs=512 count=1)。

相关问答FAQs

Q1:删除分区后,数据是否可以恢复?
A:若删除分区后未对磁盘进行写入操作(如格式化、创建新分区),可通过数据恢复工具(如testdiskPhotoRec)尝试恢复数据,但恢复成功率取决于数据是否被覆盖,因此建议提前备份数据。

Q2:删除分区时提示“Device or resource busy”,如何解决?
A:该错误表示目标分区正在被使用(如进程挂载、系统文件访问),可尝试以下方法解决:

  1. 使用fuser -km /dev/sdb1强制关闭占用进程(-k为强制终止,-m为指定设备);
  2. 若为系统关键分区(如/home),需重启系统进入恢复模式后再操作;
  3. 检查是否有虚拟机或容器挂载了该分区,关闭后重试。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/32061.html

(0)
酷番叔酷番叔
上一篇 2025年9月28日 23:34
下一篇 2025年9月28日 23:51

相关推荐

  • Linux系统如何查看当前时间?

    在Linux系统中,时间的准确查看和管理是系统运维的基础工作,无论是日志分析、定时任务执行还是跨系统协作,都依赖于对系统时间和硬件时间的准确掌握,Linux时间分为系统时间(由内核维护,软件运行时使用)和硬件时间(由主板实时时钟RTC维护,关机后仍运行),查看时间可通过多种命令实现,不同命令适用于不同场景,以下……

    2025年9月27日
    8100
  • 如何修改Linux启动参数?具体操作步骤有哪些?

    Linux启动参数,也称为内核参数,是操作系统引导过程中传递给内核的配置选项,用于控制硬件初始化、文件系统挂载、系统行为等,通过修改启动参数可以解决硬件兼容性问题(如显卡驱动加载失败)、启用调试模式、修改默认运行级别等,本文将详细介绍修改Linux启动参数的常用方法、步骤及注意事项,启动参数的常见修改场景在修改……

    2025年10月7日
    4900
  • Linux命令行如何返回上一级目录?

    Linux的目录结构采用树形组织形式,所有目录都从根目录“/”开始延伸,每个目录可能包含子目录或文件,在操作过程中,“返回上一级”是指从当前目录切换到其父目录,这是日常文件管理中高频操作,理解这一功能需要先掌握Linux路径的基本概念:绝对路径是从根目录开始的完整路径(如/home/user/docs),相对路……

    2025年9月10日
    9100
  • Debian还是Ubuntu选哪个?

    在Linux服务器上使用Telnet进行网络连接或端口测试是一项基础且实用的技能,虽然Telnet本身不加密数据传输(不安全),已逐渐被SSH取代,但它仍是诊断网络服务连通性的有效工具,以下是详细操作指南:Telnet的核心用途测试端口连通性:检查目标服务器端口是否开放(如Web服务80端口、数据库3306端口……

    2025年7月1日
    9000
  • 如何查询linux文件时间戳

    ls -l命令可查看文件的访问、修改和更改时间戳,或用

    2025年8月19日
    7600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信