UUIDs: considerações para mudar n caracteres de uma versão 4 para uma palavra

0

UUIDs de 36 caracteres são incríveis. Mas minha intuição é que, no meu uso pessoal em casa, não preciso de toda a exclusividade que 36 caracteres fornecem. Mas posso não estar pensando em todas as situações em que eles entram em ação.

Eu gostaria de descartar alguns dos caracteres em um UUID da versão 4, substituindo-os por algo que eu possa entender. Por exemplo, substitua 4 caracteres no UUID por cafe . Isso me ajudaria quando script. Por exemplo, como os contêineres crypto-LUKS não usam rótulos (que eu conheço), estou lidando com seus UUIDs ( a menos que Eu escrevo as regras do udev )

Isso aumenta o risco de colisões. Mas se minha esfera pessoal para os próximos 5 anos envolver 10.000 UUIDs, o risco parece insignificante, eu acho. Mas eu posso estar errado.

Alguém com experiência com isso?

    
por user217893 03.05.2017 / 22:30

1 resposta

0

Resumo:

Em vez de tentar "hackear" UUIDs dessa maneira, sugiro que você use rótulos de sistema de arquivos, rótulos de partições, nomes de volumes lógicos ou variáveis de script, já que essas ferramentas são todas projetadas para o tipo de coisa que você está sugerindo . Os detalhes do que funcionaria melhor dependem de suas necessidades particulares, que não são 100% claras em sua pergunta.

Recomendação estendida:

Um identificador universalmente exclusivo (UUID) é um número de 128 bits (16 bytes) tipicamente expressa em uma string hexadecimal que, com "-" caracteres entre determinados elementos, funciona com 36 caracteres. Estes não são caracteres alfanuméricos; eles são números hexadecimais. Assim, você não pode colocar qualquer letra que desejar, apenas valores hexadecimais. Mesmo com o fato de que você estaria desafiando o espírito dos UUIDs ao fazer o que você sugere, o limite de usar apenas as seis primeiras letras do alfabeto latino é um grande problema para a sua ideia.

Identificadores globais únicos (GUIDs) são essencialmente os mesmos dos UUIDs, mas padrões diferentes usam nomes diferentes e há variantes de ambos. Sua referência às regras udev me faz pensar que você está usando o Linux, em que os UUIDs são geralmente atribuídos a sistemas de arquivos, enquanto que os GUIDs são associados a partições (ao usar o esquema de particionamento GPT). No Linux, os GUIDs de partição costumam ser referidos (em /etc/fstab , etc.) usando o identificador PARTUUID .

Os sistemas de arquivos e as partições GPT podem ter rótulos além dos UUIDs / GUIDs. Como parece que você deseja tornar seus identificadores inteligíveis a você como humanos, recomendo que você use rótulos em vez de UUIDs / GUIDs. Em muitas ferramentas do Linux, os rótulos do sistema de arquivos são referenciados usando o identificador LABEL , e os rótulos de partições usam o identificador PARTLABEL .

Não é claro da sua pergunta exatamente onde você deseja usar o identificador (você insinua em um script, mas não diz o que ele faz), então não sei se estou usando o LABEL ou o PARTLABEL funcionaria para você, mas você pode querer investigar isso. Além disso, não descartaria a necessidade de escrever udev regras, se necessário, para obter links simbólicos para dispositivos que usam rótulos; udev regras não são tão difíceis de escrever, e se elas resolverem o seu problema, escrever essas regras seria melhor do que hackear os valores UUID / GUID desafiando os padrões relevantes.

Observe, no entanto, que os rótulos de partições são um recurso do GPT, mas não do MBR. Assim, se você estiver usando o MBR, os rótulos de partições não serão uma opção. Você pode mudar para o GPT (mesmo sem reinstalar o sistema operacional, embora seja necessário reinstalar o gerenciador de inicialização), se isso puder ser útil.

Outra possibilidade pode ser reconfigurar seu sistema para usar o LVM. Como exemplo, eu uso o LVM em um dos meus computadores e tenho LVs criptografados específicos em meu LVM. Nesta configuração, um LV criptografado pode ser /dev/mapper/myvg-home e a versão descriptografada é /dev/mapper/myvg-home_crypt . Como os LVs são nomeados e normalmente são mencionados dessa maneira, você obterá uma referência mais inteligível para "livre", por assim dizer.

Outra opção: você se refere a scripts. Se você está escrevendo scripts que se referem a partições por valores de UUID / GUID, você pode atribuir esses valores a variáveis, como em:

HOME_PART="c5424f69-5016-48bd-adf4-76bd95b1f6bc"

Os detalhes da sintaxe obviamente dependem da sua linguagem de script, mas esse é o núcleo da ideia. Você poderia então se referir a HOME_PART em outro lugar no script. Se o script foi criado para ser executado em vários sistemas, você poderá encontrar uma maneira de identificar partições específicas e mapear seus valores de UUID / GUID - digamos, analisando /etc/fstab para extrair os dados relevantes por pontos de montagem. Essa pode ser uma abordagem extremamente flexível, dependendo de suas necessidades específicas.

Se você usa rótulos de sistema de arquivos, rótulos de partições, nomes de LV ou variáveis de script, você obterá o benefício do conjunto completo (mais ou menos) de caracteres alfanuméricos e não precisará lidar nem com um valor de UUID / GUID hexadecimal parcial. Alguns caracteres podem estar fora dos limites por causa dos limites práticos dos padrões em questão, mas pelo menos você pode usar qualquer número ASCII e letras que desejar.

    
por 04.05.2017 / 19:20