Wie ändere ich die UUID des Dateisystems (2 gleiche UUID)?

26

Ich habe ein Fedora-Gastbetriebssystem in VMware. Ich möchte die /bootPartition erweitern , füge also dieser VM ein weiteres virtuelles Laufwerk hinzu und versuche, das Laufwerk zu klonen.

Nach dem dd if=/dev/sda1 of=/dev/sdb1, blkidBericht , dass / dev / sda1 und / dev / sdb1 haben die gleiche UUID / GUID.

Es ist seltsam, dass es im Universum zwei gleiche UUIDs gibt. Wie kann man eine davon in einen anderen UUID-Wert ändern?


Update 25.01.2017

Betreff geändert, UUID bedeutet hier Dateisystem-UUID, nicht Partitions-UUID.

Da es sich um eine Dateisystem-UUID handelt, sind dateisystemspezifische Utils erforderlich, um die UUID zu ändern, oder verwenden Sie Hexeditor, um Rohdaten auf der Festplatte zu ändern ( GEFÄHRLICH, nicht empfohlen, wenn Sie nicht wissen, was Sie tun ).

LiuYan 刘 刘
quelle
10
Es ist überhaupt nicht komisch. Wenn Sie eine Partition mit dd klonen, hat der Klon natürlich dieselbe UUID wie das Original. Die UUID besteht nur aus Metadaten der Partition - keine inhärente Eigenschaft einer physischen Festplatte.
Andrew Medico
Vielen Dank Andrew, ich dachte, UUID ist ein berechneter Wert, bevor eine neue Partition erstellt wurde. Jetzt weiß ich, dass es sich nur um Metadaten handelt.

Antworten:

27

Um eine zufällige neue UUID zu generieren, können Sie Folgendes verwenden:

$ uuidgen

Die tatsächliche Änderung der UUID hängt vom Dateisystem ab.

Angenommen, das Dateisystem einer anderen Familie

# tune2fs -U <output of uuidgen> /dev/sdb1

Oder wenn Sie sicher sind, dass uuidgen funktioniert:

# tune2fs -U $(uuidgen) /dev/sdb1

Angenommen, btrfs-Dateisystem

# btrfstune -U $(uuidgen) /dev/sdb1

Die UUID wird im Superblock gespeichert, sodass eine byteweise Kopie des Dateisystems dieselbe UUID hat.

Andy
quelle
14
Andy, du brauchst nicht mal den Befehl uuidgen: "tune2fs -U random / dev / sdb1" sollte gut funktionieren
grzuy
Wie läuft es auf FAT?
CMCDragonkai
@ CMCDragonkai, siehe meine Antwort.
LiuYan 刘 研
13

Verwenden:

tune2fs -U random /dev/sdb1

wenn es sich um ein ext- Dateisystem handelt, oder

xfs_admin -U generate /dev/sdb1

Wenn es sich um ein XFS- Dateisystem handelt.


Der Grund, warum die zweite Partition dieselbe UUID hat, ist, dass ddnur Daten von einer Datei in eine andere kopiert werden ( dd if=/dev/sda1 of=/dev/sdb1= cat /dev/sda1 > /dev/sdb1). ddSie wissen nicht, was eine Partition ist oder wie sie eine UUID generieren soll, und haben einfach alle Daten wie sie sind kopiert, einschließlich der UUID, die im Superblock des Dateisystems am Anfang der Partition gespeichert ist.


Apropos,
Ich denke auch, dass UUID (Universally Unique IDentifier) ​​ein seltsamer Name ist. Es sollte PGUID (möglicherweise global eindeutiger IDentifier) ​​oder besser nur ARLN (eine relativ große Zahl) heißen.

Zaz
quelle
Ich habe eine meiner Partitionen auf / dev / sda6 gesichert. Ich erhalte die folgende Fehlermeldung: xfs_admin -U generate / dev / sda6 FEHLER: Das Dateisystem enthält wertvolle Metadatenänderungen in einem Protokoll, die erneut abgespielt werden müssen. Hängen Sie das Dateisystem ein, um das Protokoll erneut abzuspielen, und heben Sie die Bereitstellung auf, bevor Sie xfs_admin erneut ausführen. Wenn Sie das Dateisystem nicht bereitstellen können, verwenden Sie die Option xfs_repair -L, um das Protokoll zu zerstören und eine Reparatur zu versuchen. Beachten Sie, dass das Löschen des Protokolls zu Beschädigungen führen kann. Versuchen Sie zuvor, das Dateisystem bereitzustellen.
Prügel
+1 für die schmutzige schmutzige Lüge, die UUID ist ... Darf ich auch vorschlagen, UNUID für "Leider nicht eindeutige ID"
Foon
Nun, ich würde Globally Unique IDentifier (GUID) vorschlagen - "Global" wie "allgemein" oder "allgemein". Oh warte ... ist das nicht eigentlich der ursprüngliche Name? ...
Der Quark
10

Neben ext2 / ext3 / ex4 und xfs können Sie auch die UUID des folgenden Dateisystems oder Blockgeräts ändern.

Wechsel

swaplabel -U $NEW_UUID

Software-RAID (MD-RAID)

Bei MD-RAID müssen Sie zuerst das RAID stoppen und dann die UUID beim Neuzusammenbau aktualisieren. Wenn Ihr RAID also gemountet ist, /müssen Sie die UUID im Offline-Modus aktualisieren. Verwenden Sie dazu eine Live-CD.

  1. mdadm --stop $RAID_DEVICE
  2. mdadm --assemble $RAID_DEVICE --update=uuid --uuid=$NEW_UUID $MEMBER_DEVICES...

Beispiel:

  1. mdadm --stop /dev/md127
  2. mdadm --assemble /dev/md127 --update=uuid --uuid=2A1D2A1D-2A1D-2A1D-2A1D-2A1D2A1D2A1D /dev/sda2 /dev/sdb2

Nach der Aktualisierung der UUID müssen Sie möglicherweise grub.cfg( rd.md.uuid=$NEW_UUIDin der linux/linuxefi/linux16Befehlszeile) und / oder fstabund / oder mdadm.confund / oder aktualisierenupdate-initramfs (Debian-Familie) und / oder dracut --force(Red Hat-Familie) damit Sie das nächste Mal erfolgreich booten können.

LUKS (Cryptsetup)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

Beispiel:

cryptsetup luksUUID --uuid=e0c0e0c0-e0c0-e0c0-e0c0-e0c0e0c0e0c0 ~/encrypted-LUKS.loop

FAT / NTFS / exFAT

Dies ist eine andere Geschichte hier, Derzeit gibt es keine Dienstprogramme zum Ändern der Dateisystem-UUID dieser Dateisysteme(Siehe Reichharts Antwort - das mlabelTool), aber wir können die Rohdaten auf der Festplatte ändern, um dies zu tun.

WARNUNG: Es ist gefährlich, Rohdaten auf der Festplatte zu ändern. Ohne vorsichtigen Betrieb können Daten verloren gehen.

Hier sind detaillierte Schritte zum Ändern von Rohdaten auf der Festplatte mit hexedit.

  1. blkidNotieren Sie sich die UUID des Dateisystems auf Papier oder merken Sie sich diese. Die UUID-Zeichenfolge von FAT / exFAT sieht aus wie 1122-3344, die UUID-Zeichenfolge von NTFS sieht aus wie 1122334455667788.
  2. Öffnen Sie das Partitionsgerät mit hexedit

    hexedit <partition device such as /dev/sda1>

  3. Drücken Sie /, geben Sie die UUID in umgekehrter Reihenfolge ein (falls blkidgemeldet 1234-ABCD, suchen Sie CDAB3412), um die UUID-Daten auf der Festplatte zu durchsuchen.
  4. Wenn die UUID gefunden wurde, ändern Sie sie und drücken Sie F2, um sie zu speichern und zu beenden.
  5. blkid um die UUID zu überprüfen.
  6. Sobald die UUID geändert wurde, müssen Sie möglicherweise ein Update durchführen grub.cfgund / oder fstabdamit Sie das nächste Mal erfolgreich booten können.
  7. Führen Sie fsck <partition device such as /dev/sda1>und sehen ein „Es gibt Unterschiede zwischen Bootsektor und seine Sicherung“ Nachricht. Um das Problem zu lösen, wählen Sie "1) Original in Backup kopieren" und drücken Sie , wenn Sie gefragt werden, ob Sie Änderungen durchführen möchten (j / n)y .
LiuYan 刘 刘
quelle
Was ist mit hfs / hfs + oder hfsplus?
Wlad
1
Sie können nur verwenden, mkfs.exfat -i 01234567 /dev/partitionnamewo der mkfs.exfatBefehl vom Paket exfat-utils unter Fedora Linux installiert wurde . Vielleicht solltest du das zu deiner Antwort hinzufügen, da die Hexedit-Variante ziemlich gefährlich ist!
Erik
@erik Vielen Dank für den Tipp, aber wir suchen nach einer Methode zum Aktualisieren der alten UUID auf die neue UUID in einem vorhandenen Dateisystem oder Blockgerät.
LiuYan 刘 研
6

Verwenden Sie für XFS: xfs_admin -U <uuid> <device>

Verwenden xfs_admin -u <device>Sie diese Option, um eine UUID anzuzeigen. In einem anderen Beitrag zu U & L wurde auf den blkidBefehl zum Anzeigen aller oder einiger UUIDs auf dem System hingewiesen .

vimmar
quelle
2

BTRFS

sudo btrfstune -u /dev/sdaX

sudo btrfstune -U 0de6bd81-7013-49a8-bdc5-d832ed209d2c /dev/sdaX

Das Ausführen btrfsckwird empfohlen, da das Ändern der UUID in BTRFS keine atomare Operation ist.

Avio
quelle
1

Teilantwort für VFAT

Für ext * - und xfs-Dateisysteme gibt es bereits gute Antworten. Aber für VFAT empfehle ich dringend, mlabel des mtools-Pakets zu verwenden. Die Verwendung von Hex-Editoren ist GEFÄHRLICH.

Verwenden Sie so etwas, um eine neue UUID zu erstellen:

echo 'drive d: file="/dev/sdb3" exclusive' >>/etc/mtools.conf
mlabel -n d:
reichhart
quelle
Wenn es Ihnen nichts ausmacht, den exklusiven Zugriff manuell zu überprüfen (wie bei allen anderen hier beschriebenen Befehlen), können Sie dies auch als einzelnen Befehl mlabel -n -i /dev/sdb3 ::
ausführen:
0

Unter Fedora 27 habe ich festgestellt, dass die Reihenfolge der Argumente eine entscheidende Rolle spielt ... Sie müssen das Gerät zuerst schreiben, sonst wird die UUID nicht geändert. Beispielsweise

tune2fs /dev/sdb1 -U random
Erich Küster
quelle
1
Das scheint wie ein ungewöhnliches Verhalten, zumindest angesichts der oneline Manpage ‚s Beschreibung zeigt , -Ubevor der device.
Jeff Schaller
0

So ändern Sie die UUID / s der duplizierten Festplattenpartition mit dem Befehl dd - Verwenden Sie GParted.

Wählen Sie in der GParted-Benutzeroberfläche Laufwerk aus, Partition auswählen und Partition aushängen. Wählen Sie im Ordner "Partition" die Option "NEW UUID" (Neue UUID), und wiederholen Sie den Vorgang, bis alle doppelten Partitions-UUIDs des Festplattenlaufwerks zum Ersetzen markiert sind. Ersetzen Sie bei bootfähigen Datenträgern nicht die UEFI-Partitions-UUID.

Überprüfen Sie den ausgewählten Laufwerksbuchstaben und die ausgewählten Partitionen. - Alles in Ordnung? ...

Klicken Sie in der GParted-Benutzeroberfläche auf das Symbol "Alle Vorgänge anwenden".
Bearbeiten Sie bei bootfähigen Datenträgern die UUID der Datei / etc / fstab = string / s und den Mount-Punkt / die Mount-Punkte:

Eromana
quelle