¿Cómo cambiar el UUID del sistema de archivos (2 mismos UUID)?

26

Tengo un sistema operativo invitado fedora en VMware. Quiero expandir la /bootpartición, así que agrego otro disco virtual a esta VM e intento clonar el disco.

Después dd if=/dev/sda1 of=/dev/sdb1, blkidinforme que / dev / sda1 y / dev / sdb1 tienen el mismo UUID / GUID.

Es extraño que haya 2 mismos UUID en el universo, ¿cómo cambiar uno de ellos a otro valor de UUID?


Actualizar 2017-01-25

Sujeto cambiado, UUID aquí significa sistema de archivos UUID, no partición UUID.

Dado que es UUID del sistema de archivos, se necesitan utilidades específicas del sistema de archivos para cambiar el UUID, o usar el editor hexadecimal para modificar los datos sin procesar en el disco ( PELIGROSO, no recomendado a menos que sepa lo que está haciendo ).

LiuYan 刘 研
fuente
10
No es raro en absoluto. Cuando clonas una partición con dd, por supuesto, el clon tendrá el mismo UUID que el original. El UUID son solo metadatos de la partición, no una propiedad inherente de un disco físico.
Andrew Medico
Gracias Andrew, pensé que UUID es un valor calculado antes cuando se creó una nueva partición. Ahora sé que es solo una cuestión de metadatos.

Respuestas:

28

Para generar un nuevo UUID aleatorio, uno puede usar:

$ uuidgen

Para cambiar realmente el UUID depende del sistema de archivos.

Asumiendo el sistema de archivos ext-family

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

O si estás seguro de que uuidgen va a funcionar:

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

Asumiendo el sistema de archivos btrfs

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

El UUID se almacena en el superbloque, por lo que una copia byte por byte del sistema de archivos tendrá el mismo UUID.

Andy
fuente
14
Andy, ni siquiera necesitas el comando uuidgen: "tune2fs -U random / dev / sdb1" debería funcionar bien
grzuy
¿Cómo ejecutarlo en FAT?
CMCDragonkai
@ CMCDragonkai, mira mi respuesta.
LiuYan 刘 研
13

Utilizar:

tune2fs -U random /dev/sdb1

si es un sistema de archivos ext , o

xfs_admin -U generate /dev/sdb1

si es un sistema de archivos xfs .


La razón por la que la segunda partición tiene el mismo UUID es porque ddsolo copia datos de un archivo a otro ( dd if=/dev/sda1 of=/dev/sdb1= cat /dev/sda1 > /dev/sdb1); ddno sabe qué es una partición o cómo generar un UUID, por lo que solo copió todos los datos tal como están, incluido el UUID, que se almacena en el superbloque del sistema de archivos cerca del inicio de la partición.


Por cierto,
también creo que UUID (Universalmente IDentifier único) es un nombre extraño. Debería llamarse PGUID (posiblemente un identificador globalmente único), o incluso mejor, simplemente ARLN (un número razonablemente grande).

Zaz
fuente
He hecho una copia de seguridad de mis particiones en / dev / sda6. Me sale el siguiente error: xfs_admin -U generate / dev / sda6 ERROR: El sistema de archivos tiene valiosos cambios de metadatos en un registro que debe reproducirse. Monte el sistema de archivos para reproducir el registro y desmóntelo antes de volver a ejecutar xfs_admin. Si no puede montar el sistema de archivos, utilice la opción xfs_repair -L para destruir el registro e intentar una reparación. Tenga en cuenta que la destrucción del registro puede causar daños; intente montar el sistema de archivos antes de hacerlo.
Gudge
+1 por la mentira sucia y sucia que es UUID ... ¿puedo sugerir también UNUID para "Desafortunadamente, no ID única"
Foon
Bueno, sugeriría Globally Unique IDentifier (GUID): "Globalmente" como en "generalmente" o "en general". Oh, espera ... ¿no es este realmente su nombre original? ...
The Quark
11

Además de ext2 / ext3 / ex4 y xfs, también puede cambiar el UUID del siguiente sistema de archivos o dispositivo de bloqueo.

Intercambiar

swaplabel -U $NEW_UUID

RAID de software (incursión de md)

Para MD RAID, primero debe detener el RAID, luego actualizar el UUID al volver a ensamblar. Entonces, si su RAID está montado /, necesita actualizar UUID en modo fuera de línea; use un CD en vivo para hacerlo.

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

Ejemplo:

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

Después de actualizar UUID, es posible que deba actualizar grub.cfg( rd.md.uuid=$NEW_UUIDen la linux/linuxefi/linux16línea de comando) y / o fstaby / o mdadm.confy / o update-initramfs(familia Debian) y / o dracut --force(familia Red Hat) para que pueda arrancar con éxito la próxima vez.

LUKS (cryptsetup)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

Ejemplo:

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

FAT / NTFS / exFAT

Esta es otra historia aquí, actualmente no hay utilidades para modificar el UUID del sistema de archivos de estos sistemas de archivos(Ver la respuesta del reichhart : la mlabelherramienta), pero podemos modificar los datos en bruto en el disco para hacerlo.

ADVERTENCIA, es peligroso modificar datos sin procesar en el disco y podría perder datos sin una operación cuidadosa.

Aquí se detallan los pasos para modificar los datos sin procesar en el disco utilizando hexedit.

  1. blkid, escriba el UUID del sistema de archivos en papel, o recuérdelo. La cadena UUID de FAT / exFAT se parece a la 1122-3344cadena UUID de NTFS 1122334455667788.
  2. Dispositivo de partición abierta usando hexedit

    hexedit <partition device such as /dev/sda1>

  3. Presione /, ingrese el UUID en orden inverso (si se blkidinforma 1234-ABCD, luego busque CDAB3412) para buscar los datos del UUID en el disco.
  4. Una vez que se encuentra UUID, cámbielos, presione F2para guardar y salir.
  5. blkid para verificar el UUID.
  6. Una vez que se modifica UUID, es posible que deba actualizar grub.cfgy / o fstabpara que pueda arrancar con éxito la próxima vez.
  7. Ejecute fsck <partition device such as /dev/sda1>y vea el mensaje "Hay diferencias entre el sector de arranque y su copia de seguridad" . Para resolverlo, seleccione "1) Copiar original en copia de seguridad" , y si se le pregunta "¿Realizar cambios? (Y / n)" , presione y.
LiuYan 刘 研
fuente
¿Qué pasa con hfs / hfs + o hfsplus?
Wlad
1
Puede usar mkfs.exfat -i 01234567 /dev/partitionnamedonde el mkfs.exfatcomando fue instalado por el paquete exfat-utils en Fedora Linux. ¡Tal vez deberías agregar eso a tu respuesta, ya que la variante hexedit es bastante peligrosa!
erik
@erik Gracias por el consejo, pero estamos buscando un método para actualizar el UUID antiguo al nuevo UUID en el sistema de archivos existente o en el dispositivo de bloqueo.
LiuYan 刘 研
Hola @LiuYan 刘 研 para NTFS hay una ntfslabelherramienta. askubuntu.com/questions/642591/…
aaditya1234
6

Para XFS, use: xfs_admin -U <uuid> <device>

Úselo xfs_admin -u <device>para ver un UUID (observe la opción de minúsculas para ver, frente a la opción de mayúsculas para configurar). Otra publicación en U&L señaló el blkidcomando para ver todos o algunos de los UUID en el sistema.

vimmar
fuente
2

Respuesta parcial para VFAT

Para los sistemas de archivos ext * y xfs ya hay buenas respuestas. Pero para VFAT, recomiendo usar mlabel del paquete mtools. Usar editores hexadecimales es PELIGROSO.

Use algo como esto para crear un nuevo UUID:

echo 'drive d: file="/dev/sdb3" exclusive' >>/etc/mtools.conf
mlabel -n d:
Reichhart
fuente
Si no le importa verificar el acceso exclusivo manualmente (como con todos los otros comandos descritos aquí), puede hacerlo como un solo comando comomlabel -n -i /dev/sdb3 ::
telcoM el
2

BTRFS

sudo btrfstune -u /dev/sdaX

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

btrfsckSe recomienda ejecutar porque cambiar UUID en BTRFS no es una operación atómica.

Avio
fuente
1

Para NTFS, consulte este hilo para más detalles.

Resumen:

sudo ntfslabel --new-half-serial /dev/sdXN
aaditya1234
fuente
0

Bajo Fedora 27, descubrí que el orden de los argumentos juega un papel crucial ... Primero debe escribir el dispositivo; de lo contrario, el UUID no cambia. Por ejemplo

tune2fs /dev/sdb1 -U random
Erich Küster
fuente
1
Parece un comportamiento inusual, al menos dada la descripción de la página del manual en línea que se muestra -Uantes del device.
Jeff Schaller
0

Para cambiar el comando dd resultante de particiones de disco duplicadas UUID / s - Use GParted.

Desde la interfaz de usuario GParted, seleccione la unidad, seleccione la partición, desmonte la partición. En la 'Carpeta de partición', elija 'NUEVO UUID', repita hasta que todos los uuid / s de la partición duplicada de la unidad dd estén marcados para su reemplazo. Para discos de arranque, no reemplace el uuid de partición UEFI.

Revise la letra de unidad seleccionada y la partición / s: ¿todo bien? ...

Haga clic en el icono 'Aplicar todas las operaciones' en la interfaz de usuario de GParted.
Para los discos de arranque, edite el archivo / etc / fstab UUID = string / sy punto de montaje / s .:

eromana
fuente