odwołać się do całego dysku (/ dev / sda) przy użyciu UUID

9

W moim systemie (Debian), widzę UUIDidentyfikator dla wszystkich moich dysków partycji (czyli /dev/sda1, dev/sda2..)

ls /dev/disk/by-uuid/

Jednak nie widzę UUIDidentyfikatora dla /dev/sdasiebie. Czy można odwoływać się do całego dysku UUID?

Potrzebuję tego, ponieważ chcę odwoływać się do konkretnego dysku i nie mogę polegać, że zostanie wywołany /dev/sda.

EDYTOWAĆ

Rozwiązanie sugerowane przez @don_crissti jest świetne. Chciałbym jednak, aby identyfikator UUID był taki sam dla wszystkich dysków twardych tego samego modelu / producenta, a nie unikalny według numeru seryjnego.

Używając udevadm, widzę atrybuty dysku:

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

Jak mogę wygenerować UUIDz tych atrybutów, aby ten sam dysk Model / Producent miał taki sam UUID?

Michael Boies
źródło
Identyfikatory UUID dotyczą systemów plików, a nie partycji. Istnieją partuidy dla partycji, ale nic dla całych dysków. Prawdopodobnie będziesz musiał napisać regułę udev, aby nadać /dev/sdastałą nazwę.
muru
1
Co ciekawe, w MBR znajduje się teraz UUID (przynajmniej jeśli został stworzony przez Windows), ale najwyraźniej nie można go użyć.
Joshua

Odpowiedzi:

12

Poniższe dowiązania symboliczne /dev/disk/by-uuid/są tworzone przez udevreguły oparte na identyfikatorach UUID systemów plików . Jeśli na nie spojrzysz /usr/lib/udev/rules.d/60-persistent-storage.rules, znajdziesz wpisy takie jak:

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

Aby odwołać się do dysku, możesz użyć numeru seryjnego dysku i ENV{ID_SERIAL_SHORT}klucza.
Poniższa udevreguła dopasowuje dysk do numeru seryjnego. 0000000013100925DB96i tworzy dowiązanie symboliczne o tej samej nazwie pod /dev/disk/by-uuid/:

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

Co do twojego drugiego pytania ... jasne, zawsze możesz użyć ENV{ID_MODEL}zamiast ENV{ID_SERIAL_SHORT}i użyć niestandardowego ciągu dla nazwy dowiązania symbolicznego.
Poniższa reguła pasuje do dowolnego dysku z ID_MODEL= M4-CT128M4SSD2i tworzy dowiązanie symboliczne M4-SSD-1234567890pod /dev/disk/by-uuid/:

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

Pamiętaj, że działa to dobrze, o ile tylko jeden dysk pasuje do ID_MODEL. Jeśli istnieje wiele napędów tego samego modelu, reguła zostanie zastosowana ponownie dla każdego z nich, a dowiązanie symboliczne wskaże ostatnio wykryty / dodany dysk.

don_crissti
źródło
tak naprawdę chciałbym, UUIDaby były takie same dla wszystkich dysków tego samego modelu / typu / producenta. Czy zdarza ci się wiedzieć, jakiej reguły użyć do tego? Oczywiście nie jest to numer seryjny.
Michael Boies,
proszę zobaczyć moją edycję. Co próbuję osiągnąć: powiedzmy, że się HDDpsuje, ale mam identyczny dysk zastępczy. Zastępuję go i chciałbym mieć taki sam UUIDjak poprzednio (pomimo zmiany numeru seryjnego). Nie zamierzam używać obu dysków jednocześnie.
Michael Boies,
@MichaelBoies - możesz bezpośrednio zmienić UUID w / gdisk- ale nie jestem pewien, czy to taki dobry pomysł. don - bezpośrednia zmiana linków jest o wiele lepszym sposobem na zrobienie tego niż faktyczna zmiana UUID - komputer prawdopodobnie przestałby się uruchamiać.
mikeserv