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) маркирует их при загрузке.