Понимание назначения UUID

Понимание назначения UUID

UUID (универсальный уникальный идентификатор) — это 128-битный код, который используется для идентификации блочных (хранительных) устройств. Во-первых, это все, для чего используются UUID?

Как устройство получает свой UUID?

Он когда-нибудь меняется? Например, при каждом запуске? При установке новой ОС?

Как генерируется UUID? Он случайный?

Большинство компьютеров не имеют более 10 устройств хранения. Зачем нужно так много разных имен?

решение1

Концепция описана вRFC4122который определяет различные алгоритмы для генерацииUUIDs. Вариант 4 использует случайные числа и является наиболее распространенным.

UUID используются во многих сценариях, вот несколько примеров:

  • Маркировка разделов и файловых систем является наиболее распространённым применением в Linux.
  • Network Manager использует их для идентификации сетевых устройств и подключений.
  • Гипервизоры, такие как Virtual Box и Qemu-KVM, используют их для идентификации виртуальных машин.
  • Они используются в Microsoft Windows, где они известны какGUIDс
  • Они используются для уникальности внутрибазы данных
  • Они используются вразработка программного обеспечения

В Linux все дистрибутивы поставляются с util-linuxпакетом, который, помимо прочего, имеет uuidgenкоманду для генерации UUID. Это фронтенд, libuuidкоторый генерирует случайные UUID по умолчанию или на основе времени, если недостаточно энтропии.

Утилита, которую вы используете для создания раздела или файловой системы, сгенерирует UUID, который останется с этим разделом/файловой системой до тех пор, пока вы не создадите их заново или не измените UUID явно (например, с помощью tune2fs).

UUID используются с файловыми системами и разделами, чтобы дать им единообразное имя (хотя и очень длинное). Это позволяет избежать сценария, когда BIOS прошивки UEFI в системе с двумя жесткими дисками перечисляет жесткий диск так, что ваш системный диск выделяется /dev/sdaпри одной загрузке и выделяется /deb/sdbпри следующей (возможно, первый диск медленнее запускался при второй загрузке).

Используя традиционный метод именования, это вызвало бы хаос в вашем /etc/fstabфайле, поскольку ваша система искала бы не на том диске разделы для монтирования. Например, вот моя запись подкачки:

/dev/sda4               none            swap            defaults        0 0

Если бы диски были распределены по-другому при загрузке, моя система не нашла бы четвертый раздел типа swapна несистемном диске (ладно, у меня ноутбук, так что второго диска у него нет, но вы поняли), и мой своп не сработал бы.

Помечая их UUID и используя их внутри, /etc/fstabвы гарантируете, что правильная файловая система будет смонтирована в любое время. Например:

UUID=d8ab8967-f2de-4c76-902f-d8d9707c399e /media/files  ext4    defaults 0 0

всегда будет монтировать раздел с этим UUID /media/filesнезависимо от порядка, в котором BIOS (или прошивка UEFI) маркирует их при загрузке.

Связанный контент