270

My /etc/fstab contains this:

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

There are several other disks on this system, and not all disks are being mounted to the correct location (For example, /dev/sda1 and /dev/sdb1 are sometimes reversed).

How can I see the UUIDs for all disks on my system? Can I see the UUID for the third disk on this system?

2

12 Answers 12

283

There's a tool called blkid (use it as root or with sudo),

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

you can check this link for more info

10
  • 20
    Just a minor comment: looks like being a member of group disk is sufficient to run blkid; no need for full superuser privileges.
    – arielf
    Commented Dec 14, 2013 at 23:19
  • 22
    If you want only the UUID (like for parsing in a script), you can do blkid /dev/sda1 -s UUID -o value. Commented Jun 20, 2016 at 21:35
  • 4
    Quick comment here : in my distro (Debian 8) this yields UUID as well as "PARTUUID", which is rather confusing. I used {lsblk} commands which gives only one value.
    – Toluene
    Commented Sep 12, 2016 at 11:57
  • 2
    This one saves a great deal of time, though I prefer to do blkid /dev/sd* to list all drives.. The info that spits out is generally more than enough to find the drive you need. :)
    – user235748
    Commented Jul 1, 2017 at 8:04
  • 5
    PARTUUID for GPT-partitioned disks is the GPT UUID for the partition, not for the filesystem in it. Might be useful when a filesystem is not created yet. On a MBR-partitioned disk, PARTUUID is not a real UUID, but simply a Windows Disk Signature from the MBR + a dash + partition number.
    – telcoM
    Commented Jan 28, 2018 at 1:32
240

In /dev/disk/by-uuid there are symlinks mapping each drive's UUID to its entry in /dev (e.g. /dev/sda1)

You can view these with the command ls -lha /dev/disk/by-uuid

5
  • 4
    It's not readable when LVM partitions. Commented Sep 18, 2011 at 21:22
  • 1
    LVM already uses long UUID-like identifiers (although presented differently) in its structure. I think the only reason for using filesystem UUIDs with LVM would be as an unified interface for some sort of automation, as LVM already does the mapping of LVs to human-friendly names for you.
    – telcoM
    Commented Jan 28, 2018 at 1:27
  • Just for reference, the result has changed and will be different from blkid and won't work for booting: i.imgur.com/ocgoi3g.png
    – Torxed
    Commented Jul 8, 2020 at 12:38
  • I often use this approach, especially becuase blkid needs SU privileges. But /dev/disk/by-uuid unfortunately has much less information and it will get you into trouble for some cases. For me this was working with RAID and btrfs volumes as different partitions share a uuid, but there is only one entry for each UUID in the symlinks...
    – Hotsndot
    Commented Feb 2, 2021 at 12:44
  • This does not work on all linux Commented Dec 21, 2021 at 15:29
108

The best command to use is lsblk -f. It will list all the devices and partitions, how they are mounted (if at all) and the tree structure of the devices in the case of using LVM, crypto_LUKS, or multiple volume groups on the same drive.

8
  • 1
    This is the best answer - the most thorough, and a truly one-stop method. Commented Jan 2, 2020 at 22:03
  • An addition: I had to put sudo in front of this, otherwise it was unable to get the UUID of the partition and the column was empty.
    – Mnementh
    Commented Jan 27, 2020 at 9:24
  • 1
    I like this answer best - its a nice output Commented Dec 21, 2021 at 15:30
  • 1
    @Royce Williams: Not quite! It is the best answer for the question, because the filesystem's UUID is asked for (and the output is nice). But it does not give you the GPT partition's PARTUUID. For instance, if you search for the uuid of efibootmgr -v output, you will find it in blkid. (But maybe you get it also out of lsblk some way.)
    – Sarge1060
    Commented Apr 21 at 16:02
  • 1
    You can use lsblk -o NAME,UUID,PARTUUID to get really all information.
    – Sarge1060
    Commented Apr 21 at 16:09
27

To only get the UUID of a specific disk device (for example to be used in a script) you can use:

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

where /dev/sdXY is the name of the device.

2
  • Not sure why this isn't the top comment.
    – fideloper
    Commented Oct 18, 2020 at 2:10
  • @fideloper it can't see logical volumes.
    – RonJohn
    Commented Mar 27, 2023 at 17:06
18
lsblk -o +uuid,name

You can see all the outputs that can be added to the -o (--output) with

lsblk --help

Also this will do the job

# blkid
2
  • Isn't name printed by default ? Commented Jul 20, 2017 at 20:50
  • 1
    it is. Added it just for educational purposes (add the comma to separate the fields you want) Commented Jul 20, 2017 at 22:30
17

This works for me:

ls -la /dev/disk/by-uuid

If you want to check what type the partition is, use:

df -Th

and it will show you if you have ext3 or ext2. Today it helped me because there was a formatted ext2 partition and I thought it was ext3, which was causing the mount to fail.

1
  • You could always try mount -t auto /dev/sda1 /media/sda1.
    – ott--
    Commented Dec 28, 2012 at 21:16
4

The previous answers do not work for multiple devices or for devices with identical UUIDs.

Try this:

sudo blkid /dev/sd*
2
  • A universally unique identifier (UUID) should always be unique. The entire purpose of a UUID is to be a unique, universally. If not, there's a problem. I have seen duplicated UUIDs in cloned VMs, at least for network devices. Commented Sep 14, 2016 at 17:00
  • 7
    If you clone a partition with the dd command the copy will have the same uuid and yes, that is a problem. The other answers here wouldn't show that.
    – Kevin
    Commented Sep 18, 2016 at 9:22
1

With the following command line you can see UUID plus the mapping to partitions.

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
2
  • Why can we see the uuid of sda
    – Honghe.Wu
    Commented Aug 10, 2017 at 13:10
  • There is one UUID for a file system per partition. On sda, i have 4 partitions so, I had 4 UUID. wiki.debian.org/Part-UUID Commented Aug 10, 2017 at 15:02
1

I have the same problem as you: renaming by kernel of /dev/sd** after a reboot:

Of course all my automatic mounting in /etc/fstab are referenced by LABEL or by UUID, so basically there is no problem for that. And all the commands above ,blkid or lsblk, give this kind of information.

But the trouble begins as in my case, when you are using partition in RAW mode, in the currently booted system point-of-view: for example either: the partition is used as raw device, to make a virtual disk for VirtualBox (so the reference to this partition is something like: /dev/sdf3) or the partition is used as raw device, to make a LUN for iSCSI (so the reference to this partition is something like: /dev/sdc6)

So now at boot , for example in rc.local, you have to find in a reliable manner, what is the /dev/sdXX device of your dedicated RAW partition, and adapt some file:

EXAMPLE 1

The VirtualBox disk *.vmk description of this raw disk, in the part something like:

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

and then restart the VirtualBox service

EXAMPLE 2

in tgtd configuration, a target :target0 was associated to /dev/sdd6 at build time. After reboot you get the same partition renamed /deb/sdc6 This happens with a removable disk, USB or eSATA! So how to find the new device automatically ? Again in /etc/rc.d/rc.local

So in this case we need a reliable manner to find what is the new device name. GPT partition offers unique GUID for any GPT partition, written in GPT table.

gdisk does not provide this info with listing mode, but only in interactive mode with: i command. Fortunately, blkid does it!

So you need to write a shell script, to look in all your disks, which is the device /dev/sdXX, associated to the GUID noticed at partition creation time.

Something like, 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

and then use /dev/shm/blkdevice, in your rc.local script.

0

To see the uuid of a hard disk partition I just boot the system up with a Linux CD and goto my computer mount, click on, the partition I want to see. The uuid number of the Linux partition will be displayed.

You can also see disk uuid by running Linux Disk utility after the Linux CD boot up.

1
  • What's "my computer mount"? And what's "Linux Disk utility", sounds like gnome-disk-utility aka Disks?
    – Xen2050
    Commented Nov 30, 2018 at 4:15
0

You need to check /dev/disk/by-partuuid in these cases. there are symlinks mapping each drive's PARTUUID to its entry in /dev/sdb1 etc

0

https://serverfault.com/a/1116758/969454

sudo grep swap /etc/fstab
## Output like:
# swap was on /dev/sda6 during installation
# UUID=34e3f31b-16ec-4c84-8f4d-339f38d04a3b none swap sw 0 0

sudo lsblk -f -l| grep SWAP
## Output like:
sda6 swap 34e3f31b-16ec-4c84-8f4d-339f38d04a3b [SWAP]
1
  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Commented Nov 28, 2022 at 8:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .