it-swarm.cn

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

我的/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吗?

177
Stefan Lasiewski

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

155
Michael Mrozek

有一个名为blkid的工具(以root身份使用或与Sudo一起使用),

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

您可以检查 此链接 了解更多信息

186
setzamora

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

46
John Rea

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

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

其中/dev/sdXY是设备的名称。

14
Strahinja Kustudic

这对我有用:

ls -la /dev/disk/by-uuid

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

df -Th

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

11
MIrra
lsblk -o +uuid,name

您可以看到所有可以添加到-o--output)与

lsblk --help

这也可以做

# blkid
7
Nico Rodsevich

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

尝试这个:

Sudo blkid /dev/sd*
2
Kevin

通过以下命令行,您可以看到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
1
Nicolas Guérinet

我遇到了与您相同的问题:重启后按/dev/sd**的内核重命名:

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

但是麻烦就从我的情况开始,当您以RAW模式使用分区时,在当前引导的系统的角度来看:例如,将分区用作原始设备,为VirtualBox创建虚拟磁盘(因此对该分区的引用类似于:/dev/sdf3)或将该分区用作原始设备,以为iSCSI制作LUN(因此对该分区的引用类似于:/dev/sdc6

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

示例1

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

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

然后重新启动VirtualBox服务

示例2

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

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

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

因此,您需要编写一个Shell脚本来查找所有磁盘,即与创建分区时注意到的GUID)相关的设备/dev/sdXX

类似于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

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

1

在这种情况下,您需要检查/ dev/disk/by-partuuid。有符号链接将每个驱动器的PARTUUID映射到/ dev/sdb1等中的条目

0
Sachin Mokashi

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

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

0
man puk tam