在日常使用银河麒麟操作系统的过程中,不少用户会遇到一个常见困惑:明明磁盘容量少了几个GB,可执行常规命令翻查一圈,怎么也找不到“凭空消失”的分区。实际上,这些分区并非真正被删除,而是被系统有意识地“隐藏”了起来——例如Windows恢复分区、UEFI引导分区,或是被人为设置的Linux隐藏分区。它们不会在文件管理器中显示,也不会自动挂载到目录,但物理上依旧存在于磁盘结构中。那么,如何将这些“隐形”的分区一一揪出?下面进入实际操作步骤。

使用fdisk -l识别带有Hidden标签的分区
fdisk -l 是最直观的分区类型标识查看命令,它直接读取MBR或GPT分区表中的Type字段,其中可能包含“Hidden NTFS”“Hidden FAT32”等描述信息。
打开终端,输入并执行:sudo fdisk -l,按下回车键运行。
逐行浏览输出结果,在每个磁盘(例如 Disk /dev/sda: 512 GB)下方缩进的Device列表中,重点关注最后一列“Type”。只要该列文字包含 【Hidden】 字样(例如“Hidden NTFS”“Hidden Microsoft basic data”),就表明这是一个被操作系统主动忽略的隐藏分区。
需要注意一个细节:如果某分区Type显示为“Microsoft basic data”但实际是Windows Recovery分区,这通常是因为GPT磁盘启用了微软专有属性位,fdisk无法解析其“隐藏”含义——此时需改用gdisk命令或手动查询分区属性。
利用lsblk -f确认分区是否被内核识别但未挂载
lsblk -f 展示的是内核当前已识别并注册的块设备拓扑结构,它不依赖分区类型标记,只判断设备节点是否存在。如果某个分区在fdisk输出中可见,但在lsblk -f中完全没有出现,说明内核尚未加载该分区的信息。
执行命令:lsblk -f
观察输出中是否有对应的设备名称(如 /dev/sda4)。若缺失,并不代表分区不存在,而是内核尚未解析到——常见于刚使用fdisk新建分区后未及时刷新分区表。
立即补救措施:运行 sudo partprobe /dev/sda(请将sda替换为实际磁盘名称),强制内核重新读取分区表。再次执行 lsblk -f,隐藏分区大概率会正常浮现。
通过udev规则排查被主动屏蔽的分区
某些隐藏行为并非来自分区表本身,而是由udev规则主动注入了 UDISKS_IGNORE=1 环境变量,导致GNOME/KDE等桌面环境的磁盘管理工具彻底忽略该设备。这种隐藏方式对命令行工具没有影响,但在图形界面中会表现为“消失”。
方法一:检查自定义udev规则文件
进入 /etc/udev/rules.d/ 目录,运行:ls /etc/udev/rules.d/*hidden*。若返回类似 hidden.rules 的文件,说明存在人为设置的屏蔽规则。
方法二:全局搜索UDISKS_IGNORE关键字
执行:grep -r "UDISKS_IGNORE=1" /etc/udev/rules.d/。如果命中某一行,例如 KERNEL=="nvme0n1p4", ENV{UDISKS_IGNORE}="1",则 /dev/nvme0n1p4 就是被udev规则隐藏的分区。
这一步操作十分简单,直接将相关规则文件拖入即可完成。
运用gdisk探测GPT专属隐藏属性
GPT分区可能启用“Required Partition”或“No Drive Letter”等微软扩展属性,这些属性在fdisk中无法显示,但gdisk能完整解析。
第一步:安装gdisk(若系统中未预装)→ sudo apt install gdisk -y
第二步:运行 sudo gdisk -l /dev/sda(将sda替换为实际磁盘名称)
第三步:在输出结果的末尾查找“Partition attribute bits”部分。若某分区显示 bit 60(即“Required partition”)或 bit 63(即“No drive letter”),则该分区被UEFI/Windows视为隐藏用途,银河麒麟系统默认不会挂载也不展示。
注意:gdisk输出中的“GUID”列如果为 C12A7328-F81F-11D2-BA4B-00A0C93EC93B,代表这是一个EFI系统分区(ESP);如果为 DE94BBA4-06D1-4D40-A16A-BFD50179D6AC,则是Windows恢复环境(Windows RE)。两者均属于系统级隐藏分区,【请勿手动格式化或删除】。
