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?


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.