Яка різниця між UUID та PARTUUID?


15

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

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

Зауважте, що на цитованій сторінці натякається, що UUID призначений для накопичувача - це PARTUUID для розділу, але тоді я б очікував, що UUID буде однаковим для всіх розділів накопичувача, це не так.


1
Привіт AProgrammer, і ласкаво просимо до біржі стеків Raspberry Pi. Я думаю, ви повинні врахувати, що це не питання щодо Raspberry Pi! Більше людей побачило б це питання (як відповісти на нього, так і скористатися запропонованими відповідями), якби воно було, можливо, на головному форумі Linux.
Tai Viinikka

@TaiViinikka, я визнаю, що вагався між цим і unix.se, але враховуючи, що я зустрів проблему з малиновим пі і що я ніколи не стикався з цим питанням після того, як 23 роки працював з дибійськими та похідними дистрибутивами на x86, включаючи UUID без зустрічаючись з цим - мої рефлекси були частиною причини мого питання -, я хоч би могла мати стосунки з малиновим пі.
AProgrammer

Це цілком зрозуміло, і я радий, що ти отримав відповідь. Мій [набагато коротший] досвід відрізнявся від вашого; кожен розділ, який у мене не збігаються UUID та PARTUUID: root @ herald: ~ # cat / proc / cpuinfo vendor_id: Назва моделі GenuineIntel: Intel (R) Atom (TM) CPU D2550 @ 1,86 ГГц root @ herald: ~ # blkid / dev / sda1: LABEL = "Завантаження" UUID = "e92827af-6c5d-4438-b22a-8f9b3b4dc4f0" TYPE = "ext4" PARTUUID = "44e5688f-01" І тому я дійшов протилежного висновку.
Tai Viinikka

Відповіді:


14

Про різницю між UUID та PARTUUID

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

blkid -p /dev/sda1

або будь-який пристрій / розділ, який ви дивитесь. Можливо, ви помітили, що якщо на одному UUIDпристрої є кілька розділів , то PARTUUIDздебільшого однаковий із доданим номером розділу.

A UUIDгарантовано буде унікальним. Наскільки я знаю, зіткнень не відбудеться протягом життя Всесвіту. Однак ви зауважте, що PARTUUIDце набагато коротше. Вони мають бути "локально" унікальними, і, швидше за все, зіткнення між усіма відомими PARTUUIDs.

Про UUID

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

Для подальшого читання про UUID:

$man uuidgen 

Або Інтернет:

manpage для uuidgen

Ще кілька прикладів використання UUID

$cat /etc/fstab

Для новіших систем GNU / Linux у вас буде список усіх розділів та їх UUID. Для кожного нового розділу генерується новий UUID. Таким чином, якщо перерозподілити даний диск, всі blkid UUID для цього диска зміняться.

Частина причини, що UUID використовуються як ідентифікатори розділів та накопичувачів, - це підтримка ідентифікаторів, навіть коли диски додаються або монтуються в іншому порядку. У попередній час, fstabідентифікатори, такі як /dev/sda1... Це був недолік, можливо, sda1мати фізично інший диск або розділ, якщо якось змінити порядок монтування.

НА PARTUUID

PARTUUIDs є складовою таблиць розділів GUID (GPT), які є заміною для розділення дисків, пов'язаних з Master Boot Record (MBR).

Для подальшого читання див. Linux.com - Використання нової таблиці розділів GUID в Linux

Linux.com каже:

GPT GUID (глобально унікальні ідентифікатори) та наші знайомі Linux UUID (Універсально унікальні ідентифікатори) - це не одне і те ж, хоча вони служать одній корисній цілі: наданню блочним пристроям унікальних імен. Linux UUID - це функція файлових систем, і вони створюються при створенні файлової системи. Щоб побачити Linux UUID, просто запустіть команду blkid. Так, оле Microsoft завжди виходить з ладу, оскільки це розділ EXT4, тому Windows не може прочитати його, але він буде бачити його як неформатований розділ. Ви не побачите цього з поточними випусками gdisk, оскільки до 2011 року не було GUID файлової системи Linux. Зараз є, тож якщо ви не використовуєте такий старий Linux, як моя (Монетний двір 13), ви '

Унікальний GUID-розділ - це те, що ви будете використовувати у fstab, наприклад:

PARTUUID = 8C208C30-4E8F-4096-ACF9-858959BABBAA / користувач даних ext4, за замовчуванням 0 0


Таємниця поглиблюється. Дивлячись на кілька блокових пристроїв, є пристрій PTUUID і є UUID і PARTUUID на розділ; Залежно від диска і, ймовірно, інструменту, який його сформував і розділив, PARTUUID походять від диска PTUUID чи ні. Моє запитання стосувалося UUID розділу, з яким ви можете погодитися з PARTUUID blkid.
AProgrammer

@AProgrammer: До моєї відповіді додано деяку інформацію.
RubberStamp

1
Добре, підсумовуючи, є дисковий UUID, який ви можете отримати, за допомогою blkid -pякого його називають PTUUID, є UUID розділу, який blkidвикликає PARTUUID, а деякі файлові системи мають UUID, який blkid викликає UUID. Мені все ще незрозуміло, чому мені довелося використовувати PARTUUID замість UUID, принаймні в деяких місцях під час переміщення кореневої файлової системи до USB-ключа на малині, коли моя система Linux посилається лише на UUID, але я не займаюся волонтерством зробити ще кілька тестів і перевірити, де дійсно є потреба в PARTUUID і де я все-таки можу використовувати UUID, якщо хотів, але я думаю, що cmdline.txtце потрібно лише йому.
AProgrammer

У мене два розділи на двох різних дисках з тим самим UUID. Стільки за " життя Всесвіту " ...
étale-когомологія

3

Як я це розумію.

Термін UUID взагалі відноситься до "Універсально унікального ідентифікатора", відомого у світі Windows як 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 ядро, яке працює без інітдр, може монтуватися за допомогою "PARTUUID", але не "UUID". Старіші версії initramfs-інструментів можуть бути змонтовані "UUID", але не "PARTUUID", останні initramfs-інструменти підтримують обидва.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.