tham chiếu toàn bộ đĩa (/ dev / sda) bằng UUID


9

Trên hệ thống của tôi (Debian), tôi có thể nhìn thấy các UUIDnhận dạng cho tất cả các phân vùng ổ đĩa của tôi (tức là /dev/sda1, dev/sda2, ..)

ls /dev/disk/by-uuid/

Tuy nhiên, tôi không thấy UUIDđịnh danh cho /dev/sdachính nó. Có thể tham khảo toàn bộ đĩa với UUID?

Tôi cần điều này bởi vì tôi muốn tham chiếu một đĩa cụ thể và tôi không thể tin rằng nó sẽ được gọi /dev/sda.

BIÊN TẬP

Giải pháp được đề xuất bởi @don_crissti là tuyệt vời. Tuy nhiên, tôi muốn UUID giống nhau cho tất cả các đĩa cứng của cùng một Model / Nhà sản xuất, không phải là duy nhất theo số sê-ri.

Sử dụng udevadm, tôi có thể thấy các thuộc tính đĩa:

udevadm info -n /dev/sda -a
ATTRS{model}=="Samsung SSD 840 "
ATTRS{vendor}=="0x8086"
ATTRS{class}=="0x010700"
ATTRS{device}=="0x1d6b"
....

Làm cách nào tôi có thể tạo một UUIDtừ các thuộc tính này, để cùng một đĩa Model / Nhà sản xuất sẽ có cùng UUID?


UUID dành cho hệ thống tập tin, không phải phân vùng. Có các PHẦN MỀM cho các phân vùng, nhưng không có gì cho toàn bộ đĩa. /dev/sdaThay vào đó, bạn có thể phải viết một quy tắc udev để đặt tên cố định.
muru 18/2/2015

1
Điều thú vị về điều này là giờ đây đã có UUID trong MBR (ít nhất là nếu nó được tạo bởi Windows) nhưng dường như không có cách nào để sử dụng nó.
Joshua

Câu trả lời:


12

Các liên kết dưới /dev/disk/by-uuid/được tạo bởi udevcác quy tắc dựa trên UUID của hệ thống tệp . Nếu bạn nhìn vào /usr/lib/udev/rules.d/60-persistent-storage.rulesbạn sẽ tìm thấy các mục như:

...... ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"

Để tham chiếu một đĩa bạn có thể sử dụng số sê-ri đĩaENV{ID_SERIAL_SHORT}khóa.
Các udevquy tắc sau đây phù hợp với ổ đĩa với số serial. 0000000013100925DB96và tạo một liên kết tượng trưng có cùng tên dưới /dev/disk/by-uuid/đây:

KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL_SHORT}=="0000000013100925DB96", SYMLINK+="disk/by-uuid/$env{ID_SERIAL_SHORT}"

Đối với câu hỏi khác của bạn ... chắc chắn, bạn luôn có thể sử dụng ENV{ID_MODEL}thay vì ENV{ID_SERIAL_SHORT}và sử dụng một chuỗi tùy chỉnh cho tên liên kết tượng trưng của bạn.
Quy tắc sau khớp với bất kỳ ổ đĩa nào với ID_MODEL= M4-CT128M4SSD2và tạo liên kết tượng trưng M4-SSD-1234567890bên dưới /dev/disk/by-uuid/:

KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_MODEL}=="M4-CT128M4SSD2", SYMLINK+="disk/by-uuid/M4-SSD-1234567890"

Lưu ý rằng điều này hoạt động tốt miễn là chỉ có một ổ đĩa phù hợp với ID_MODEL. Nếu có nhiều ổ đĩa của cùng một mô hình, quy tắc sẽ được áp dụng lại cho mỗi ổ đĩa đó và liên kết tượng trưng sẽ trỏ đến ổ đĩa được phát hiện / thêm vào cuối cùng.


thực sự, tôi muốn giống UUIDnhau cho tất cả các đĩa có cùng Model / Type / Nhà sản xuất. Bạn có tình cờ biết sử dụng quy tắc nào cho việc đó không? Rõ ràng không phải là số sê-ri.
Michael Boies

xin vui lòng xem chỉnh sửa của tôi. Những gì tôi đang cố gắng thực hiện: giả sử tôi HDDbị hỏng, nhưng tôi có đĩa thay thế giống hệt nhau. Tôi thay thế nó và tôi muốn có UUIDnhư trước đây (mặc dù số sê-ri đã thay đổi). Tôi không có ý định sử dụng cả hai đĩa cùng một lúc.
Michael Boies 19/2/2015

@MichaelBoies - bạn có thể trực tiếp thay đổi UUID w / gdisk- nhưng tôi không chắc đó có phải là một ý tưởng hay không. don - trực tiếp thay đổi các liên kết là một cách tốt hơn để làm điều đó hơn là thực sự thay đổi UUID - máy tính có thể sẽ ngừng khởi động.
mikeserv
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.