Строка вида 28803f59-3a75-4058-995f-4ee5503b023c в выводе shell-команды — это классический UUID (универсальный уникальный идентификатор) в стандартном формате 8-4-4-4-12 шестнадцатеричных символов. Такие идентификаторы встречаются при работе с разделами диска, виртуальными машинами, задачами планировщика, объектами Active Directory и многими другими подсистемами. Понимание того, откуда взялся конкретный UUID и что с ним делать, избавляет от лишних часов диагностики.

В этой статье разберём, как определить источник идентификатора, как сгенерировать собственный UUID в Linux и Windows, как искать объект по известному идентификатору и каких ошибок стоит избегать при автоматизации скриптов.

Что представляет собой идентификатор такого формата

UUID — это 128-битное значение, записываемое в виде пяти групп шестнадцатеричных цифр, разделённых дефисами. В примере 28803f59-3a75-4058-995f-4ee5503b023c первая группа содержит 8 символов, затем идут три группы по 4 и завершающая из 12. Символ «4» в начале третьей группы (4058) указывает на версию 4 — идентификатор сгенерирован случайным образом, что является самым распространённым вариантом.

Термины UUID и GUID обозначают по сути одно и то же: GUID — название, принятое в экосистеме Microsoft, UUID — в открытых стандартах и миру Unix. В shell-скриптах обе системы вы встретите один и тот же формат записи.

  • 🔢 Версия 1 — генерируется на основе MAC-адреса и метки времени
  • 🔢 Версия 4 — полностью случайная генерация (наш случай)
  • 🔢 Версия 5 — хеш от имени и пространства имён (SHA-1)
  • 🔢 Nil UUID — все нули, используется как заглушка

Где в shell чаще всего встречаются такие идентификаторы

Наиболее частый сценарий — идентификаторы разделов и файловых систем в выводе blkid или в файле /etc/fstab. Там же встречаются UUID томов в PowerShell при работе с Get-Volume. Вторая типичная область — виртуализация: VirtualBox, Hyper-V и VMware присваивают каждой ВМ и каждому виртуальному диску собственный GUID.

Также UUID фигурируют в системных журналах как идентификаторы сессий, заданий и транзакций. Если вы нашли непонятный идентификатор в логе — первым делом выясните, какая подсистема его сгенерировала, иначе поиск объекта превратится в гадание.

📊 Где вы чаще всего встречаете UUID в работе?
Разделы дисков и fstab
Виртуальные машины
Логи и журналы событий
Скрипты и автоматизация

Как сгенерировать UUID в командной строке

В Linux самый прямой способ — утилита uuidgen из пакета util-linux, которая присутствует в большинстве дистрибутивов по умолчанию. Альтернатива без установки пакетов — чтение из псевдофайла ядра:

cat /proc/sys/kernel/random/uuid

В PowerShell (Windows) идентификатор создаётся через .NET-метод:

[guid]::NewGuid().ToString()

Обе команды выдают значение версии 4 в том же формате, что и наш пример. Обратите внимание: регистр символов может отличаться — Windows традиционно выводит GUID в верхнем регистре, а Linux-утилиты — в нижнем. При сравнении строк в скриптах приводите обе стороны к одному регистру, иначе сравнение даст ложное несовпадение.

💡

Чтобы сравнение UUID в скрипте не ломалось из-за регистра, используйте tr 'A-F' 'a-f' в bash или .ToLower() в PowerShell перед сопоставлением.

Поиск объекта по известному идентификатору

Допустим, у вас есть UUID, и нужно понять, чему он принадлежит. Порядок действий зависит от контекста, но общая логика такова: сначала проверяем дисковую подсистему, затем виртуализацию, затем системные журналы.

Для поиска раздела по UUID в Linux достаточно одной команды:

blkid | grep 28803f59-3a75-4058-995f-4ee5503b023c

Если идентификатор относится к задаче планировщика Windows, поиск выполняется через Get-ScheduledTask с фильтрацией по свойству. Для журналов событий удобен grep -r по каталогу /var/log — так вы найдёте все записи, где фигурировал этот идентификатор, и поймёте контекст его появления.

☑️ Диагностика неизвестного UUID

Выполнено: 0 / 5

Типичные ошибки при работе с UUID в скриптах

Первая ошибка — жёсткое зашивание UUID в скрипт без комментария, чему он принадлежит. Через полгода никто не вспомнит, что это за идентификатор, и при миграции на новый диск скрипт молча перестанет работать. Всегда добавляйте поясняющий комментарий рядом со значением.

Вторая проблема — сравнение строк с учётом регистра и наличия фигурных скобок. PowerShell иногда возвращает GUID в формате {28803F59-...}, а в файле конфигурации тот же идентификатор записан без скобок и строчными буквами. Перед сравнением нормализуйте обе строки: уберите скобки, приведите к одному регистру.

⚠️ Внимание: не используйте UUID как пароль или секретный токен. Случайность версии 4 достаточна для уникальности, но идентификаторы часто попадают в логи и вывод команд в открытом виде — для криптографических целей применяйте специальные генераторы ключей.

💡

UUID гарантирует уникальность, но не секретность. Его задача — однозначно идентифицировать объект, а не защищать доступ к нему.

UUID разделов и монтирование: практические нюансы

При монтировании разделов через /etc/fstab рекомендуется использовать именно UUID, а не имена устройств вида /dev/sda1: буквы дисков могут меняться при подключении новых накопителей, а идентификатор раздела остаётся постоянным. Узнать UUID всех разделов поможет команда lsblk -f или уже упомянутый blkid.

Важный нюанс: UUID присваивается файловой системе при её создании. Переформатирование раздела генерирует новый идентификатор, и все ссылки на старый в fstab станут недействительными — система может уйти в аварийный режим при загрузке. После любых операций с разделами обновляйте записи и проверяйте конфигурацию командой mount -a до перезагрузки.

⚠️ Внимание: при клонировании дисков побайтово (например, через dd) копия получает тот же UUID, что и оригинал. Одновременное подключение обоих носителей к одной системе вызовет конфликт — смонтируется непредсказуемый раздел. Меняйте идентификатор на клоне штатными утилитами файловой системы.

Как изменить UUID файловой системы

Для ext2/3/4 используется tune2fs -U random /dev/sdXN, для XFS — xfs_admin -U generate, для swap — swaplabel -U random. Все операции выполняются на отмонтированном разделе. После изменения обновите /etc/fstab и конфигурацию загрузчика, если она ссылается на старый идентификатор.

Сравнение инструментов работы с UUID

ИнструментПлатформаНазначение
uuidgenLinuxГенерация новых UUID
blkidLinuxПросмотр UUID разделов
tune2fs -ULinuxСмена UUID ext-разделов
[guid]::NewGuid()Windows / PowerShellГенерация GUID
Get-VolumeWindows / PowerShellПросмотр идентификаторов томов

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

Часто задаваемые вопросы

Могут ли два UUID случайно совпасть?

Теоретически вероятность коллизии существует, но для версии 4 она настолько мала, что на практике ею пренебрегают. Для уникальности в пределах одной системы случайной генерации достаточно.

Почему один и тот же GUID выглядит по-разному в Windows и Linux?

Различаются регистр символов и наличие фигурных скобок — это особенности представления, а не разные значения. Байтовое содержимое идентификатора одинаково.

Что делать, если система не загружается из-за неверного UUID в fstab?

Загрузитесь с Live-носителя, узнайте актуальные идентификаторы через blkid и исправьте запись в /etc/fstab. Перед перезагрузкой проверьте конфигурацию командой mount -a.

Можно ли задать собственный UUID вручную?

Да, утилиты вроде tune2fs -U принимают произвольное значение в правильном формате. Это бывает нужно при восстановлении системы, когда требуется сохранить прежний идентификатор раздела.

Куда девается UUID при переформатировании раздела?

Создание новой файловой системы генерирует новый идентификатор — старый безвозвратно теряется вместе с данными раздела. Заранее сохраните старое значение, если оно где-то используется.