在Linux系统中,UUID(Universally Unique Identifier,通用唯一标识符)是一个用于唯一标识存储设备、文件系统或分区的128位标识符,它由32个十六进制数字组成,通常以8-4-4-4-12的格式表示(123e4567-e89b-12d3-a456-426614174000),由于UUID具有全局唯一性,即使在不同的系统中也不会重复,因此常用于/etc/fstab文件中挂载设备、磁盘管理以及系统配置等场景,本文将详细介绍在Linux系统中查询UUID的多种方法,包括使用blkid、lsblk、sudo fdisk -l、ls -l /dev/disk/by-uuid/等命令,并分析不同方法的适用场景和输出结果。

使用blkid命令查询UUID
blkid是Linux系统中用于查看块设备属性(包括UUID、文件系统类型、LABEL等)的常用命令,它需要root权限或sudo权限才能运行,能够显示系统中所有已挂载或未挂载的块设备的UUID信息。
基本语法
sudo blkid
输出示例
执行上述命令后,系统会列出所有块设备的详细信息,
/dev/sda1: UUID="123e4567-e89b-12d3-a456-426614174000" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="00000000-01"
/dev/sdb2: UUID="abcdef12-3456-7890-abcd-ef1234567890" BLOCK_SIZE="4096" TYPE="swap" PARTUUID="00000000-02"
/dev/nvme0n1p3: UUID="9876fedc-4321-0987-ba98-765432109876" BLOCK_SIZE="4096" TYPE="xfs" PARTUUID="00000000-03"
从输出中可以看出,每个设备都明确标注了UUID、TYPE(文件系统类型)和PARTUUID(分区UUID),如果只想查询特定设备的UUID,可以在命令后指定设备路径,
sudo blkid /dev/sda1
输出结果为:
/dev/sda1: UUID="123e4567-e89b-12d3-a456-426614174000" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="00000000-01"
优点与局限性
- 优点:命令简洁,输出信息全面,适合快速查看多个设备的UUID。
- 局限性:需要root权限,且对于某些虚拟设备或未格式化的分区可能无法显示UUID。
使用lsblk命令查询UUID
lsblk(list block devices)命令以树状结构列出所有块设备的信息,包括设备名称、大小、挂载点、UUID等,相比blkid,lsblk更侧重于设备层级关系,适合查看磁盘分区的结构。
基本语法
lsblk -f
选项-f用于显示文件系统信息,包括UUID、LABEL和文件系统类型。

输出示例
执行命令后,输出如下:
NAME FSTYPE UUID FSAVAIL FSUSE% MOUNTPOINT
sda
├─sda1 ext4 123e4567-e89b-12d3-a456-426614174000 45.2G 20% /
├─sda2 swap abcdef12-3456-7890-abcd-ef1234567890 - [SWAP]
└─sda3 xfs 9876fedc-4321-0987-ba98-765432109876 100G 5% /data
nvme0n1
└─nvme0n1p3 ext4 5555aaaa-bbbb-cccc-dddd-eeeeeeeeeeee 200G 10% /mnt
从输出中可以看出,lsblk -f清晰地展示了设备名(NAME)、文件系统类型(FSTYPE)、UUID(UUID)以及挂载点(MOUNTPOINT)等信息,如果需要更简洁的输出,可以使用grep命令过滤:
lsblk -f | grep UUID
优点与局限性
- 优点:以树状结构展示设备层级关系,适合复杂磁盘管理场景。
- 局限性:默认不显示UUID,需结合
-f选项;对于未挂载的设备,可能不显示UUID信息。
使用sudo fdisk -l命令查询UUID
sudo fdisk -l命令用于列出磁盘分区的详细信息,包括起始扇区、结束扇区、扇区数量以及文件系统类型,虽然该命令不直接显示UUID,但结合其他工具可以间接获取UUID。
基本语法
sudo fdisk -l
输出示例
执行命令后,输出如下:
Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 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: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 976899071 976897024 465.8G 83 Linux
/dev/sda2 976901118 1048575999 71674882 34.2G 5 Extended
/dev/sda5 976901120 1048575999 71674880 34.2G 82 Linux swap / Solaris
/dev/sda3 1048577024 1048575999 -975 480K 5 Extended
从输出中可以看到分区表信息,但未显示UUID,此时可以结合blkid命令获取UUID:
sudo blkid /dev/sda1
优点与局限性
- 优点:适合查看磁盘分区的物理布局和分区类型。
- 局限性:不直接显示UUID,需结合其他命令使用;输出信息较多,不易快速定位UUID。
使用ls -l /dev/disk/by-uuid/命令查询UUID
Linux系统在/dev/disk/by-uuid/目录下为每个分区创建了以UUID为名称的符号链接,通过查看该目录的内容,可以直接获取所有分区的UUID及其对应的设备路径。

基本语法
ls -l /dev/disk/by-uuid/
输出示例
执行命令后,输出如下:
total 0
lrwxrwxrwx 1 root root 10 Dec 1 10:00 123e4567-e89b-12d3-a456-426614174000 -> ../../sda1
lrwxrwxrwx 1 root root 10 Dec 1 10:01 5555aaaa-bbbb-cccc-dddd-eeeeeeeeeeee -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 10 Dec 1 10:02 9876fedc-4321-0987-ba98-765432109876 -> ../../sda3
lrwxrwxrwx 1 root root 10 Dec 1 10:03 abcdef12-3456-7890-abcd-ef1234567890 -> ../../sda2
从输出中可以看出,每个UUID都对应一个符号链接,指向实际的设备路径(如../../sda1),这种方法无需root权限,适合快速查看所有分区的UUID。
优点与局限性
- 优点:无需root权限,直观显示UUID与设备的对应关系。
- 局限性:仅适用于已分配UUID的分区,未格式化的分区可能不会出现在该目录中。
查询UUID方法的对比与选择
为了方便选择合适的查询方法,以下通过表格对比不同命令的特点:
| 命令 | 需要root权限 | 适用场景 | 局限性 | |
|---|---|---|---|---|
sudo blkid |
是 | 设备UUID、文件系统类型、LABEL | 快速查看多个设备的UUID | 需要root权限 |
lsblk -f |
否 | 设备层级、UUID、挂载点 | 复杂磁盘管理、查看分区结构 | 默认不显示UUID,需加-f选项 |
sudo fdisk -l |
是 | 分区物理布局、文件系统类型 | 查看磁盘分区表、物理结构 | 不直接显示UUID |
ls -l /dev/disk/by-uuid/ |
否 | UUID与设备的符号链接 | 快速获取UUID与设备的对应关系 | 仅适用于已分配UUID的分区 |
在Linux系统中,查询UUID的方法多种多样,用户可以根据实际需求选择合适的命令。blkid命令适合快速获取多个设备的UUID;lsblk -f擅长展示设备层级关系;sudo fdisk -l侧重于磁盘分区物理结构;而ls -l /dev/disk/by-uuid/则提供了无需root权限的直观查看方式,掌握这些方法,能够帮助用户更高效地管理磁盘设备、配置文件系统以及调试系统问题,在实际操作中,建议结合多种命令的使用,以获取更全面的设备信息。



















