Come cambiare l'UUID del filesystem (2 stesso UUID)?


26

Ho un SO guest fedora in VMware. Voglio espandere la /bootpartizione, quindi aggiungo un altro disco virtuale a questa VM e provo a clonare il disco.

Dopo dd if=/dev/sda1 of=/dev/sdb1, blkidsegnala che / dev / sda1 e / dev / sdb1 hanno lo stesso UUID / GUID.

È strano che ci siano 2 UUID uguali nell'universo, come cambiarne uno in un altro valore UUID?


Aggiornamento 25/01/2017

Oggetto modificato, UUID qui significa UUID del filesystem, non UUID di partizione.

Dal momento che è l'UUID del filesystem, sono necessari programmi di utilità specifici del filesystem per cambiare l'UUID o usare hexeditor per modificare i dati grezzi sul disco ( PERICOLOSO, sconsigliato se non sai cosa stai facendo ).


10
Non è affatto strano. Quando cloni una partizione con dd, ovviamente il clone avrà lo stesso UUID dell'originale. L'UUID è solo metadati della partizione, non alcune proprietà intrinseche di un disco fisico.
Andrew Medico,

Grazie Andrew, pensavo che UUID fosse un valore calcolato prima di creare una nuova partizione. Ora so che è solo una questione di metadati.

Risposte:


28

Per generare un nuovo UUID casuale, è possibile utilizzare:

$ uuidgen

Per cambiare effettivamente l'UUID dipende dal file system.

Supponendo un filesystem della famiglia ext

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

O se sei sicuro che uuidgen funzionerà:

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

Supponendo il filesystem btrfs

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

L'UUID è memorizzato nel superblocco, quindi una copia byte per byte del filesystem avrà lo stesso UUID.


14
Andy, non hai nemmeno bisogno del comando uuidgen: "tune2fs -U random / dev / sdb1" dovrebbe funzionare bene
grzuy

Come eseguirlo su FAT?
CMCDragonkai,

@CMCDragonkai, vedi la mia risposta.
LiuYan 刘 研

13

Uso:

tune2fs -U random /dev/sdb1

se è un filesystem ext , o

xfs_admin -U generate /dev/sdb1

se è un filesystem xfs .


Il motivo per cui la seconda partizione ha lo stesso UUID è perché ddcopia semplicemente i dati da un file all'altro ( dd if=/dev/sda1 of=/dev/sdb1= cat /dev/sda1 > /dev/sdb1); ddnon sa cosa sia una partizione o come generare un UUID, quindi ha copiato tutti i dati così come sono, incluso l'UUID, che è memorizzato nel superblocco del file system vicino all'inizio della partizione.


A proposito,
penso anche che UUID (Universally Unique IDentifier) ​​sia un nome strano. Dovrebbe essere chiamato PGUID (possibilmente identificatore univoco globale), o meglio, solo ARLN (un numero ragionevolmente grande).


Ho eseguito il backup di una delle mie partizioni su / dev / sda6. Ottengo il seguente errore: xfs_admin -U generate / dev / sda6 ERRORE: il filesystem ha preziose modifiche ai metadati in un registro che deve essere riprodotto. Montare il filesystem per riprodurre il registro e smontarlo prima di rieseguire xfs_admin. Se non si è in grado di montare il filesystem, utilizzare l'opzione xfs_repair -L per distruggere il registro e tentare una riparazione. Notare che la distruzione del registro può causare il danneggiamento: provare a montare un filesystem prima di farlo.
Gudge,

+1 per la sporca bugia sporca che è UUID ... posso anche suggerire UNUID per "Purtroppo, non univoco ID"
Foon

Bene, suggerirei IDentificatore univoco globale (GUID) - "Globalmente" come in "generalmente" o "in generale". Oh aspetta ... non è questo il suo nome originale? ...
The Quark,

11

Oltre a ext2 / ext3 / ex4 e xfs, puoi anche cambiare l'UUID del seguente filesystem o dispositivo a blocchi.

Scambiare

swaplabel -U $NEW_UUID

Software RAID (md raid)

Per MD RAID, è necessario prima arrestare il RAID, quindi aggiornare l'UUID durante il riassemblaggio. Quindi se il tuo RAID è montato su /, devi aggiornare l'UUID in modalità offline - usa un CD live per farlo.

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

Esempio:

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

Dopo aver aggiornato l'UUID, potrebbe essere necessario aggiornare grub.cfg( rd.md.uuid=$NEW_UUIDnella linux/linuxefi/linux16riga di comando) e / o fstabe / o mdadm.confe update-initramfs(famiglia Debian) e / o dracut --force(famiglia Red Hat) in modo da poter avviare correttamente la prossima volta.

LUKS (cryptsetup)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

Esempio:

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

FAT / NTFS / exFAT

Questa è un'altra storia qui, al momento non ci sono utilità per modificare l'UUID del filesystem di questi filesystem(Vedi la risposta di reichhart - lo mlabelstrumento), ma possiamo modificare i dati grezzi sul disco per farlo.

ATTENZIONE, è pericoloso modificare i dati grezzi sul disco e potrebbe perdere i dati senza un attento funzionamento.

Ecco i passaggi dettagliati per modificare i dati grezzi sul disco utilizzando hexedit.

  1. blkid, annotare l'UUID del filesystem su carta o ricordarlo. Assomiglia alla stringa UUID di FAT / exFAT, assomiglia alla 1122-3344stringa UUID di NTFS 1122334455667788.
  2. Apri il dispositivo di partizione usando hexedit

    hexedit <partition device such as /dev/sda1>

  3. Premere /, immettere l'UUID in ordine inverso (se blkidriportato 1234-ABCD, quindi cercare CDAB3412) per cercare i dati UUID sul disco.
  4. Una volta individuato l'UUID, modificali, premi F2per salvare ed uscire.
  5. blkid per verificare l'UUID.
  6. Una volta modificato UUID, potrebbe essere necessario aggiornare grub.cfge / o in fstabmodo da poter avviare correttamente la volta successiva.
  7. Eseguire fsck <partition device such as /dev/sda1>e visualizzare un messaggio "Esistono differenze tra il settore di avvio e il relativo backup" . Per risolverlo, seleziona "1) Copia l'originale nel backup" e se ti viene chiesto "Esegui modifiche? (Y / n)" premi y.

Che dire di hfs / hfs + o hfsplus?
Wlad,

1
Puoi semplicemente usare mkfs.exfat -i 01234567 /dev/partitionnamedove è mkfs.exfatstato installato il comando dal pacchetto exfat-utils su Fedora Linux. Forse dovresti aggiungerlo alla tua risposta, poiché la variante hexedit è abbastanza pericolosa!
erik,

@erik Grazie per il suggerimento, ma stiamo cercando un metodo per aggiornare il vecchio UUID al nuovo UUID sul file system esistente o sul dispositivo di blocco.
LiuYan 刘 研

Ehi @LiuYan 刘 研 per NTFS c'è lo ntfslabelstrumento. askubuntu.com/questions/642591/…
aaditya1234

6

Per XFS, utilizzare: xfs_admin -U <uuid> <device>

Utilizzare xfs_admin -u <device>per visualizzare un UUID (notare l'opzione minuscola per visualizzare, rispetto all'opzione maiuscola da impostare). Un altro post su U&L ha sottolineato il blkidcomando per visualizzare tutti o alcuni degli UUID sul sistema.


2

Risposta parziale per VFAT

Per i file system ext * e xfs ci sono già buone risposte. Ma per VFAT consiglio vivamente di usare mlabel del pacchetto mtools. L'uso degli editor esadecimali è PERICOLOSO.

Usa qualcosa del genere per creare un nuovo UUID:

echo 'drive d: file="/dev/sdb3" exclusive' >>/etc/mtools.conf
mlabel -n d:

Se non ti dispiace controllare manualmente l'accesso esclusivo (come con tutti gli altri comandi qui descritti), puoi farlo come un singolo comando comemlabel -n -i /dev/sdb3 ::
telcoM

2

BTRFS

sudo btrfstune -u /dev/sdaX

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

btrfsckSi consiglia l' esecuzione perché la modifica dell'UUID in BTRFS non è un'operazione atomica.


0

Sotto Fedora 27 ho scoperto che l'ordine degli argomenti gioca un ruolo cruciale ... Devi prima scrivere il dispositivo, altrimenti l'UUID non viene modificato. Per esempio

tune2fs /dev/sdb1 -U random

1
Sembra un comportamento insolito, almeno vista la descrizione della pagina man on line mostrata -Uprima del device.
Jeff Schaller

0

Per modificare il comando dd risultante UUID / i della partizione del disco duplicata: utilizzare GParted.

Dall'interfaccia utente GParted, selezionare unità, selezionare partizione, smontare partizione. Dalla 'Cartella delle partizioni' scegliere 'NUOVO UUID', ripetere fino a quando tutti gli uuid / i di partizione duplicati dell'unità dd sono contrassegnati per la sostituzione. Per i dischi di avvio, non sostituire la partizione UEFI uuid.

Rivedi la lettera di unità selezionata e le partizioni - Tutto OK? ...

Fai clic sull'icona "Applica tutte le operazioni" nell'interfaccia utente GParted.
Per i dischi di avvio, modifica il file / etc / fstab UUID = stringa / se punto di montaggio / i .:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.