登录
首页 >  文章 >  linux

Linux查看隐藏分区及所有扇区命令

时间:2026-03-26 15:33:46 464浏览 收藏

本文深入解析了Linux系统中“隐藏分区”显示异常的常见误区与真实原因,指出所谓“看不到”往往并非分区真正消失,而是因分区类型标识(如Hidden NTFS)、GPT/MBR元数据冲突、内核未重读分区表、udev过滤或工具兼容性限制所致;文章不仅澄清fdisk -l 本就不过滤分区的本质,还系统提供了gdisk、partprobe、lsblk、blkid、dd+hexdump等实用命令的精准使用场景与排错步骤,强调区分“逻辑不可见”与“物理不存在”的关键思维,并警示裸设备操作风险,帮助用户从底层原理出发,科学诊断和全面掌控磁盘扇区与分区状态。

linux怎么查看隐藏的分区_linux显示所有扇区【命令】

fdisk -l 显示不了隐藏分区?先确认是不是被标记为“隐藏”类型

Linux 下所谓“隐藏分区”,通常指分区表中类型 ID 被设为 0x17(Hidden NTFS)、0x1b(Hidden FAT32)等带 Hidden 前缀的 Windows 分区类型。这些分区在 fdisk -l 里仍会显示,但可能被忽略或不挂载——不是“看不见”,而是“被跳过”。fdisk 本身不过滤分区,它只读取 MBR/GPT 结构;真正影响显示的是工具对分区类型的处理逻辑。

实操建议:

  • sudo fdisk -l /dev/sda 查看完整设备,注意每行开头的 Device 列和末尾的 Type 列,找含 Hidden 字样的描述
  • TypeMicrosoft basic data 但实际是 Windows 隐藏恢复分区,说明用了 GPT + Microsoft 属性位(非传统隐藏 ID),此时 fdisk 不识别“隐藏”语义,得换工具
  • 遇到空设备或显示 No partition table,可能是分区表损坏或使用了 LVM/RAID/加密层,fdisk 看不到逻辑层以下内容

lsblk -f 和 blkid 都不显示某个分区?检查是否被 udev 过滤或未扫描

lsblk -fblkid 依赖内核块设备信息和 udev 数据库,如果分区存在但没出现在输出里,大概率是内核没识别到该分区(比如分区表未重读、设备忙、或分区起始扇区错位)。它们不会主动“隐藏”分区,但也不会自动刷新分区表状态。

实操建议:

  • 执行 sudo partprobe /dev/sda 强制内核重新读取分区表(尤其在修改过 fdisk 后未重启时)
  • 检查 /sys/block/sda/sda1/start 是否有数值,没有说明内核根本没解析出这个分区节点
  • 运行 sudo dmesg | tail -20,看是否有类似 sda: sda1 sda2 sda3 的识别日志,或报错如 partition #4 has size 0
  • 某些 USB 设备或 NVMe SSD 在热插拔后需手动触发扫描:echo 1 | sudo tee /sys/block/nvme0n1/device/rescan

想看到所有扇区(包括未分配、空闲、保留区)?别用分区工具,用 dd + hexdump

分区工具(fdiskparted)只关心已定义的分区边界,不展示“空白扇区”。要真看到物理磁盘上每个扇区内容(比如 MBR、EBR、GPT 头、空闲空间),必须绕过分区抽象层,直接读裸设备。

实操建议:

  • sudo dd if=/dev/sda bs=512 count=1 | hexdump -C 查看第一个扇区(MBR 或 GPT 头)
  • GPT 设备还需检查末尾:计算总扇区数 sudo blockdev --getsz /dev/sda,再读最后 1 扇区:sudo dd if=/dev/sda bs=512 skip=$(( $(blockdev --getsz /dev/sda) - 1 )) count=1 | hexdump -C
  • 注意:直接读写裸设备极危险,dd 参数写错可能清空整个盘;操作前确认设备名(lsblk 对照),避免误操作 /dev/sda 变成 /dev/sdb
  • 若需可视化扇区布局,gdisk -l /dev/sdafdisk 更清楚显示 GPT 备份头位置和保护区域

为什么 gdisk 能看到但 fdisk 看不到某些分区?MBR 和 GPT 元数据冲突

当一块盘既写过 MBR 又写过 GPT(比如用 Windows Disk Management 清除 GPT 后又用 Linux 工具重写),可能残留混合元数据。fdisk 只认 MBR,gdisk 只认 GPT,两者互不兼容。这时一个工具看到的“分区”,另一个可能完全无视——不是漏了,是压根不解析那种格式。

实操建议:

  • 运行 sudo gdisk -l /dev/sdasudo fdisk -l /dev/sda 对比输出,若前者显示分区而后者只显示 Disk /dev/sda: ... bytes, ... sectors 且无 Device 行,基本可判定是纯 GPT 盘,fdisk 旧版本不支持
  • 检查 sudo fdisk -l /dev/sda 输出顶部是否含 Partition Table: gpt,不含则 fdisk 当作无分区处理(即使 GPT 头有效)
  • 解决办法不是“强制显示”,而是统一工具链:GPT 盘优先用 gdiskparted;需要兼容老系统时,用 sgdisk --mbrtogpt 转换(慎用)

真正难的不是命令怎么敲,而是分清“没显示”到底是内核没识别、工具不支持、还是分区本身不存在。尤其是混合分区表和 NVMe 设备,lsblkfdisk 的输出差异背后,往往是不同内核模块对同一块设备的解释分歧。

理论要掌握,实操不能落!以上关于《Linux查看隐藏分区及所有扇区命令》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>