referenciar o disco inteiro (/ dev / sda) usando UUID

9

No meu sistema (Debian), eu posso ver o UUIDidentificador para todos os meus partições de discos (ou seja /dev/sda1, dev/sda2, ..)

ls /dev/disk/by-uuid/

No entanto, não vejo o UUIDidentificador por /dev/sdasi só. É possível fazer referência a todo o disco UUID?

Preciso disso porque quero fazer referência a um disco específico e não posso confiar que ele será chamado /dev/sda.

EDITAR

A solução sugerida por @don_crissti é ótima. No entanto, gostaria que o UUID fosse o mesmo para todos os discos rígidos do mesmo modelo / fabricante, não exclusivo pelo número de série.

Usando udevadm, posso ver os atributos do disco:

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

Como posso gerar um UUIDdesses atributos, para que o mesmo disco Modelo / Fabricante tenha o mesmo UUID?

Michael Boies
fonte
UUIDs são para sistemas de arquivos, não para partições. Existem PARTUUIDs para partições, mas nada para discos inteiros. Você provavelmente precisará escrever uma regra do udev para fornecer /dev/sdaum nome fixo.
muru
1
O que é interessante sobre isso é que agora existe um UUID no MBR (pelo menos se ele foi criado pelo Windows), mas aparentemente não há como usá-lo.
1937 Joshua

Respostas:

12

Os links simbólicos abaixo /dev/disk/by-uuid/são criados por udevregras baseadas nos UUIDs dos sistemas de arquivos . Se você olhar /usr/lib/udev/rules.d/60-persistent-storage.rules, encontrará entradas como:

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

Para fazer referência a um disco, você pode usar o número de série e a ENV{ID_SERIAL_SHORT}chave.
A udevregra a seguir corresponde à unidade com o número de série. 0000000013100925DB96e cria um link simbólico com o mesmo nome em /dev/disk/by-uuid/:

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

Quanto à sua outra pergunta ... claro, você sempre pode usar em ENV{ID_MODEL}vez de ENV{ID_SERIAL_SHORT}e usar uma string personalizada para o seu nome do link simbólico.
A regra a seguir corresponde a qualquer unidade com ID_MODEL= M4-CT128M4SSD2e cria um link simbólico M4-SSD-1234567890em /dev/disk/by-uuid/:

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

Observe que isso funciona bem desde que haja apenas uma unidade correspondente à ID_MODEL. Se houver várias unidades do mesmo modelo, a regra será aplicada novamente para cada uma delas e o link simbólico apontará para a última unidade detectada / adicionada.

don_crissti
fonte
na verdade, eu gostaria que UUIDfosse o mesmo para todos os discos do mesmo modelo / tipo / fabricante. Você sabe qual regra usar para isso? Obviamente não é o número de série.
Michael Boies
por favor, veja minha edição. O que estou tentando realizar: digamos que minhas HDDquebras, mas tenho disco idêntico de substituição. Substituí-lo e gostaria de ter o mesmo de UUIDantes (mesmo que o número de série tenha mudado). Não pretendo usar os dois discos ao mesmo tempo.
Michael Boies
@ MichaelBoies - você pode alterar diretamente o UUID w / gdisk- mas não tenho certeza se é uma boa idéia. don - alterar diretamente os links é uma maneira muito melhor de fazê-lo do que realmente alterar o UUID - o computador provavelmente pararia de inicializar.
mikeserv