找一个 16GB 的 U 盘来装系统镜像,插上去一看,磁盘管理里只认到大约 1.6GB。剩下的空间呢?你试着把那 1.6GB 的小分区删掉重新格式化,删不掉;试着新建卷,也失败。无论怎么点,那个小分区就是赖在那儿,容量也回不来。
现象
典型情况非常顽固:
- 一个标称 16GB 的 U 盘,在磁盘管理里只显示约 1.6GB 的容量;
- 磁盘管理里能看到一块"未分配"空间,但那 1.6GB 的小分区删不掉(被标记为受保护,或干脆报错);
- 想格式化:报错,说无法完成格式化;
- 想"新建简单卷"覆盖:因为操作对象是分区,而问题在整个磁盘上,所以也无效。
于是流程卡死:删不掉、格不了、建不了。
根因
要理解卡死的机制,先分清两个层次:分区和分区表。
- 分区表:位于磁盘最开始的一小块区域,描述"这块盘被分成几个区、每个区从哪到哪"。它是整盘的"目录"。
- 分区:分区表里描述的那一段连续扇区。格式化、新建卷、删除卷这些操作,作用对象都是某个具体分区。
这块 U 盘的情况是:分区表只描述了 1.6GB 这一段,剩下的大约 14GB 处于"未分配"状态——分区表里根本没有描述它。而那个 1.6GB 的小分区,要么带有某种保护标记,要么它的分区表项被工具锁着,导致常规的"删除卷"操作删不掉它。
问题的核心在于:你所有常规操作的对象都是"分区",而真正需要动的是"分区表"本身。格式化作用于一个分区内部,重建不了分区表;删除卷只是从分区表里拿掉一条记录,但这条记录动不了(被保护)。所以怎么点都没用——工具一直在错误的那一层使劲。
解决
思路要换一层:抹掉整个分区表,再重建,而不是跟那个小分区较劲。这会清空整块盘的数据,动手前确认里面没有要留的东西。
Windows 下用 diskpart(以管理员身份打开命令提示符):
diskpart
list disk
select disk N # N 是那个 U 盘的编号,务必看清楚,别选错成系统盘
clean # 清空整个分区表,抹掉所有分区和未分配空间
convert mbr # 重建为 MBR 格式(装系统常用;需要 GPT 就 convert gpt)
create partition primary
format fs=fat32 quick
assign
exit
逐步说明:
list disk/select disk N:先列出所有磁盘,按容量辨认出 U 盘,选中它。这一步最容易出错,选错盘会清掉别的盘的数据,一定要核对容量。clean:这一步是整条链的关键——它不格式化某个分区,而是清空整块盘的第一个扇区(分区表)。清完之后,磁盘管理里会显示为一块完整的"未分配"空间,容量恢复正常。convert mbr:为新的分区表选择格式。给老机器做启动盘多半用 MBR;UEFI 启动或大盘用 GPT。create partition primary:在整块盘上建一个主分区,此时它覆盖全盘容量。format fs=fat32 quick/assign:格式化并分配盘符。注意 FAT32 单文件上限 4GB——如果将来要放超过 4GB 的镜像,改用format fs=ntfs quick或exfat。
Linux 下等价操作是抹掉文件系统/分区表签名后重建:
# 查看设备名,确认是哪个盘(同样小心别选错)
lsblk
# 抹掉盘上的所有签名(分区表、文件系统标识等)
sudo wipefs -a /dev/sdX
# 之后用 fdisk/parted 重建分区表并格式化,例如:
sudo parted /dev/sdX mklabel msdos
sudo parted /dev/sdX mkpart primary fat32 1MiB 100%
sudo mkfs.vfat /dev/sdX1
wipefs -a 会清除磁盘上所有可识别的签名,让系统把它当成一块"干净"的盘,容量随之恢复正常。
延伸与预防
这条坑的通用价值,是一个分层的意识:"操作分区"和"操作整盘"是两回事。
磁盘相关的困境里,很多都是层次错配导致的:想恢复容量却在格式化分区,想改启动方式却在改分区内容,想换分区表格式却在动单个分区。遇到"怎么操作都不生效",先问自己:我这一层选对了吗——我动的是分区,还是分区表?是文件系统,还是块设备?是容器,还是容器里的进程?
预防上两条:
- 动手前一定先确认设备。
list disk、lsblk、按容量核对,比按顺序挑一个更稳。误伤系统盘的代价远大于多花那十秒。 - 盘点用途再选格式。要做启动盘、要放大于 4GB 的文件,这些都会反过来决定分区表格式和文件系统类型,先想清楚再
clean。
最后,这类"整盘抹除"的操作是不可逆的。养成先看清、再下手的习惯,比记住某条命令本身更重要。