36 символов UUID - это круто. Но моя интуиция заключается в том, что в моем личном домашнем использовании мне не нужна вся уникальность, которую обеспечивают 36 персонажей. Но я не думаю о всех ситуациях, в которых они вступают в игру.

Я хотел бы удалить несколько символов в UUID версии 4, заменив их чем-то, что я могу понять. Например, замените 4 символа в UUID на cafe . Это поможет мне при написании сценариев. Например, поскольку контейнеры crypto-LUKS не принимают метки (о которых я знаю), я застрял в работе с их UUID (если я не напишу правила udev)

Это увеличивает риск столкновения. Но если моя личная сфера в течение следующих 5 лет включает 10 000 UUID, риск кажется незначительным, я думаю. Но я могу ошибаться.

Кто-нибудь с опытом с этим?

1 ответ1

0

Резюме:

Вместо того, чтобы пытаться "взломать" UUID таким способом, я предлагаю вместо этого использовать метки файловой системы, метки разделов, имена логических томов или переменные скрипта, поскольку все эти инструменты предназначены для того, что вы предлагаете. Детали того, что будет работать лучше всего, зависят от ваших конкретных потребностей, которые не ясны на 100% из вашего вопроса.

Расширенная рекомендация:

Универсальный уникальный идентификатор (UUID) - это 128-битное (16-байтовое) число, обычно выражаемое в шестнадцатеричной строке, которое с символами «-» между определенными элементами обрабатывает до 36 символов. Это не алфавитно-цифровые символы; это шестнадцатеричные числа. Таким образом, вы не можете вводить любые буквы, которые вам нравятся, только шестнадцатеричные значения. Даже несмотря на то, что вы будете бросать вызов духу UUID, выполняя, как вы предлагаете, ограничение использования только первых шести букв латинского алфавита является большой проблемой для вашей идеи.

Глобальные уникальные идентификаторы (GUID), по сути, такие же, как UUID, но разные стандарты используют разные имена, и существуют варианты обоих. Ваша ссылка на правила udev заставляет меня думать, что вы используете Linux, в котором UUID обычно назначаются файловым системам, а GUID связаны с разделами (при использовании схемы разбиения GPT). В Linux на GUID разделов часто ссылаются (в /etc/fstab и т.д.), Используя идентификатор PARTUUID .

Обе файловые системы и разделы GPT могут иметь метки в дополнение к UUID /GUID. Поскольку кажется, что вы хотите, чтобы ваши идентификаторы были понятны вам как человеку, я рекомендую вам использовать метки вместо UUID /GUID. Во многих инструментах Linux метки файловой системы упоминаются с использованием идентификатора LABEL , а метки разделов используют идентификатор PARTLABEL .

Из вашего вопроса неясно, где именно вы хотите использовать идентификатор (вы подразумеваете в сценарии, но не говорите, что делает этот сценарий), поэтому я не знаю, подойдет ли вам использование LABEL или PARTLABEL , но вы можете посмотреть на это. Кроме того, я не исключаю написание правил udev , если это необходимо, для получения символических ссылок на устройства, использующие метки; Правила udev не так сложны в написании, и если они решат вашу проблему, написание таких правил будет лучше, чем хакерские значения UUID/GUID в нарушение соответствующих стандартов.

Однако обратите внимание, что метки разделов являются функцией GPT, но не MBR. Таким образом, если вы используете MBR, метки разделов не подойдут. Вы можете переключиться на GPT (даже без переустановки ОС, хотя вам потребуется переустановить загрузчик), если это будет полезно.

Другой возможностью может быть перенастройка вашей системы для использования LVM. Например, я использую LVM на одном из моих компьютеров и зашифровал определенные LV в моем LVM. В этой конфигурации зашифрованный LV может быть /dev/mapper/myvg-home а расшифрованная версия - /dev/mapper/myvg-home_crypt . Поскольку LV называются и на них обычно ссылаются таким образом, вы получите более понятную ссылку на «свободный», как это было раньше.

Другой вариант: вы ссылаетесь на скрипты. Если вы пишете сценарии, которые ссылаются на разделы по значениям UUID/GUID, вы можете назначить эти значения переменным, как в:

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

Детали синтаксиса, очевидно, будут зависеть от вашего языка сценариев, но это суть идеи. После этого вы сможете ссылаться на HOME_PART другом месте скрипта. Если сценарий предназначался для запуска в нескольких системах, вы могли бы найти способ идентифицировать определенные разделы и отобразить их значения UUID/GUID - скажем, путем анализа /etc/fstab для извлечения соответствующих данных по точкам монтирования. Это может быть чрезвычайно гибкий подход, в зависимости от ваших конкретных потребностей.

Независимо от того, используете ли вы метки файловой системы, метки разделов, имена LV или переменные скрипта, вы получите преимущество (более или менее) полного набора буквенно-цифровых символов, и вам не придется иметь дело даже с частичным шестнадцатеричным UUID/ Значение GUID. Некоторые символы могут быть недоступны из-за практических ограничений рассматриваемых стандартов, но по крайней мере вы можете использовать любые цифры и буквы ASCII, которые вам нравятся.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .