В чем разница между UUID и PARTUUID?

14

Я следовал процедуре на форумах Raspberry Pi, чтобы заставить мой Raspberry Pi 3 использовать USB-ключ вместо SD-карты в качестве корневой файловой системы в надежде сделать ее более устойчивой к потере питания.

Процесс работал, но я потерял время, потому что перепутал UUID и PARTUUID для раздела (используйте blkid и посмотрите, как они могут отличаться). Какова цель обоих? Проще было исправить мою путаницу, используя повсеместно UUID вместо PARTUUID, но это не помогло, мне пришлось использовать PARTUUID (я думаю, что было бы возможно использовать микс, но я не пытался его искать).

Обратите внимание, что на цитируемой странице указывается, что UUID для диска является PARTUUID для раздела, но тогда я ожидаю, что UUID будет одинаковым для всех разделов диска, это не так.

AProgrammer
источник
1
Привет AProgrammer, и добро пожаловать в обмен стека Raspberry Pi. Я думаю, вы должны учитывать, что это не вопрос о Raspberry Pi! Больше людей увидели бы этот вопрос (как для ответа на него, так и для получения выгоды от предложенных ответов), если бы он был, возможно, на главном форуме по Linux.
Тай Вииникка
@TaiViinikka, я признаю, что колебался между этим и unix.se, но, учитывая, что я столкнулся с проблемой с raspberry pi и никогда не сталкивался с этой проблемой после 23-летней работы с производными от Debian и Debian на x86, включая UUID без встречая это - мои рефлексы были частью причины моей проблемы - я думал, что могут быть отношения с Raspberry Pi.
AProgrammer
Это вполне понятно, и я рад, что вы получили ответ. Мой [гораздо более короткий] опыт отличался от вашего; все разделы, которые у меня есть, не соответствуют UUID и PARTUUID: root @ herald: ~ # cat / proc / cpuinfo vendor_id: имя модели GenuineIntel: процессор Intel (R) Atom (TM) D2550 @ 1,86 ГГц root @ herald: ~ # blkid / dev / sda1: LABEL = "Boot" UUID = "e92827af-6c5d-4438-b22a-8f9b3b4dc4f0" TYPE = "ext4" PARTUUID = "44e5688f-01" И поэтому я пришел к противоположному выводу.
Тай Viinikka

Ответы:

13

О разнице между UUID и PARTUUID

Вы можете получить несколько подсказок о разнице между UUIDи PARTUUID, указав -pопцию.

blkid -p /dev/sda1

или какое-либо устройство / раздел вы смотрите. Возможно, вы заметили, что если на одном UUIDустройстве несколько разделов , то они PARTUUIDв основном совпадают с добавленным номером раздела.

А UUIDгарантированно будет уникальным. Насколько я знаю, столкновения не произойдут в течение жизни Вселенной. Тем не менее, вы заметите, что PARTUUIDнамного короче. Предполагается, что они являются «локально» уникальными, и наиболее вероятны конфликты между всеми известными PARTUUIDs.

На UUID

UUID - это просто уникальный идентификатор. Они используются для самых разных целей. Вы можете генерировать их с помощью uuidgenфункции.

Для дальнейшего чтения о UUID:

$man uuidgen 

Или интернет:

man-страница для uuidgen

Еще несколько примеров использования UUID

$cat /etc/fstab

Для более новых систем GNU / Linux у вас будет список всех разделов и их UUID. Новый UUID генерируется для каждого нового раздела. Таким образом, если переразметить данный диск, все UUID blkid для этого диска будут изменены.

Одна из причин, по которой идентификаторы UUID используются в качестве идентификаторов разделов и дисков, заключается в том, что они поддерживают идентификаторы, даже если диски добавлены или смонтированы в другом порядке. Раньше fstabу таких идентификаторов были бы такие, как /dev/sda1... Недостатком было то, что они sda1могли иметь физически другой диск или раздел, если каким-то образом порядок монтирования был изменен.

По партуидам

PARTUUIDs являются компонентом таблиц разделов GUID (GPT), которые являются заменой разделов диска, связанных с основной загрузочной записью (MBR).

Для дальнейшего чтения смотрите Linux.com - Использование новой таблицы разделов GUID в Linux

Linux.com говорит:

GPT GUID (глобально уникальные идентификаторы) и наши знакомые Linux UUID (универсально уникальные идентификаторы) - это не одно и то же, хотя они служат одной и той же полезной цели: присваивают блочным устройствам уникальные имена. UUID в Linux являются функцией файловых систем и создаются при создании файловой системы. Чтобы увидеть Linux UUID, просто запустите команду blkid. Обратите внимание на код GUID раздела и на то, как он говорит «Основные данные Microsoft». Да, Microsoft всегда терпит крах, потому что это раздел EXT4, поэтому Windows не может прочитать его, но увидит его как неформатированный раздел. Вы не увидите этого в текущих выпусках gdisk, потому что до 2011 года не было GUID файловой системы Linux. Теперь есть, так что если вы не используете старый Linux, как мой (Mint 13), вы '

Уникальный GUID раздела - это то, что вы будете использовать в fstab, например:

PARTUUID = 8C208C30-4E8F-4096-ACF9-858959BABBAA / data ext4 пользователь, по умолчанию 0 0

Штамп
источник
Тайна углубляется. Если посмотреть на несколько блочных устройств, то есть PTUUID устройства и UUID и PARTUUID на раздел; в зависимости от диска и, вероятно, инструмента, который его форматировал и разбивал на разделы, PARTUUID являются производными от PTUUID диска или нет. Мой вопрос был о разделе UUID, с которым вы можете получить вместе с PARTUUID blkid.
AProgrammer
@AProgrammer: Добавил некоторую информацию в мой ответ.
RubberStamp
1
Итак, в blkid -pобщем, есть UUID диска, который вы можете получить с помощью которого он называется PTUUID, есть UUID раздела, который blkidвызывает PARTUUID, и некоторые файловые системы имеют UUID, который blkid вызывает UUID. Мне все еще неясно, почему мне пришлось использовать PARTUUID вместо UUID, по крайней мере, в некоторых местах, при перемещении корневой файловой системы на USB-ключ на малине, когда моя система Linux только ссылается на UUID, но я не работаю добровольно сделать еще несколько тестов и проверить, где действительно нужен PARTUUID и где я все еще могу использовать UUID, если захочу, но, думаю, это cmdline.txtнужно только .
AProgrammer
У меня два раздела на двух разных дисках с одинаковым UUID. Вот вам и « жизнь Вселенной » ...
étale-cohomology
3

Как я понимаю.

Термин UUID в целом относится к «универсально уникальному идентификатору», известному в мире окон как GUID. Существует несколько различных схем, но по большей части современные UUID / GUID по существу представляют собой большое случайное число или хэш и несколько битов флага.

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

Эти уникальные идентификаторы могут быть или не быть фактическими UUID. Насколько я могу сказать.

  • Для таблиц разделов GPT "PARTUUID" - это GUID из таблицы разделов GPT.
  • Для таблиц разделов MBR "PARTUUID" формируется путем объединения идентификатора диска с номером раздела
  • Для EXT4, Linux swap, BTRFS и, вероятно, других типов файловых систем, родных для Linux, «UUID» - это UUID, хранящийся в метаданных файловой системы.
  • Для FAT и NTFS «UUID» является серийным номером тома, 32 бита для FAT и 64 бита для NTFS.

Обратите внимание, что поддержка монтирования корневой файловой системы с помощью «UUID» и «PARTUUID» различается. IIRC ядро, работающее без initrd, может монтироваться с помощью "PARTUUID", но не с помощью "UUID". Более старые версии initramfs-tools могут монтироваться с помощью «UUID», но не «PARTUUID», последние initramfs-tools поддерживают оба.

Питер Грин
источник