Sự khác biệt giữa UUID và PARTUUID là gì?


14

Tôi đã làm theo quy trình trong các diễn đàn raspberry pi để làm cho Raspberry Pi 3 của tôi sử dụng khóa USB thay vì thẻ SD làm hệ thống tập tin gốc với hy vọng làm cho nó mạnh hơn khi mất điện.

Quá trình đã hoạt động, nhưng tôi đã mất thời gian vì tôi nhầm lẫn UUID và PARTUUID cho phân vùng (sử dụng blkid và xem chúng có thể khác nhau như thế nào). Mục đích của cả hai là gì? Thật đơn giản để khắc phục sự nhầm lẫn của tôi bằng cách sử dụng UUID thay vì PARTUUID ở mọi nơi, nhưng điều đó không thành công, tôi đã phải sử dụng PARTUUID (Tôi nghĩ rằng có thể sử dụng hỗn hợp, nhưng tôi đã không thử tìm kiếm một bản phối).

Lưu ý rằng trang được trích dẫn gợi ý rằng UUID dành cho ổ đĩa là PHẦN MỀM cho phân vùng, nhưng sau đó tôi mong rằng UUID giống nhau cho tất cả các phân vùng của ổ đĩa, không phải vậy.


1
Xin chào AProgrammer và chào mừng bạn đến với trao đổi ngăn xếp Raspberry Pi. Tôi nghĩ bạn nên cân nhắc rằng đây không phải là câu hỏi về Raspberry Pi! Nhiều người sẽ thấy câu hỏi này (cả hai để trả lời nó và để hưởng lợi từ các câu trả lời được cung cấp) nếu nó có trong diễn đàn chính của Linux.
Tai Viinikka

@TaiViinikka, tôi thừa nhận đã do dự giữa điều này và unix.se, nhưng xem xét rằng tôi đã gặp vấn đề với một quả mâm xôi pi và tôi chưa bao giờ gặp vấn đề sau khi làm việc với các bản phân phối có nguồn gốc từ debian và debian trong 23 năm trên x86, kể cả UUID đáp ứng nó - phản xạ của tôi là một phần nguyên nhân của vấn đề của tôi -, mặc dù tôi có thể có mối quan hệ với pi mâm xôi.
AProgrammer

Điều đó khá dễ hiểu và tôi rất vui vì bạn đã có câu trả lời. Những trải nghiệm [nhiều hơn] của tôi khác với bạn; mọi phân vùng tôi đã không khớp với UUID và PARTUUID: root @ herald: ~ # cat / Proc / cpuinfoeller_id: Tên mô hình chính hãng: 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" Và thế là tôi đã đạt được kết luận ngược lại.
Tai Viinikka

Câu trả lời:


13

Về sự khác biệt giữa UUID và PARTUUID

Bạn có thể nhận được một vài gợi ý về sự khác biệt giữa UUIDPARTUUIDbằng cách chỉ định -ptùy chọn.

blkid -p /dev/sda1

hoặc bất cứ thiết bị / phân vùng nào bạn đang xem. Bạn có thể nhận thấy rằng nếu có nhiều phân vùng trên cùng một UUIDthiết bị, PARTUUIDthì hầu hết đều giống với số phân vùng được nối thêm.

A UUIDđược đảm bảo là duy nhất. Theo tôi biết, va chạm sẽ không xảy ra trong vòng đời của vũ trụ. Tuy nhiên, bạn sẽ lưu ý rằng PARTUUIDnó ngắn hơn nhiều. Đây là những ý nghĩa duy nhất "cục bộ" và rất có thể xảy ra va chạm giữa tất cả những gì đã biết PARTUUIDs.

Trên UUID

Một UUID chỉ đơn giản là một định danh duy nhất. Chúng được sử dụng cho nhiều mục đích khác nhau. Bạn có thể tạo chúng bằng cách sử dụng uuidgenchức năng.

Để đọc thêm về UUID:

$man uuidgen 

Hoặc Internet:

trang dành cho uuidgen

Một số ví dụ sử dụng UUID khác

$cat /etc/fstab

Đối với các hệ thống GNU / Linux mới hơn, bạn sẽ có một danh sách tất cả các phân vùng và UUID của chúng. Một UUID mới được tạo cho mỗi phân vùng mới. Vì vậy, nếu phân vùng lại một ổ đĩa nhất định, tất cả các UUID blkid cho ổ đĩa đó sẽ thay đổi.

Một phần lý do UUID được sử dụng làm định danh phân vùng và ổ đĩa là để duy trì định danh ngay cả khi các ổ đĩa được thêm hoặc gắn theo thứ tự khác. Trong thời gian trước, các fstabđịnh danh sẽ như /dev/sda1... Điều này có nhược điểm là có sda1thể là một ổ đĩa hoặc phân vùng vật lý khác nhau nếu bằng cách nào đó thứ tự gắn kết bị thay đổi.

Trên PHẦN MỀM

PARTUUIDs là một thành phần của Bảng phân vùng GUID (GPT) thay thế cho phân vùng đĩa liên quan đến Bản ghi khởi động chính (MBR).

Để đọc thêm, hãy xem Linux.com - Sử dụng Bảng phân vùng GUID mới trong Linux

Linux.com nói:

Các GID GUID (số nhận dạng duy nhất toàn cầu) và UUID Linux quen thuộc của chúng tôi (Số nhận dạng duy nhất toàn cầu) không giống nhau, mặc dù chúng phục vụ cùng một mục đích hữu ích: đặt tên cho các thiết bị khối. Linux UUID là một chức năng của các hệ thống tệp và được tạo khi hệ thống tệp được tạo. Để xem Linux UUID, chỉ cần kích hoạt lệnh blkid Lưu ý mã phân vùng GUID và cách thông báo "dữ liệu cơ bản của Microsoft". Vâng, ole Microsoft luôn gặp sự cố, bởi vì đây là phân vùng EXT4, vì vậy không có cách nào để Windows đọc nó, nhưng sẽ xem nó là phân vùng chưa được định dạng. Bạn sẽ không thấy điều này với các bản phát hành hiện tại của gdisk, bởi vì cho đến năm 2011 không có GUID hệ thống tập tin Linux. Bây giờ đã có, vì vậy nếu bạn không sử dụng Linux cũ như của tôi (Mint 13) thì bạn '

GUID duy nhất của phân vùng là những gì bạn sẽ sử dụng trong fstab, như thế này:

PARTUUID = 8C208C30-4E8F-4096-ACF9-858959BABBAA / người dùng dữ liệu ext4, mặc định 0 0


Bí ẩn càng sâu. Nhìn vào một số thiết bị khối, có một thiết bị PTUUID và có UUID và PHẦN MỀM cho mỗi phân vùng; tùy thuộc vào đĩa và có lẽ là công cụ hình thành và phân vùng nó, PHẦN MỀM có được lấy từ đĩa PTUUID hay không. Câu hỏi của tôi là về UUID phân vùng mà bạn có thể kết hợp với PHẦN MỀM với blkid.
AProgrammer

@AProgrammer: Đã thêm một số thông tin vào câu trả lời của tôi.
RubberStamp

1
Ok, tóm lại, có một UUID đĩa mà bạn có thể nhận được với blkid -pcái gọi là PTUUID, có một UUID phân vùng blkidgọi PARTUUID và một số hệ thống tệp có UUID gọi là UUID. Tôi vẫn chưa rõ lý do tại sao tôi phải sử dụng PHẦN MỀM thay vì UUID, ít nhất là ở một số nơi, khi chuyển hệ thống tệp gốc sang khóa USB trên mâm xôi khi hệ thống Linux của tôi chỉ tham chiếu UUID, nhưng tôi không tình nguyện để thực hiện thêm một số thử nghiệm và kiểm tra xem nơi nào thực sự cần có PHẦN MỀM và nơi tôi vẫn có thể sử dụng UUID nếu tôi muốn nhưng tôi đoán rằng chỉ cmdline.txtcần nó.
AProgrammer

Tôi có hai phân vùng trên hai đĩa khác nhau có cùng UUID. Quá nhiều cho "vòng đời của vũ trụ " ...
étale-cohomology

3

Như tôi hiểu nó.

Thuật ngữ UUID nói chung đề cập đến một "định danh duy nhất toàn cầu", được biết đến trong thế giới windows với tên GUID. Có một vài sơ đồ khác nhau nhưng đối với hầu hết các UUID / GUID hiện đại về cơ bản là một số ngẫu nhiên lớn hoặc hàm băm và một vài bit cờ.

Trong trường hợp cụ thể của việc gắn hệ thống tệp trên linux "UUID" giới thiệu đến một mã định danh duy nhất là một phần của siêu dữ liệu được lưu trữ bên trong hệ thống tệp. "PARTUUID" dùng để chỉ một mã định danh duy nhất cho một phân vùng được lưu trữ trong hoặc xuất phát từ bảng phân vùng.

Các định danh duy nhất này có thể hoặc không thể là UUID thực tế. Theo như tôi có thể nói.

  • Đối với các bảng phân vùng GPT, "PHẦN MỀM" là GUID từ bảng phân vùng GPT.
  • Đối với các bảng phân vùng MBR, "PARTUUID" được hình thành bằng cách ghép mã định danh đĩa với số phân vùng
  • Đối với EXT4, trao đổi Linux, BTRFS và các loại hệ thống tệp gốc linux khác, "UUID" là một UUID được lưu trữ trong siêu dữ liệu của hệ thống tệp.
  • Đối với FAT và NTFS, "UUID" dường như là số sê-ri âm lượng, 32 bit cho FAT và 64 bit cho NTFS.

Lưu ý rằng hỗ trợ để gắn hệ thống tập tin gốc bằng "UUID" và "PARTUUID" khác nhau. IIRC hạt nhân chạy mà không có initrd có thể gắn kết bằng "PHẦN MỀM" nhưng không phải bằng "UUID". Các phiên bản cũ hơn của công cụ initramfs có thể được gắn kết bằng "UUID" nhưng không phải là "PHẦN MỀM", các công cụ initramfs gần đây hỗ trợ cả hai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.