Linux: Wie kann ich alle UUIDs für alle verfügbaren Festplatten auf meinem System anzeigen?


154

Meine /etc/fstabenthält Folgendes:

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

Auf diesem System befinden sich mehrere andere Datenträger, und nicht alle Datenträger werden an der richtigen Position bereitgestellt (z. B. werden / dev / sda1 und / dev / sdb1 manchmal umgekehrt).

Wie kann ich die UUIDs für alle Festplatten in meinem System anzeigen? Kann ich die UUID für die dritte Festplatte auf diesem System sehen?


@setzamora Antwort ist besser. Bitte ändern Sie die akzeptierte Antwort.
nslntmnx

Antworten:


135

Es /dev/disk/by-uuidgibt Symlinks, die die UUID jedes Laufwerks mit seinem Eintrag in verknüpfen /dev(z. B. /dev/sda1).


3
Es ist nicht lesbar, wenn LVM-Partitionen.
Grzegorz Wierzowiecki

1
LVM verwendet in seiner Struktur bereits lange UUID-ähnliche Bezeichner (obwohl sie unterschiedlich dargestellt werden). Ich denke, der einzige Grund für die Verwendung von Dateisystem-UUIDs mit LVM wäre eine einheitliche Schnittstelle für irgendeine Art von Automatisierung, da LVM die Zuordnung von LVs zu benutzerfreundlichen Namen bereits für Sie vornimmt.
telcoM

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

159

Es gibt ein Tool namens blkid(benutze es als root oder mit sudo),

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

Sie können diesen Link für weitere Informationen überprüfen


12
Nur ein kleiner Kommentar: Sieht so aus, als ob es diskausreicht, Mitglied einer Gruppe zu sein, um zu rennen blkid. Es sind keine vollständigen Superuser-Berechtigungen erforderlich.
Arielf

10
Wenn Sie nur die UUID möchten (wie zum Parsen in einem Skript), können Sie dies tun blkid /dev/sda1 -s UUID -o value.
Jack O'Connor

3
Schneller Kommentar hier: In meiner Distribution (Debian 8) ergibt dies sowohl UUID als auch "PARTUUID", was ziemlich verwirrend ist. Ich habe {lsblk} -Befehle verwendet, die nur einen Wert angeben.
Takumar

2
Dies spart sehr viel Zeit, obwohl ich es vorziehen würde, blkid /dev/sd*alle Laufwerke aufzulisten. Die Informationen, die ausspucken, sind im Allgemeinen mehr als ausreichend, um das benötigte Laufwerk zu finden. :)
ZaLiTHkA

2
PARTUUID für GPT-partitionierte Festplatten ist die GPT-UUID für die Partition, nicht für das Dateisystem darin. Kann nützlich sein, wenn noch kein Dateisystem erstellt wurde. Auf einer MBR-partitionierten Festplatte ist PARTUUID keine echte UUID, sondern einfach eine Windows-Festplattensignatur aus MBR + Bindestrich + Partitionsnummer.
telcoM

31

Der beste Befehl ist lsblk -f. Es listet alle Geräte und Partitionen auf, wie sie gemountet sind (falls überhaupt) und die Baumstruktur der Geräte, wenn LVM, crypto_LUKS oder mehrere Volume-Gruppen auf demselben Laufwerk verwendet werden.


10

Das funktioniert bei mir:

ls -la /dev/disk/by-uuid

Wenn Sie überprüfen möchten, um welchen Partitionstyp es sich handelt, verwenden Sie:

df -Th

und es wird Ihnen zeigen, ob Sie ext3 oder ext2 haben. Heute hat es mir geholfen, weil es eine formatierte ext2-Partition gab und ich dachte, es wäre ext3, was dazu führte, dass der Mount fehlschlug.


Du könntest es immer versuchen mount -t auto /dev/sda1 /media/sda1.
ott--

8

Um nur das UUIDeines bestimmten Festplattengeräts abzurufen (zum Beispiel, um in einem Skript verwendet zu werden), können Sie Folgendes verwenden:

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

Wo /dev/sdXYist der Name des Geräts?


6
lsblk -o +uuid,name

Sie können alle Ausgaben sehen, die zu -o( --output) hinzugefügt werden können

lsblk --help

Auch das wird den Job machen

# blkid

Wird namestandardmäßig nicht gedruckt?
don_crissti

es ist. Fügte es nur zu Bildungszwecken hinzu (füge das Komma hinzu, um die gewünschten Felder zu trennen)
Nico Rodsevich

2

Die vorherigen Antworten funktionieren nicht für mehrere Geräte oder für Geräte mit identischen UUIDs.

Versuche dies:

sudo blkid /dev/sd*

1
Ja wirklich ? Du meinst, die am häufigsten gewählte Antwort funktioniert nicht?
don_crissti

Eine universell eindeutige Kennung (UUID) sollte immer eindeutig sein. Der gesamte Zweck einer UUID besteht darin, universell eindeutig zu sein. Wenn nicht, liegt ein Problem vor. Ich habe doppelte UUIDs in geklonten VMs gesehen, zumindest für Netzwerkgeräte.
Stefan Lasiewski

5
Wenn Sie eine Partition mit dem ddBefehl klonen, hat die Kopie dieselbe UUID, und ja, das ist ein Problem. Die anderen Antworten hier würden das nicht zeigen.
Kevin

1

Mit der folgenden Befehlszeile können Sie die UUID und die Zuordnung zu Partitionen sehen.

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

Warum können wir sehen , die UUID sda
Honghe.Wu

Pro Partition gibt es eine UUID für ein Dateisystem. Auf SDA habe ich 4 Partitionen, also hatte ich 4 UUID. wiki.debian.org/Part-UUID
Nicolas Guérinet

1

Ich habe das gleiche Problem wie Sie: Umbenennen /dev/sd**nach einem Neustart durch Kernel :

Natürlich werden alle meine automatischen Einhängepunkte /etc/fstabvon LABEL oder von UUID referenziert, daher gibt es im Grunde kein Problem dafür. Und alle obigen Befehle, blkid oder lsblk, geben diese Art von Informationen.

Aber das Problem beginnt wie in meinem Fall, wenn Sie die Partition im RAW-Modus verwenden, und zwar aus der Sicht des aktuell gebooteten Systems: Zum Beispiel: Die Partition wird als Raw-Gerät verwendet, um eine virtuelle Festplatte für VirtualBox zu erstellen (so der Verweis auf diese Partition ist so etwas wie: /dev/sdf3) oder die Partition als raw Device verwendet wird , eine LUN für iSCSI zu machen (so der Hinweis auf diese Partition ist so etwas wie: /dev/sdc6)

Also müssen Sie jetzt beim Booten, zum Beispiel in rc.local, auf zuverlässige Weise herausfinden, auf welchem /dev/sdXXGerät sich Ihre dedizierte RAW-Partition befindet, und eine Datei anpassen:

BEISPIEL 1

Die VirtualBox-Festplatte * .vmk-Beschreibung dieser Raw-Festplatte, im Teil ungefähr so:

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

Starten Sie anschließend den VirtualBox-Dienst neu

BEISPIEL 2

In der Konfiguration tgtd wurde zum /dev/sdd6Zeitpunkt der Erstellung ein target: target0 zugeordnet . Nach dem Neustart erhalten Sie die gleiche Partition umbenannt /deb/sdc6 Dies geschieht mit einem Wechseldatenträger, USB oder eSATA! Wie findet man das neue Gerät automatisch? Wieder in /etc/rc.d/rc.local

In diesem Fall benötigen wir also eine zuverlässige Methode, um den neuen Gerätenamen zu ermitteln. Die GPT-Partition bietet eine eindeutige GUID für jede GPT-Partition, die in einer GPT-Tabelle geschrieben ist.

gdisk stellt diese Informationen nicht im Listenmodus zur Verfügung, sondern nur im interaktiven Modus mit: i Befehl. Zum Glück macht es blkid!

Sie müssen also ein Shell-Skript schreiben, um alle Ihre Festplatten /dev/sdXXzu durchsuchen, dh das Gerät , das der GUID zugeordnet ist, die beim Erstellen der Partition festgestellt wurde.

So etwas wie 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

und benutze dann /dev/shm/blkdevice, in deinem rc.local Skript.


0

Um die UUID einer Festplattenpartition zu sehen, starte ich das System einfach mit einer Linux-CD und gehe zu meinem Computer, klicke auf die Partition, die ich sehen möchte. Die UUID-Nummer der Linux-Partition wird angezeigt.

Sie können die Festplatten-UUID auch anzeigen, indem Sie das Linux-Festplatten-Dienstprogramm nach dem Start der Linux-CD ausführen.


Was ist "meine Computerhalterung"? Und was ist "Linux Disk Utility", hört sich an wie "gnome-disk-utility aka Disks"?
Xen2050
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.