Jaka jest różnica między UUID a PARTUUID?

15

Postępowałem zgodnie z procedurą na forach Raspberry Pi, aby mój Raspberry Pi 3 używał klucza USB zamiast karty SD jako głównego systemu plików, w nadziei, że będzie bardziej odporny na utratę zasilania.

Proces działał, ale straciłem czas, ponieważ pomyliłem UUID i PARTUUID dla partycji (użyj blkid i zobacz, jak mogą się różnić). Jaki jest cel obu? Łatwiej było naprawić moje zamieszanie, używając wszędzie UUID zamiast PARTUUID, ale to się nie udało, musiałem użyć PARTUUID (myślę, że można byłoby użyć miksu, ale nie próbowałem go szukać).

Zauważ, że cytowana strona wskazuje, że UUID jest dla dysku, to PARTUUID dla partycji, ale wtedy spodziewałbym się, że UUID będzie taki sam dla wszystkich partycji dysku, tak nie jest.

AProgrammer
źródło
1
Cześć AProgrammer i witamy na wymianie stosów Raspberry Pi. Myślę, że powinieneś wziąć pod uwagę, że to nie jest pytanie o Raspberry Pi! Więcej osób zobaczyłoby to pytanie (zarówno po to, by na nie odpowiedzieć, jak i skorzystać z udzielonych odpowiedzi), gdyby znajdowało się, być może, na głównym forum Linuksa.
Tai Viinikka,
@TaiViinikka, przyznaję, że wahałem się między tym a unix.se, ale biorąc pod uwagę, że spotkałem się z problemem z Raspberry Pi i że nigdy nie spotkałem się z tym problemem po 23 latach pracy z dystrybucjami Debiana i pochodnych Debiana na platformie x86, w tym UUID bez spełniając to - mój refleks był częścią przyczyny mojego problemu - myślałem, że może istnieć związek z malinową pi.
AProgrammer
To całkiem zrozumiałe i cieszę się, że dostałeś odpowiedź. Moje [o wiele krótsze] doświadczenia były inne niż twoje; na każdej partycji mam niezgodny UUID i PARTUUID: root @ herald: ~ # cat / proc / cpuinfo vendor_id: GenuineIntel nazwa modelu: Intel (R) Atom (TM) CPU D2550 @ 1.86GHz root @ herald: ~ # blkid / dev / sda1: LABEL = "Boot" UUID = "e92827af-6c5d-4438-b22a-8f9b3b4dc4f0" TYPE = "ext4" PARTUUID = "44e5688f-01" I doszedłem do przeciwnego wniosku.
Tai Viinikka

Odpowiedzi:

14

Różnica między UUID a PARTUUID

Możesz uzyskać kilka wskazówek na temat różnicy między UUIDi PARTUUIDokreślając -popcję.

blkid -p /dev/sda1

lub jakiekolwiek urządzenie / partycję, na którą patrzysz. Być może zauważyłeś, że jeśli na tym samym UUIDurządzeniu jest wiele partycji , PARTUUIDjest to w większości takie samo z dołączonym numerem partycji.

UUIDGwarantowane jest, że A jest wyjątkowy. O ile mi wiadomo, kolizje nie będą miały miejsca za życia wszechświata. Zauważysz jednak, że PARTUUIDjest on znacznie krótszy. Mają one być „lokalnie” unikalne, a kolizje najprawdopodobniej występują między wszystkimi znanymi PARTUUIDs.

Na UUID

UUID to po prostu unikalny identyfikator. Są używane do wielu różnych celów. Możesz je wygenerować za pomocą uuidgenfunkcji.

Więcej informacji na temat UUID:

$man uuidgen 

Lub Internet:

strona podręcznika dla uuidgen

Więcej przykładów użycia UUID

$cat /etc/fstab

W przypadku nowszych systemów GNU / Linux będziesz mieć listę wszystkich partycji i ich UUID. Nowy UUID jest generowany dla każdej nowej partycji. Tak więc, jeśli ponownie partycjonujesz dany dysk, wszystkie UUID blkid dla tego dysku zmienią się.

Jednym z powodów, dla których identyfikatory UUID są używane jako identyfikatory partycji i dysków, jest utrzymanie identyfikatorów, nawet jeśli dyski są dodawane lub montowane w innej kolejności. Wcześniej fstabmiałyby takie identyfikatory, jak /dev/sda1... Miałoby to wadę polegającą na tym, że może sda1być fizycznie innym dyskiem lub partycją, gdyby w jakiś sposób zmieniono kolejność montowania.

Na PARTUUID

PARTUUIDs są składnikiem tabel partycji GUID (GPT), które zastępują partycjonowanie dysku związane z głównym rekordem rozruchowym (MBR).

Więcej informacji można znaleźć na Linux.com - Korzystanie z nowej tabeli partycji GUID w systemie Linux

Linux.com mówi:

GUID GPT (unikalne globalnie identyfikatory) i nasze znane Linux UUID (uniwersalne unikalne identyfikatory) nie są tym samym, choć służą temu samemu przydatnemu celowi: nadawaniu urządzeniom blokowym unikatowych nazw. UUID systemu Linux są funkcją systemów plików i są tworzone podczas tworzenia systemu plików. Aby zobaczyć UUID systemu Linux, po prostu uruchom polecenie blkid. Zwróć uwagę na kod GUID partycji i sposób, w jaki mówi on „Podstawowe dane Microsoft”. Tak, Microsoft zawsze ulega awarii, ponieważ jest to partycja EXT4, więc Windows nie może jej odczytać, ale zobaczy ją jako partycję niesformatowaną. Nie zobaczysz tego w obecnych wydaniach gdisk, ponieważ do 2011 r. Nie było żadnych identyfikatorów GUID systemu plików Linux. Teraz są, więc jeśli nie używasz starego Linuksa, takiego jak mój (Mint 13), „

Unikalny GUID dla partycji jest tym, czego będziesz używać w fstab, w następujący sposób:

PARTUUID = 8C208C30-4E8F-4096-ACF9-858959BABBAA / data ext4 user, default 0 0

Pieczątka
źródło
Tajemnica się pogłębia. Patrząc na kilka urządzeń blokowych, istnieje urządzenie PTUUID oraz UUID i PARTUUID na partycję; w zależności od dysku i prawdopodobnie narzędzia, które go utworzyło i podzieliło na partycje, PARTUUID pochodzi z dysku PTUUID lub nie. Moje pytanie dotyczyło identyfikatora UUID partycji, z którym można się dogadać z PARTUUID blkid.
AProgrammer
@AProgrammer: Dodano pewne informacje do mojej odpowiedzi.
RubberStamp,
1
Ok, podsumowując, istnieje identyfikator UUID dysku, z blkid -pktórym można go nazwać PTUUID, istnieje UUID partycji, który blkidwywołuje PARTUUID, a niektóre systemy plików mają UUID, który blkid wywołuje UUID. Nadal nie jestem pewien, dlaczego musiałem użyć PARTUUID zamiast UUID, przynajmniej w niektórych miejscach, kiedy przenosiłem główny system plików na klucz USB na malinie, kiedy mój system Linux odwołuje się tylko do UUID, ale nie jestem ochotnikiem zrobić jeszcze więcej testów i sprawdzić, gdzie naprawdę jest potrzebny PARTUUID i gdzie nadal mógłbym użyć UUID, gdybym chciał, ale myślę, że tylko tego cmdline.txtpotrzebuje.
AProgrammer
Mam dwie partycje na dwóch różnych dyskach o tym samym UUID. Tyle o „ życiu wszechświata ” ...
étale-cohomology
3

Tak jak rozumiem.

Termin UUID ogólnie odnosi się do „Uniwersalnie unikalnego identyfikatora”, znanego w świecie Windows jako GUID. Istnieje kilka różnych schematów, ale w większości nowoczesne UUID / GUID to w zasadzie duża liczba losowa lub skrót i kilka bitów flagi.

W konkretnym przypadku montowania systemów plików w systemie Linux „UUID” odnosi się do unikalnego identyfikatora, który jest częścią metadanych przechowywanych w systemie plików. „PARTUUID” odnosi się do unikalnego identyfikatora partycji przechowywanej w tablicy partycji lub pochodzącej z niej.

Te unikalne identyfikatory mogą, ale nie muszą, być rzeczywistymi identyfikatorami UUID. O ile mogę powiedzieć.

  • W przypadku tabel partycji GPT „PARTUUID” to identyfikator GUID z tabeli partycji GPT.
  • W przypadku tablic partycji MBR „PARTUUID” jest tworzony przez połączenie identyfikatora dysku z numerem partycji
  • W przypadku EXT4, Linux Swap, BTRFS i prawdopodobnie innych rodzimych systemów plików dla Linuksa „UUID” to UUID przechowywany w metadanych systemu plików.
  • W przypadku FAT i NTFS „UUID” wydaje się być numerem seryjnym woluminu, 32 bity dla FAT i 64 bity dla NTFS.

Pamiętaj, że obsługa montowania głównego systemu plików za pomocą „UUID” i „PARTUUID” jest różna. IIRC jądro działające bez initrd może montować przez „PARTUUID”, ale nie przez „UUID”. Starsze wersje narzędzi initramfs można montować według „UUID”, ale nie „PARTUUID”, ostatnie initramfs-narzędzia obsługują oba te elementy.

Peter Green
źródło