référencer le disque entier (/ dev / sda) à l'aide de l'UUID

9

Sur mon système (Debian), je peux voir l' UUIDidentifiant de toutes mes partitions de disques (c'est /dev/sda1-à- dire dev/sda2, ..)

ls /dev/disk/by-uuid/

Cependant, je ne vois pas l' UUIDidentifiant pour /dev/sdalui-même. Est-il possible de référencer un disque entier avec UUID?

J'en ai besoin car je veux référencer un disque particulier et je ne peux pas compter qu'il sera appelé /dev/sda.

ÉDITER

La solution proposée par @don_crissti est excellente. Cependant, je voudrais que l'UUID soit le même pour tous les disques durs du même modèle / fabricant, pas unique par son numéro de série.

En utilisant udevadm, je peux voir les attributs du disque:

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

Comment puis-je générer un à UUIDpartir de ces attributs, afin que le même disque de modèle / fabricant ait le même UUID?

Michael Boies
la source
Les UUID sont destinés aux systèmes de fichiers, pas aux partitions. Il existe des PARTUUID pour les partitions, mais rien pour les disques entiers. Vous devrez probablement écrire une règle udev pour donner /dev/sdaun nom fixe à la place.
muru
1
Ce qui est intéressant, c'est qu'il y a maintenant un UUID dans le MBR (du moins s'il a été créé par Windows) mais apparemment aucun moyen de l'utiliser.
Joshua

Réponses:

12

Les liens symboliques sous /dev/disk/by-uuid/sont créés par des udevrègles basées sur les UUID des systèmes de fichiers . Si vous regardez, /usr/lib/udev/rules.d/60-persistent-storage.rulesvous trouverez des entrées comme:

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

Pour référencer un disque, vous pouvez utiliser le numéro de série du disque et la ENV{ID_SERIAL_SHORT}clé.
La udevrègle suivante fait correspondre le lecteur au numéro de série. 0000000013100925DB96et crée un lien symbolique du même nom sous /dev/disk/by-uuid/:

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

Quant à votre autre question ... bien sûr, vous pouvez toujours utiliser ENV{ID_MODEL}au lieu de ENV{ID_SERIAL_SHORT}et utiliser une chaîne personnalisée pour votre nom de lien symbolique.
La règle suivante correspond à n'importe quel lecteur avec ID_MODEL= M4-CT128M4SSD2et crée un lien symbolique M4-SSD-1234567890sous /dev/disk/by-uuid/:

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

Notez que cela fonctionne bien tant qu'il n'y a qu'un seul lecteur correspondant à ID_MODEL. S'il existe plusieurs lecteurs du même modèle, la règle est appliquée à nouveau pour chacun d'eux et le lien symbolique pointera vers le dernier lecteur détecté / ajouté.

don_crissti
la source
en fait, j'aimerais que ce UUIDsoit le même pour tous les disques du même modèle / type / fabricant. Savez-vous par hasard quelle règle utiliser pour cela? Évidemment pas le numéro de série.
Michael Boies
s'il vous plaît voir mon montage. Ce que j'essaye d'accomplir: disons que ma HDDpanne tombe en panne, mais j'ai un disque de remplacement identique. Je le remplace et j'aimerais avoir le même UUIDqu'avant (même si le numéro de série a changé). Je n'ai pas l'intention d'utiliser les deux disques en même temps.
Michael Boies
@MichaelBoies - vous pouvez modifier directement l'UUID avec gdisk- mais je ne sais pas si c'est une si bonne idée. don - modifier directement les liens est une meilleure façon de le faire que de modifier réellement l'UUID - l'ordinateur arrêterait probablement le démarrage.
mikeserv