Как Windows создает GUID тома дискового раздела и почему они очень часто заканчиваются на 6963 - особенно для разделов C: \?

323
Protonus

Я пытаюсь определить, как Windows создает GUID для данного тома диска. Каковы различные компоненты / разделы данного GUID тома и на что ссылается каждый раздел, в типичном GUID тома, разделенном дефисами, например: 26a21bda-a627-11d7-9931-806e6f6e6963

Во-вторых, и причина, по которой я пытаюсь это определить, состоит в том, чтобы выяснить, почему так часто GUID C: \ volume заканчивается на «6963» во многих установках Windows. Поскольку GUID предназначены для того, чтобы быть в значительной степени уникальными, я предполагаю кое-что о том, как создаются эти GUID, поэтому очень часто приводит к тому, что C: \ GUID заканчивается 6963? Кажется, что это довольно случайное число, но если вы посмотрите на GUID 6963 в Google, вы увидите, насколько оно действительно распространено! Я работаю с образами дисков серверов на своей работе и вижу тома GUID для сотен серверов в неделю, и тот факт, что они так часто заканчиваются в 6963, слишком часто вызывал у меня любопытство.

Фактически, несколько собственных статей Microsoft, например, этой, содержат GUID, заканчивающийся на 6963: https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-volume

Я искал вокруг и нашел очень мало способов объяснить, как эти GUID создаются специально для дисковых томов и / или почему 6963 так часто является конечной строкой, особенно для разделов C: \.

Заранее спасибо!

1
Я не думаю, что кто-нибудь, кроме нескольких инженеров Microsoft, знает ответ на этот вопрос. LPChip 5 лет назад 2

1 ответ на вопрос

3
harrymc

Согласно универсальному уникальному идентификатору Википедии, UUID заканчивается "48-битным идентификатором узла".

RFC 4122 определяет идентификатор узла как:

4.1.6. Узел

Для версии 1 UUID поле узла состоит из MAC-адреса IEEE 802, обычно адреса хоста. Для систем с несколькими адресами IEEE 802 может использоваться любой доступный. Октет с наименьшим адресом (октет номер 10) содержит глобальный / локальный бит и одноадресный / многоадресный бит и является первым октетом адреса, передаваемого по локальной сети 802.3.

Для систем без адреса IEEE может использоваться случайно или псевдослучайно сгенерированное значение; см. раздел 4.5. Бит многоадресной рассылки должен быть установлен в таких адресах, чтобы они никогда не конфликтовали с адресами, полученными от сетевых карт.

Для UUID версии 3 или 5 поле узла представляет собой 48-битное значение, созданное из имени, как описано в разделе 4.3.

Для UUID версии 4 поле узла является случайно сгенерированным или псевдослучайным 48-разрядным значением, как описано в разделе 4.4.

Версия UUID сохраняется в первом байте UUID. Как только вы узнаете номер версии, вы можете взглянуть на соответствующий алгоритм.

Но в итоге некоторые части останутся неясными.

GUID статьи являются глобально уникальными, но подстроки GUID не добавляют дополнительную информацию, добавляя, что UUID заканчивается:

шесть битов исправлены

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

Я думаю, что вышеупомянутое почти суммирует все, что известно о UUID в Windows.

Версия находится в старших четырех байтах седьмого байта. Похоже, это вариант 1 версии 1 UUID. Первые 10 байтов получены из даты и времени, а последние шесть «должны» быть MAC-адресом. David Marshall 5 лет назад 0
@DavidMarshall: это верно для UUID типа 1, но не для более новых типов. harrymc 5 лет назад 0
Хм, так что кажется, что последние цифры могут быть получены из MAC, и поскольку виртуальные машины могут иметь очень похожие MAC из-за того, что они являются виртуальными устройствами, использующими один и тот же драйвер, это может объяснить, почему так часто встречается 6963 в качестве конечной строки в UUID? Но чтобы знать наверняка, нам, вероятно, понадобится Microsoft Software Engineer, чтобы подтвердить это? Если так, я думаю, что это так же хорошо, как мы получим сейчас. Спасибо, ребята! Protonus 5 лет назад 0