linux:如何查看系统上所有可用磁盘的所有UUID?


153

/etc/fstab包含:

# / was on /dev/sda1 during installation
UUID=77d8da74-a690-481a-86d5-9beab5a8e842 /               ext4    errors=remount-ro 0       1

此系统上还有其他几个磁盘,并且并非所有磁盘都已安装到正确的位置(例如,有时会将/ dev / sda1和/ dev / sdb1颠倒过来)。

如何查看系统上所有磁盘的UUID?我可以在该系统上看到第三个磁盘的UUID吗?


@setzamora的答案更好。请更改接受的答案。
nslntmnx

Answers:


134

/dev/disk/by-uuid其中,有符号链接将每个驱动器的UUID映射到其输入/dev(例如/dev/sda1


3
LVM分区时不可读。
Grzegorz Wierzowiecki 2011年

1
LVM在其结构中已经使用了类似UUID的长标识符(尽管表示方式有所不同)。我认为将文件系统UUID与LVM一起使用的唯一原因是作为某种自动化的统一接口,因为LVM已经为您完成了LV到人性化名称的映射。
telcoM

2
ls -lha /dev/disk/by-uuid
deFreitas '18

157

有一个工具blkid(以root身份使用或与一起使用sudo),

# blkid /dev/sda1
/dev/sda1: LABEL="/" UUID="ee7cf0a0-1922-401b-a1ae-6ec9261484c0" SEC_TYPE="ext2" TYPE="ext3"

您可以检查此链接以获取更多信息


12
只是一个小小的评论:看起来像是组的成员disk就足够了blkid;无需完整的超级用户权限。
arielf 2013年

10
如果需要UUID(例如在脚本中进行解析),则可以执行blkid /dev/sda1 -s UUID -o value
杰克·奥康纳

3
在这里快速评论:在我的发行版(Debian 8)中,这会产生UUID和“ PARTUUID”,这很令人困惑。我使用了{lsblk}命令,该命令仅给出一个值。
takumar

2
尽管我更喜欢blkid /dev/sd*列出所有驱动器,但这可以节省大量时间。.吐出的信息通常足以找到所需的驱动器。:)
ZaLiTHkA

2
GPT分区磁盘的PARTUUID是分区的GPT UUID,而不是分区中的文件系统。尚未创建文件系统时可能很有用。在MBR分区的磁盘上,PARTUUID不是真正的UUID,而仅仅是MBR +破折号+分区号中的Windows磁盘签名。
telcoM

31

最好使用的命令是 lsblk -f。如果在同一驱动器上使用LVM,crypto_LUKS或多个卷组,它将列出所有设备和分区,如何安装(如果有的话)以及设备的树结构。


10

这对我有用:

ls -la /dev/disk/by-uuid

如果要检查分区的类型,请使用:

df -Th

它会告诉您是否有ext3或ext2。今天它对我有帮助,因为那里有一个格式化的ext2分区,而我认为它是ext3,这导致安装失败。


您可以随时尝试mount -t auto /dev/sda1 /media/sda1
ott-- 2012年

8

要仅获取UUID特定磁盘设备(例如在脚本中使用)的,可以使用:

sudo blkid -s UUID -o value /dev/sdXY

/dev/sdXY设备的名称在哪里。


6
lsblk -o +uuid,name

您可以看到所有可以添加到-o--output)中的输出

lsblk --help

这也可以做

# blkid

name默认情况下不打印吗?
don_crissti

它是。仅出于教育目的将其添加(添加逗号分隔所需的字段)
Nico Rodsevich

2

先前的答案不适用于多个设备或具有相同UUID的设备。

尝试这个:

sudo blkid /dev/sd*

1
真的吗 您是说,投票最多的答案行不通?
don_crissti

通用唯一标识符(UUID)应该始终是唯一的。UUID的全部目的是成为一个通用的唯一对象。如果没有,那就有问题了。我至少在网络设备上已经看到克隆的VM中存在重复的UUID。
Stefan Lasiewski

5
如果使用dd命令克隆分区,则副本将具有相同的uuid,是的,这是一个问题。这里的其他答案不会显示出来。
凯文

1

通过以下命令行,您可以看到UUID以及到分区的映射。

ls /dev/disk/by-uuid -lt

lrwxrwxrwx 1 root root 10 Sep  1 18:51 57eacf4e-1940-436e-b945-85f8d4833aa5 -> ../../sda2
lrwxrwxrwx 1 root root 10 Sep  1 18:51 656f4cae-8527-43a0-a80f-00ac82818744 -> ../../sda1
lrwxrwxrwx 1 root root  9 Sep  1 18:51 d627595d-4060-440e-8380-a1fe9f3f2a81 -> ../../md0
lrwxrwxrwx 1 root root 10 Sep  1 18:51 0dfd6dfe-1852-460d-852c-676a5b9035ed -> ../../sda4
lrwxrwxrwx 1 root root 10 Sep  1 18:51 b1ddf850-8f81-429f-a653-38ae4a4ebb6f -> ../../sda3
lrwxrwxrwx 1 root root  9 Sep  1 18:51 b4b729f7-5699-411c-8f5a-424bbc7c89fc -> ../../sdb

为什么我们可以看到sda的uuid
Honghe.Wu

每个分区的文件系统只有一个UUID。在sda上,我有4个分区,所以我有4个UUID。wiki.debian.org/Part-UUID
NicolasGuérinet'17年

1

我和您有同样的问题:重新/dev/sd**启动后按内核重命名:

当然,我所有的自动安装/etc/fstab都由LABEL或UUID引用,因此基本上没有问题。上面的所有命令(blkid或lsblk)都提供了此类信息。

但是麻烦就从我的情况开始,当您以RAW模式使用分区时,在当前引导的系统的角度来看:例如,将分区用作原始设备,为VirtualBox创建虚拟磁盘(因此提到这个分区是一样的东西:/dev/sdf3)或分区被用作原始设备,使一个LUN为iSCSI(所以参照该分区是这样的:/dev/sdc6

因此,现在在启动时(例如在rc.local中),您必须以可靠的方式找到/dev/sdXX专用RAW分区的设备,并修改一些文件:

例1

该原始磁盘的VirtualBox磁盘* .vmk描述,部分类似于:

\# Extent description
RW 488397167 FLAT "/dev/sdXX" 0

然后重新启动VirtualBox服务

例子2

在tgtd配置中,/dev/sdd6在构建时已将目标:target0与之关联。重新启动后,您将重命名相同的分区。/deb/sdc6 可移动磁盘,USB或eSATA会发生这种情况!那么如何自动查找新设备呢?再次在/etc/rc.d/rc.local中

因此,在这种情况下,我们需要一种可靠的方式来查找新设备的名称。GPT分区为任何GPT分区提供了唯一的GUID,用GPT表编写。

gdisk不会以列表模式提供此信息,而仅在交互式模式下通过以下命令提供:i命令。幸运的是,blkid做到了!

因此,您需要编写一个Shell脚本,以查看/dev/sdXX与分区创建时注意到的GUID关联的所有磁盘(即device)。

类似于search_device_by_partUUID.sh:

\#!/bin/bash

PART_UUID=$1
if [ "$PART_UUID" = "" ]
then
    echo "Syntax: $0 <a valid partition UUID>"
    exit 3
fi
lsblk | grep '^sd' | awk '{print $1}' | while read DISK_DEVICE
do 
    INFO=`blkid /dev/${DISK_DEVICE}* | grep "PARTUUID=\"$PART_UUID\"" `
    if [ "$INFO" != "" ]
    then
        echo INFO : "$INFO"
        BLK_DEVICE=`echo "$INFO" | awk '{print $1}'`
        echo $BLK_DEVICE > /dev/shm/blkdevice
        echo -n "BLK_DEVICE : " ; cat /dev/shm/blkdevice
    fi
done

然后/dev/shm/blkdevice在rc.local脚本中使用。


0

要查看硬盘分区的uuid,我只需使用Linux CD引导系统并转到我的计算机挂载,单击我想查看的分区。将显示Linux分区的uuid编号。

在Linux CD引导后,您还可以通过运行Linux Disk Utility来查看磁盘uuid。


什么是“我的计算机支架”?什么叫“ Linux磁盘实用程序”,听起来像gnome-disk-utility aka磁盘?
Xen2050
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.