Como alterar o UUID do sistema de arquivos (2 mesmo UUID)?

26

Eu tenho um sistema operacional convidado do fedora no VMware. Eu quero expandir a /bootpartição, então adiciono outro disco virtual a esta VM e tento clonar o disco.

Depois dd if=/dev/sda1 of=/dev/sdb1, blkidrelate que / dev / sda1 e / dev / sdb1 têm o mesmo UUID / GUID.

É estranho que existam 2 UUIDs iguais no universo, como mudar um deles para outro valor UUID?


Atualização 2017-01-25

Assunto alterado, UUID aqui significa UUID do sistema de arquivos, não UUID da partição.

Como é UUID do sistema de arquivos, são necessários utilitários específicos do sistema de arquivos para alterar o UUID ou use o hexeditor para modificar dados brutos no disco ( PERIGOSO, não recomendado, a menos que você saiba o que está fazendo ).

LiuYan 刘 研
fonte
10
Não é nada estranho. Quando você clona uma partição com dd, é claro que o clone terá o mesmo UUID que o original. O UUID são apenas metadados da partição - não uma propriedade inerente de um disco físico.
Andrew Medico
Obrigado Andrew, eu pensei que UUID é um valor calculado antes, quando uma nova partição foi criada. Agora eu sei que é apenas uma coisa de metadados.

Respostas:

28

Para gerar um novo UUID aleatório, pode-se usar:

$ uuidgen

Para realmente alterar o UUID, depende do sistema de arquivos.

Supondo que o sistema de arquivos da família ext

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

Ou se você tem certeza de que o uuidgen vai funcionar:

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

Assumindo o sistema de arquivos btrfs

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

O UUID é armazenado no superbloco, portanto, uma cópia byte a byte do sistema de arquivos terá o mesmo UUID.

Andy
fonte
14
Andy, você nem precisa do comando uuidgen: "tune2fs -U random / dev / sdb1" deve funcionar bem
grzuy 21/03/12
Como executá-lo no FAT?
CMCDragonkai
@CMCDragonkai, veja minha resposta.
Liuyan刘研
13

Usar:

tune2fs -U random /dev/sdb1

se for um sistema de arquivos ext , ou

xfs_admin -U generate /dev/sdb1

se é um sistema de arquivos xfs .


A razão pela qual a segunda partição tem o mesmo UUID é porque ddapenas copia os dados de um arquivo para outro ( dd if=/dev/sda1 of=/dev/sdb1= cat /dev/sda1 > /dev/sdb1); ddnão sabe o que é uma partição ou como gerar um UUID, apenas copiou todos os dados como estão, incluindo o UUID, que é armazenado no superbloco do sistema de arquivos próximo ao início da partição.


A propósito,
eu também acho que UUID (Universally Unique IDentifier) ​​é um nome estranho. Deve ser chamado PGUID (possivelmente identificador globalmente exclusivo), ou melhor ainda, apenas ARLN (um número razoavelmente grande).

Zaz
fonte
Eu fiz backup de minhas partições no / dev / sda6. Eu recebo o seguinte erro: xfs_admin -U generate / dev / sda6 ERRO: O sistema de arquivos possui alterações valiosas de metadados em um log que precisa ser reproduzido. Monte o sistema de arquivos para reproduzir o log e desmonte-o antes de executar novamente o xfs_admin. Se você não conseguir montar o sistema de arquivos, use a opção xfs_repair -L para destruir o log e tentar um reparo. Observe que destruir o log pode causar corrupção - tente uma montagem do sistema de arquivos antes de fazer isso.
Gudge
+1 para a mentira suja e suja que é UUID ... posso sugerir também UNUID para "Infelizmente, não é um ID exclusivo"
Foon
Bem, eu sugeriria o Globally Unique IDentifier (GUID) - "Globalmente" como em "geralmente" ou "em geral". Oh, espere ... esse não é realmente o seu nome original? ...
The Quark
11

Além do ext2 / ext3 / ex4 e xfs, você também pode alterar o UUID do seguinte sistema de arquivos ou dispositivo de bloco.

Troca

swaplabel -U $NEW_UUID

RAID de software (md raid)

Para MD RAID, você deve interromper o RAID primeiro e, em seguida, atualizar o UUID ao remontar. Portanto, se o seu RAID estiver montado /, você precisará atualizar o UUID no modo offline - use um CD ao vivo para fazer isso.

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

Exemplo:

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

Após a atualização do UUID, você pode precisar atualizar grub.cfg( rd.md.uuid=$NEW_UUIDna linux/linuxefi/linux16linha de comando) e / ou / fstabe / ou mdadm.conf/ update-initramfs(família Debian) e / ou dracut --force(família Red Hat) para que possa inicializar com êxito da próxima vez.

LUKS (configuração de criptografia)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

Exemplo:

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

FAT / NTFS / exFAT

Esta é outra história aqui, atualmente não há utilitários para modificar o UUID do sistema de arquivos desses sistemas de arquivos(Veja a resposta de reichhart - a mlabelferramenta), mas podemos modificar dados brutos no disco para fazer isso.

AVISO, é perigoso modificar dados brutos no disco e pode perder dados sem operação cuidadosa.

Aqui estão as etapas detalhadas para modificar os dados brutos no disco usando hexedit.

  1. blkid, anote o UUID do sistema de arquivos em papel ou lembre-se dele. A seqüência UUID de FAT / exFAT se parece 1122-3344, a seqüência UUID de NTFS se parece 1122334455667788.
  2. Abrir dispositivo de partição usando o hexedit

    hexedit <partition device such as /dev/sda1>

  3. Pressione /, digite o UUID na ordem inversa (se blkidrelatado 1234-ABCD, depois pesquise CDAB3412) para pesquisar os dados do UUID no disco.
  4. Quando o UUID estiver localizado, altere-os, pressione F2para salvar e sair.
  5. blkid para verificar o UUID.
  6. Depois que o UUID for modificado, talvez seja necessário atualizar grub.cfge / ou fstabpara que você possa inicializar com êxito na próxima vez.
  7. Execute fsck <partition device such as /dev/sda1>e veja a mensagem "Há diferenças entre o setor de inicialização e seu backup" . Para resolvê-lo, selecione "1) Copiar original para backup" e, se você for perguntado "Executar alterações? (S / n)", pressione y.
LiuYan 刘 研
fonte
E quanto a hfs / hfs + ou hfsplus?
Wlad
11
Você pode simplesmente usar mkfs.exfat -i 01234567 /dev/partitionnameonde o mkfs.exfatcomando foi instalado pelo pacote exfat-utils no Fedora Linux. Talvez você deva adicionar isso à sua resposta, pois a variante hexedit é bastante perigosa!
21418 erik19:
@erik Obrigado pela dica, mas estamos procurando um método para atualizar o UUID antigo para o novo UUID no sistema de arquivos ou dispositivo de bloco existente.
LiuYan # 22/1018
Hey @LiuYan 研 研 para NTFS existe ntfslabelferramenta. askubuntu.com/questions/642591/…
aaditya1234
6

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

Use xfs_admin -u <device>para visualizar um UUID (observe a opção em minúsculas para exibir, versus a opção em maiúsculas para definir). Outro post sobre U&L apontou o blkidcomando para visualizar todos ou alguns dos UUIDs no sistema.

vimmar
fonte
2

Resposta parcial para VFAT

Para sistemas de arquivos ext * e xfs, já existem boas respostas. Mas, para o VFAT, eu recomendo usar o mlabel do pacote mtools. O uso de editores hexadecimais é PERIGOSO.

Use algo como isto para criar um novo UUID:

echo 'drive d: file="/dev/sdb3" exclusive' >>/etc/mtools.conf
mlabel -n d:
reichhart
fonte
Se você não se importa em verificar manualmente o acesso exclusivo (como em todos os outros comandos descritos aqui), você pode fazê-lo como um único comando como:mlabel -n -i /dev/sdb3 ::
telcoM
2

BTRFS

sudo btrfstune -u /dev/sdaX

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

A execução btrfscké recomendada porque alterar o UUID no BTRFS não é uma operação atômica.

Avio
fonte
0

No Fedora 27, descobri que a ordem dos argumentos desempenha um papel crucial ... Você precisa escrever o dispositivo primeiro, caso contrário, o UUID não será alterado. Por exemplo

tune2fs /dev/sdb1 -U random
Erich Küster
fonte
11
Isso parece um comportamento incomum, pelo menos dada a descrição da página de manual on - line exibida -Uantes da device.
Jeff Schaller
0

Para alterar o comando dd resultante da partição de disco duplicada UUID / s - Use GParted.

Na interface do usuário GParted, selecione unidade, selecione partição, desmonte a partição. Na pasta 'Partition', escolha 'NEW UUID', repita até que todos os uuid / s de partições duplicados da unidade dd estejam marcados para substituição. Para discos inicializáveis, não substitua o uuid da partição UEFI.

Revise a letra da unidade e a partição / s selecionadas - Tudo OK? ...

Clique no ícone 'Aplicar todas as operações' na interface do usuário GParted.
Para discos inicializáveis, edite o arquivo / etc / fstab UUID = string / se ponto de montagem / s .:

eromana
fonte
0

Para NTFS, verifique este segmento para obter detalhes.

Resumo:

sudo ntfslabel --new-half-serial /dev/sdXN
aaditya1234
fonte