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.