Unterschied zwischen UUID von blkid und mdadm?

Unterschied zwischen UUID von blkid und mdadm?

blkidKann jemand den Unterschied zwischen den von und gemeldeten UUIDs erklären mdadm? Auf einem unserer CentOS-Systeme beispielsweise:

[root@server ~]# blkid | grep /dev/md1
/dev/md1: UUID="32cb0a6e-8148-44e9-909d-5b23df045bd1" TYPE="ext4"

[root@server ~]# mdadm --detail /dev/md1 | grep UUID
UUID : f204c558:babf732d:85bd7296:bbfebeea

Warum sind sie unterschiedlich und wie würden wir die von verwendete UUID ändern mdadm?

Ich verstehe, dass wir die UUID für die Partition ändern würden tune2fs(wodurch sich ändern würde, was von zurückgegeben wird blkid), bin mir aber nicht sicher, wie man das ändert, was mdadmverwendet wird.

Antwort1

Der erste meldet die UUID des ext4-Dateisystems auf dem mdBlockgerät. Sie hilft dem System, das Dateisystem unter den im System verfügbaren Dateisystemen eindeutig zu identifizieren. Dies wird in der Struktur des Dateisystems gespeichert, also in den auf dem MD-Gerät gespeicherten Daten.

Die zweite ist die UUID des RAID-Geräts. Sie hilft dem md-Subsystem, dieses bestimmte RAID-Gerät eindeutig zu identifizieren. Insbesondere hilft sie dabei, alle Blockgeräte zu identifizieren, die zum RAID-Array gehören. Sie wird in den Metadaten des Arrays (auf jedem Mitglied) gespeichert. Array-Mitglieder haben auch ihre eigene UUID (im md-System können sie auch Partitions-UUIDs haben, wenn es sich um GPT-Partitionen handelt (die selbst in der GPT-Partitionstabelle gespeichert wären) oder LVM-Volumes...).

blkidist etwas irreführend, da es die ID der auf dem Gerät gespeicherten Struktur zurückgibt (für die Art von Strukturen, die es kennt, wie die meisten Dateisysteme, LVM-Mitglieder und Swap-Geräte). Beachten Sie auch, dass es nicht ungewöhnlich ist, Blockgeräte mit Strukturen mit identischen UUIDs zu haben (z. B. LVM-Snapshots). Und ein Blockgerät kann alles enthalten, auch Dinge, deren Struktur keine UUID enthält.

So könnten Sie beispielsweise ein System mit 3 Laufwerken mit GPT-Partitionierung haben. Diese Laufwerke könnten eineWeltweiter Namedie es eindeutig identifiziert. Nehmen wir an, die 3 Laufwerke sind mit jeweils einer Partition partitioniert ( /dev/sd[abc]1). Jede Partition hat eine GPT-UUID, die in der GPT-Partitionstabelle gespeichert ist.

Wenn diese Partitionen ein MD-RAID5-Array bilden, erhält jede eine MD-UUID als RAID-Mitglied und das Array eine UUID als MD-RAID-Gerät.

Dies /dev/md0kann mit MSDOS- oder GPT-Partitionierung weiter partitioniert werden. Beispielsweise könnten wir eine /dev/md0p1Partition mit einer GPT-UUID haben (gespeichert in der GPT-Partitionstabelle, die in den Daten von /dev/md0 gespeichert ist).

Dies könnte wiederum ein physisches Volume für LVM sein. Als solches erhält es eine PV-UUID. Die Volume-Gruppe hat auch eine VG-UUID.

In dieser Datenträgergruppe würden Sie logische Datenträger erstellen, von denen jeder eine LV-UUID erhält.

Auf einem dieser LVs (z. B. /dev/VG/LV) könnten Sie ein ext4-Dateisystem erstellen. Dieses Dateisystem würde eine ext4-UUID erhalten.

blkid /dev/VG/LVwürde Ihnen die (ext4) UUID dieses Dateisystems liefern. Aber als Partition innerhalb des VG-Volumes würde es auch eine Partitions-UUID erhalten (einige Partitionierungsschemata wie MSDOS/MBR haben keine UUIDs). Diese Volume-Gruppe besteht aus PV-Mitgliedern, die selbst andere Blockgeräte sind. blkid /dev/md0p1würde Ihnen die PV-UUID liefern. Es hat auch eine Partitions-UUID in der GPT-Tabelle auf /dev/md0. /dev/md0selbst besteht aus anderen Blockgeräten. blkid /dev/sda1gibt die UUID des Raid-Mitglieds zurück. Es hat auch eine Partitions-UUID in der GPT-Tabelle auf /dev/sda.

Antwort2

Die verschiedenen UUIDs wurden bereits erklärt. Nicht nur Dateisysteme haben sie. Es gibt UUIDs für verschiedene Dinge: RAID-Arrays, Geräte, Partitionen, LUKS-Container, LVM-PVs ... und schließlich Dateisysteme.

Was mich persönlich ärgert, ist, dass sogar die Formatierung dieser UUIDs unterschiedlich ist.

schwarzes Kind:

# blkid /dev/sda1
/dev/sda1: 
UUID="d8b8b4e5-e47b-2e45-2093-cd36f654020d"
UUID_SUB="3c3e6eac-2139-3f7a-16b7-57280934d88e"
PARTUUID="6a89cedf-69e1-40db-b08c-1c8e45af59f5" 

mdadm:

# mdadm --examine /dev/sda1 | grep UUID
     Array UUID : d8b8b4e5:e47b2e45:2093cd36:f654020d
    Device UUID : 3c3e6eac:21393f7a:16b75728:0934d88e

Wie Sie sehen, handelt es sich um dieselben UUIDs, aber blkiddruckt sie mit Bindestrichen -, während mdadmDoppelpunkte verwendet werden :. Sie erhalten also d8b8b4e5-e47b-2e45-2093-cd36f654020dvs. d8b8b4e5:e47b2e45:2093cd36:f654020d.

Sehr ärgerlich, insbesondere wenn man mit UUIDs in Skripten arbeiten möchte. Es ist nicht offensichtlich, wie man von einer Formatierung in die andere konvertiert.

Antwort3

Die obige blkid-UUID „32cb0a6e-8148-44e9-909d-5b23df045bd1“ ist die richtige. Sie wird vom Betriebssystem verwendet, um das RAID-Array zu finden.

mdadm hat seine eigene „interne“ UUID, die nicht direkt vom Betriebssystem verwendet wird und die Sie in der Datei mdadm.conf verwenden, z. B.:

„ARRAY /dev/md1 Level=raid1 Anzahl Geräte=2 uuid=f204c558:babf732d:85bd7296:bbfebeea“

mdadm sollte nichts UUID nennen, wenn es sich von dem unterscheidet, das blkid und das Betriebssystem erkennen. Vielleicht sollte es mduuid oder etwas anderes heißen, um Verwirrung zu vermeiden.

verwandte Informationen