referensi seluruh disk (/ dev / sda) menggunakan UUID

9

Pada sistem saya (Debian), saya bisa melihat UUIDidentifier untuk semua partisi disk saya (yaitu /dev/sda1, dev/sda2, ..)

ls /dev/disk/by-uuid/

Namun, saya tidak melihat UUIDpengenal untuk /dev/sdadirinya sendiri. Apakah mungkin untuk merujuk seluruh disk dengan UUID?

Saya memerlukan ini karena saya ingin referensi disk tertentu, dan saya tidak dapat mengandalkannya akan dipanggil /dev/sda.

EDIT

Solusi yang disarankan oleh @don_crissti sangat bagus. Namun, saya ingin UUID sama untuk semua hard disk dari Model / Pabrikan yang sama, tidak unik dengan nomor seri.

Dengan menggunakan udevadm, saya dapat melihat atribut disk:

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

Bagaimana saya dapat menghasilkan UUIDdari atribut ini, sehingga disk Model / Produsen yang sama akan memiliki yang sama UUID?

Michael Boies
sumber
UUID adalah untuk sistem file, bukan partisi. Ada PARTUUID untuk partisi, tetapi tidak ada untuk seluruh disk. Anda mungkin harus menulis aturan udev untuk memberikan /dev/sdanama tetap.
muru
1
Yang menarik dari ini adalah sekarang ada UUID di MBR (setidaknya jika itu dibuat oleh Windows) tetapi sepertinya tidak ada cara untuk menggunakannya.
Joshua

Jawaban:

12

Symlinks di bawah /dev/disk/by-uuid/ini dibuat oleh udevaturan berdasarkan sistem file UUID. Jika Anda melihat /usr/lib/udev/rules.d/60-persistent-storage.rulesAnda akan menemukan entri seperti:

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

Untuk referensi disk Anda bisa menggunakan nomor seri disk dan ENV{ID_SERIAL_SHORT}kunci. Aturan
berikut udevcocok dengan drive dengan no seri. 0000000013100925DB96dan membuat symlink dengan nama yang sama di bawah /dev/disk/by-uuid/:

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

Mengenai pertanyaan Anda yang lain ... tentu saja, Anda selalu dapat menggunakan dan ENV{ID_MODEL}bukannya ENV{ID_SERIAL_SHORT}menggunakan string khusus untuk nama symlink Anda.
Aturan berikut cocok dengan sembarang drive dengan ID_MODEL= M4-CT128M4SSD2dan membuat symlink di M4-SSD-1234567890bawah /dev/disk/by-uuid/:

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

Perhatikan bahwa ini berfungsi dengan baik selama hanya ada satu drive yang cocok dengan ID_MODEL. Jika ada beberapa drive dari model yang sama, aturan diterapkan lagi untuk masing-masing dan symlink akan menunjuk ke drive yang terakhir terdeteksi / ditambahkan.

don_crissti
sumber
sebenarnya, saya ingin yang UUIDsama untuk semua disk dari Model / Jenis / Pabrikan yang sama. Apakah Anda tahu aturan apa yang digunakan untuk itu? Jelas bukan nomor seri.
Michael Boies
silakan lihat edit saya. Apa yang saya coba capai: katakan saja saya HDDrusak, tapi saya punya penggantian disk identik. Saya menggantinya dan saya ingin memiliki yang sama UUIDseperti sebelumnya (meskipun nomor seri telah berubah). Saya tidak bermaksud menggunakan kedua disk secara bersamaan.
Michael Boies
@MichaelBoies - Anda dapat langsung mengubah UUID dengan / gdisk- tapi saya tidak yakin apakah itu ide yang bagus. don - secara langsung mengubah tautan adalah cara yang lebih baik untuk melakukannya daripada benar-benar mengubah UUID - komputer mungkin akan berhenti booting.
mikeserv