UUID का उपयोग करके संपूर्ण डिस्क (/ dev / sda) संदर्भ


9

अपने सिस्टम (डेबियन) पर, मैं देख सकता हूँ UUIDमेरी डिस्क विभाजन के सभी के लिए पहचानकर्ता (यानी /dev/sda1, dev/sda2, ..)

ls /dev/disk/by-uuid/

हालाँकि, मुझे स्वयं के UUIDलिए पहचानकर्ता दिखाई नहीं देता /dev/sdaहै। क्या संपूर्ण डिस्क को संदर्भित करना संभव है UUID?

मुझे इसकी आवश्यकता है क्योंकि मैं एक विशेष डिस्क को संदर्भित करना चाहता हूं, और मैं भरोसा नहीं कर सकता कि इसे कहा जाएगा /dev/sda

संपादित करें

@Don_crissti द्वारा सुझाया गया समाधान बढ़िया है। हालांकि, मैं चाहूंगा कि यूयूआईडी एक ही मॉडल / निर्माता के सभी हार्ड डिस्क के लिए समान हो, न कि सीरियल नंबर द्वारा अद्वितीय।

उपयोग करके udevadm, मैं डिस्क विशेषताएँ देख सकता हूँ:

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

मैं UUIDइन विशेषताओं से कैसे उत्पन्न कर सकता हूं , ताकि एक ही मॉडल / निर्माता डिस्क में समान हो UUID?


UUIDs फ़ाइल सिस्टम के लिए हैं, विभाजन के नहीं। विभाजन के लिए PARTUUID हैं, लेकिन पूरे डिस्क के लिए कुछ भी नहीं है। आपको /dev/sdaइसके बजाय एक निश्चित नाम देने के लिए एक udv नियम लिखना होगा।
मूरू

1
इसके बारे में दिलचस्प बात यह है कि अब एमबीआर में एक यूयूआईडी है (कम से कम अगर यह विंडोज द्वारा बनाया गया था), लेकिन प्रतीत होता है कि इसका उपयोग करने का कोई तरीका नहीं है।
जोशुआ

जवाबों:


12

के तहत सहानुभूति फाइल सिस्टम UUIDs के आधार पर नियमों /dev/disk/by-uuid/द्वारा बनाई गई हैं । यदि आप देखेंगे तो आपको प्रविष्टियाँ मिलेंगी जैसे:udev/usr/lib/udev/rules.d/60-persistent-storage.rules

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

एक डिस्क को संदर्भित करने के लिए आप डिस्क क्रम संख्या और ENV{ID_SERIAL_SHORT}कुंजी का उपयोग कर सकते हैं ।
निम्नलिखित udevनियम सीरियल नंबर के साथ ड्राइव से मेल खाता है। 0000000013100925DB96और उसी नाम के साथ एक सिमलिंक बनाता है /dev/disk/by-uuid/:

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

अपने अन्य प्रश्न के रूप में ... यकीन है, तो आप हमेशा इस्तेमाल कर सकते हैं ENV{ID_MODEL}के बजाय ENV{ID_SERIAL_SHORT}और अपने सिमलिंक नाम के लिए एक कस्टम स्ट्रिंग का उपयोग करें।
निम्न नियम ID_MODEL= के साथ किसी भी ड्राइव से मेल खाता है M4-CT128M4SSD2और इसके M4-SSD-1234567890तहत एक सिमलिंक बनाता है /dev/disk/by-uuid/:

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

ध्यान दें कि यह तब तक ठीक काम करता है जब तक कि केवल एक ड्राइव से मेल खाता हो ID_MODEL। यदि एक ही मॉडल के कई ड्राइव हैं, तो नियम उनमें से प्रत्येक के लिए फिर से लागू किया जाता है और सिमलिंक अंतिम पता / जोड़ा ड्राइव को इंगित करेगा।


वास्तव में, मैं UUIDएक ही मॉडल / प्रकार / निर्माता के सभी डिस्क के लिए समान होना चाहूंगा । क्या आपको पता है कि किस नियम का उपयोग करना है? जाहिर है सीरियल नंबर नहीं।
माइकल बोय्स

कृपया मेरा संपादन देखें। जो मैं पूरा करने की कोशिश कर रहा हूं: मैं कहता हूं कि मेरा HDDब्रेक डाउन हो गया है, लेकिन मेरे पास एक समान डिस्क है। मैं इसे प्रतिस्थापित करता हूं और मैं पहले की तरह ही UUID(भले ही सीरियल नंबर बदल गया हो) करना चाहूंगा । मेरा एक ही समय में दोनों डिस्क का उपयोग करने का इरादा नहीं है।
माइकल बोय्स

@MichaelBoies - आप सीधे UUID w / को बदल सकते हैं gdisk- लेकिन मुझे यकीन नहीं है कि यह इतना अच्छा विचार है। डॉन - सीधे लिंक को बदलना, यूयूआईडी को वास्तव में बदलने की तुलना में इसे करने का एक बेहतर तरीका है - कंप्यूटर शायद बूट करना बंद कर देगा।
25
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.