商城首页欢迎来到中国正版软件门户

您的位置:首页 >Linux系统查看磁盘UUID信息 blkid命令使用方法

Linux系统查看磁盘UUID信息 blkid命令使用方法

  发布于2026-05-06 阅读(0)

扫一扫,手机访问

Linux系统查看磁盘UUID信息:blkid命令使用方法

linux系统查看磁盘uuid信息 blkid命令使用方法

在Linux系统里管理磁盘,UUID是个绕不开的关键标识。它比传统的设备名(比如/dev/sda1)更稳定,不会因为硬盘插拔顺序改变而“漂移”。但有时候,你信心满满地敲下blkid,却发现它要么沉默不语,要么给出的信息和预期对不上。别急,这背后通常有迹可循。下面咱们就来拆解几个典型场景,看看问题到底出在哪,以及如何精准定位。

blkid 查不到 UUID?先确认设备有没有文件系统

首先得明白,blkid可不是什么万能探测器。它的工作原理是读取磁盘分区上已经建立好的文件系统元数据。所以,如果你执行blkid /dev/sda1后没有任何输出,或者只显示了PARTUUID(分区表层面的ID)而没有UUID,那最可能的原因就两个:要么这个分区压根还没被格式化,要么它原有的文件系统头信息被其他工具覆盖了。

想想看,是不是用过mkswap创建交换分区,或者用pvcreate初始化过LVM物理卷,甚至用cryptsetup做过磁盘加密?这些操作都会“抹掉”常规文件系统的特征。

怎么验证呢?可以试试这几条命令:

  • file -s /dev/sda1 —— 如果返回结果是“data”或者“LVM2 physical volume”,那就基本实锤了,这设备目前不是ext4xfs这类常规文件系统。
  • lsblk -f —— 直接看输出表格里的“TYPE”列。如果这一栏是空的,或者显示的是“swap”、“LVM2_member”,那blkid查不到UUID就太正常了。
  • sudo dumpe2fs -h /dev/sda1 2>/dev/null | grep UUID —— 这条命令专用于ext2/3/4系列文件系统,它能绕过blkid的缓存,直接去读超级块里的信息,结果更直接。

为什么 blkid 显示的 UUID 和 /etc/fstab 里对不上?

这个问题在重装系统、克隆硬盘,或者用dd命令复制过分区之后特别常见。很多时候,blkid本身没报错,它显示的是当前磁盘上真实的UUID。问题出在/etc/fstab这个系统挂载配置文件里,它记录的还是老设备的“身份证号码”,当然就对不上了。

排查的时候,建议按这个顺序来:

  1. 先运行sudo blkid -c /dev/null。这个-c参数的作用是清空缓存文件,强制blkid重新扫描,确保你拿到的是最新、最真实的UUID值。
  2. 然后,打开/etc/fstab文件,找到对应挂载点(比如/根目录或/home)的那一行,核对里面的UUID=...字符串是否和上一步命令的输出完全匹配。
  3. 如果发现不匹配,先别急着动手修改fstab。还有一个关键步骤:用findmnt -U命令确认一下,当前系统里实际挂载着的设备,用的到底是哪个UUID。这能避免你改错了对象。

另外,在容器、chroot环境或者initramfs(初始内存磁盘)里,如果/dev目录没有被完整地绑定挂载(bind-mount),blkid也可能因为看不到全部设备而“漏报”。

blkid -t TYPE=ext4 找不到设备?检查内核模块和设备状态

blkid能识别特定的文件系统类型,但前提是——Linux内核本身得支持解析它。举个例子,在一些比较“老派”的发行版(比如CentOS 7)上,btrfs文件系统的内核模块默认是不加载的。这时候,你就算用blkid -t TYPE=btrfs去查,它也会静悄悄地失败,什么都不告诉你。

遇到这类情况,可以快速做几个检查:

  • 查内核模块:用lsmod | grep xfs(查xfs模块)、lsmod | grep btrfs。如果没输出,可以尝试用modprobe btrfs手动加载一下。
  • 查支持列表:运行cat /proc/filesystems | grep -E "(ext|btrfs|xfs)",看看你关心的文件系统类型是否在系统当前支持的内核文件系统列表里。
  • 注意设备状态:即使设备正被占用(比如已经挂载了,或者作为LVM物理卷被激活了),blkid通常还是能读出UUID的。但如果你加上-p参数尝试进行低级探测,就可能会碰到“Device or resource busy”这样的报错。
  • 虚拟机特例:在虚拟化环境里,偶尔会遇到设备信息没及时同步的情况。这时可以尝试触发一下udev事件:sudo udevadm trigger --subsystem-match=block,让系统重新识别块设备。

by-uuid 链接验证 UUID 是否真实可用

最后介绍一个非常实用的“验真”方法:查看/dev/disk/by-uuid/目录。这里的符号链接是内核通过udev机制动态生成的,它反映的是系统在挂载时真正能识别和使用的设备标识,某种程度上比blkid的输出更“接地气”。

如果这个目录下没有对应UUID的链接,那么即使blkid能显示出来,你在/etc/fstab里用这个UUID配置自动挂载,也很有可能在系统启动时失败。

具体可以这么操作:

  • 执行ls -l /dev/disk/by-uuid/,看看你目标中的那个UUID是否存在,并且是否正确地指向了预期的设备(比如../../sdb2)。
  • 如果链接缺失,可能是udev规则没有生效。可以尝试运行sudo udevadm settle等待udev事件处理完成,然后再看看。

这里必须划个重点:PARTUUID(GPT分区表赋予的ID)和UUID(文件系统格式化的ID)是两码事。/dev/disk/by-partuuid/目录下的链接,不能用在/etc/fstabUUID=字段里,系统认不出来。

真正容易让人卡住的地方,往往不是命令怎么输入,而是你看到的那个UUID,背后指向了一个“存在但不可用”的设备。比如,设备被加密层包裹着、被LVM逻辑卷管理层抽象掉了,或者文件系统本身已经损坏但元数据侥幸残留。这时候,blkid依然能凭借残存的元数据把UUID读出来,给你一种设备正常的错觉。可当你试图用mount命令挂载时,系统就会直接报错,提示“wrong fs type”或者“No such device”。这才是最需要警惕的情况。

本文转载于:https://www.php.cn/faq/2408523.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注