如何找到文件系统的 UUID?

如何找到文件系统的 UUID?

我在跑Ubuntu,并想找出UUID特定文件系统(不是分区)的。我知道我可以使用e2label /dev/sda1来找出文件系统标签,但似乎没有类似的方法来查找UUID

答案1

另一个可能可用并且效果很好的命令是''。它是 e2fsprogs 包的一部分。其用法示例:

查找数据/dev/sda1

topher@crucible:~$ sudo blkid /dev/sda1
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"

显示所有分区的 UUID 数据:

topher@crucible:~$ sudo blkid

/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
/dev/sdb: UUID="467c4aa9-963d-4467-8cd0-d58caaacaff4" TYPE="ext3"

以更易于阅读的格式显示所有分区的 UUID 数据:(注意:在较新的版本中,blkid -L具有不同的含义,blkid -o list应改用)

topher@crucible:~$ sudo blkid -L

device     fs_type label    mount point    UUID
-------------------------------------------------------------------------------
/dev/sda1 ext3             /              727cac18-044b-4504-87f1-a5aefa774bda
/dev/sdc  ext3             /home          467c4aa9-963d-4467-8cd0-d58caaacaff4

仅显示 /dev/sda1 的 UUID,不显示其他任何内容:

topher@crucible:~$ sudo blkid -s UUID -o value /dev/sda1

727cac18-044b-4504-87f1-a5aefa774bda

答案2

仅适用于 GPT 分区磁盘

在 GPT 格式的磁盘上,每个分区都分配有一个 GUID,这是 UUID 的一种形式,尽管可能不是原始发帖人所指的。因此,这个答案对原始提问者来说可能没什么帮助。不过,我认为有一个重要的区别需要注意。

获取 GPT 格式磁盘上分区 ​​1 的 GUID/dev/sda,以及它的分区标签等等:

sudo sgdisk -i 1 /dev/sda

或全部:

ls -l /dev/disk/by-partuuid

要使用位于特定分区上的文件系统根目录进行引导,您可以使用以下 Linux 内核参数语法:

root=PARTUUID=87654321-4321-4321-abcd-123456789012

在这种情况下,您可以仅指定 UUID 的开头 — 足以保证唯一性。此参数更原始,内核可以在其启动过程的早期理解。


它们之间在语义上有区别:

磁盘包含分区,分区包含文件系统,文件系统包含目录和文件。对于某些设置和操作系统,还有更多层。

GUID UUID 和相关标签指的是分区,而不是分区的内容。同一磁盘上的新分区或新磁盘上的分区将具有新的 GUID UUID。同一分区可能在某一天保存一个文件系统,而在另一天保存另一个文件系统。它只存在于 GPT 格式的磁盘中,而不存在于旧式分区磁盘中。这里通常没有比指定root=/dev/sda1或更多的实用功能root=8:1

其他当前答案指的是文件系统在某些包含分区中。如果将文件系统作为一个整体复制到另一个分区或硬盘,该值保持不变。此 UUID 可用于查找移动的文件系统。因此,这可能对大多数人来说更有意义。Linux 内核参数root=UUID=87654321-4321-4321-a567-123456789012指的是此。

我相信root=LABEL=并由root=UUID=早期的用户空间实现,前几天我在系统上看到的 init 代码将这些参数转换为/dev/disk/by-uuid/dev/disk/按标签(我相信链接是由udev在我的系统的用户空间中)。

[1]devt_from_devname()

答案3

执行此操作的脚本清理方式适用于任何类型的文件系统,方法是:

lsblk -no UUID <device-containing-FS>

或者,给定挂载点(或其内的任何文件):

lsblk -no UUID $(df -P <file> | awk 'END{print $1}')

输出是 UUID、整个 UUID 以及仅 UUID。

答案4

这似乎对我有用:

sudo dumpe2fs /dev/sda1 | grep UUID

相关内容