fare riferimento a tutto il disco (/ dev / sda) usando UUID


9

Sul mio sistema (Debian), posso vedere l' UUIDidentificatore di tutte le partizioni dei miei dischi (ad es /dev/sda1. dev/sda2, ...)

ls /dev/disk/by-uuid/

Tuttavia, non vedo l' UUIDidentificatore per /dev/sdase stesso. È possibile fare riferimento a tutto il disco con UUID?

Ho bisogno di questo perché voglio fare riferimento a un determinato disco e non posso fare affidamento che verrà chiamato /dev/sda.

MODIFICARE

La soluzione suggerita da @don_crissti è eccezionale. Tuttavia, vorrei che l'UUID fosse lo stesso per tutti i dischi rigidi dello stesso modello / produttore, non univoco per numero di serie.

Utilizzando udevadm, posso vedere gli attributi del disco:

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

Come posso generare un UUIDda questi attributi, in modo che lo stesso disco Modello / Produttore abbia lo stesso UUID?


Gli UUID sono per filesystem, non per partizioni. Esistono PARTUUID per le partizioni, ma nulla per interi dischi. Probabilmente dovrai scrivere una regola udev per assegnare /dev/sdaun nome fisso.
Muru,

1
La cosa interessante di questo è che ora c'è un UUID nell'MBR (almeno se è stato creato da Windows) ma apparentemente non c'è modo di usarlo.
Joshua,

Risposte:


12

I collegamenti simbolici sotto /dev/disk/by-uuid/sono creati da udevregole basate sugli UUID dei filesystem . Se guardi /usr/lib/udev/rules.d/60-persistent-storage.rulestroverai voci come:

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

Per fare riferimento a un disco è possibile utilizzare il numero seriale del disco e la ENV{ID_SERIAL_SHORT}chiave.
La seguente udevregola corrisponde all'unità con il numero di serie. 0000000013100925DB96e crea un collegamento simbolico con lo stesso nome sotto /dev/disk/by-uuid/:

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

Per quanto riguarda l'altra domanda ... certo, si può sempre usare ENV{ID_MODEL}al posto di ENV{ID_SERIAL_SHORT}e utilizzare una stringa personalizzata per il vostro nome di collegamento simbolico.
La seguente regola corrisponde a qualsiasi unità con ID_MODEL= M4-CT128M4SSD2e crea un collegamento simbolico M4-SSD-1234567890sotto /dev/disk/by-uuid/:

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

Si noti che questo funziona bene fintanto che c'è solo un'unità corrispondente al ID_MODEL. Se sono presenti più unità dello stesso modello, la regola viene nuovamente applicata per ciascuna di esse e il collegamento simbolico punterà all'ultima unità rilevata / aggiunta.


in realtà, vorrei che UUIDfosse lo stesso per tutti i dischi dello stesso modello / tipo / produttore. Sai per caso quale regola usare per quello? Ovviamente non il numero di serie.
Michael Boies,

per favore vedi la mia modifica. Quello che sto cercando di realizzare: diciamo che i miei HDDguasti, ma ho un disco identico sostitutivo. Lo sostituisco e vorrei avere lo stesso UUIDdi prima (anche se il numero di serie è cambiato). Non intendo utilizzare entrambi i dischi contemporaneamente.
Michael Boies,

@MichaelBoies - puoi modificare direttamente l'UUID con gdisk- ma non sono sicuro che sia una buona idea. don - alterare direttamente i collegamenti è un modo migliore per farlo che alterare l'UUID - il computer probabilmente smetterebbe di avviarsi.
Mikeserv,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.