यूडीआईडी ​​से ब्लकिड और एमएडएम के बीच अंतर?


26

क्या कोई यूयूआईडी द्वारा बताई गई blkidऔर के बीच अंतर की व्याख्या कर सकता है mdadm? हमारे एक CentOS सिस्टम पर, उदाहरण के लिए:

[root@server ~]# blkid | grep /dev/md1
/dev/md1: UUID="32cb0a6e-8148-44e9-909d-5b23df045bd1" TYPE="ext4"

[root@server ~]# mdadm --detail /dev/md1 | grep UUID
UUID : f204c558:babf732d:85bd7296:bbfebeea

वे अलग क्यों हैं और हम यूयूआईडी का उपयोग कैसे करेंगे mdadm?

मैं समझता हूं कि हम tune2fsविभाजन के लिए यूयूआईडी को बदलने के लिए उपयोग करेंगे (जो कि जो लौटा है उसे बदल देगा blkid) लेकिन यह सुनिश्चित नहीं है कि mdadmउपयोग करने के तरीके को कैसे बदलना है ।

जवाबों:


23

पहले एक mdब्लॉक डिवाइस पर ext4 फाइल सिस्टम के UUID की रिपोर्ट करता है। यह सिस्टम पर उपलब्ध फाइल सिस्टम के बीच फाइल सिस्टम को विशिष्ट रूप से पहचानने में मदद करता है। यह फाइलसिस्टम की संरचना में संग्रहीत है, जो md डिवाइस पर संग्रहीत डेटा में है।

दूसरा एक RAID डिवाइस का UUID है। यह md सबसिस्टम को विशिष्ट RAID युक्ति को विशिष्ट रूप से पहचानने में मदद करता है। विशेष रूप से, यह उन सभी ब्लॉक उपकरणों को पहचानने में मदद करता है जो RAID सरणी से संबंधित हैं। इसे सरणी के मेटाडेटा (प्रत्येक सदस्य पर) में संग्रहीत किया जाता है। सरणी सदस्यों के पास अपना UUID भी होता है (md सिस्टम में, उनके पास विभाजन UUIDs भी हो सकते हैं यदि वे GPT विभाजन हैं (जो स्वयं GPT विभाजन तालिका में संग्रहीत होंगे), या LVM वॉल्यूम ...)।

blkidथोड़ा भ्रामक है, क्योंकि यह जो रिटर्न देता है वह डिवाइस पर संग्रहीत संरचना की आईडी है (इस तरह की संरचनाओं के लिए यह अधिकांश फाइल सिस्टम, एलवीएम सदस्यों और स्वैप डिवाइसों के बारे में जानता है)। यह भी ध्यान दें कि समान यूयूआईडी (उदाहरण के लिए एलवीएम स्नैपशॉट) के साथ संरचनाओं के साथ ब्लॉक डिवाइस होना असामान्य नहीं है। और एक ब्लॉक डिवाइस में कुछ भी शामिल हो सकता है, जिसमें ऐसी चीजें शामिल हैं जिनकी संरचना में एक यूयूआईडी शामिल नहीं है।

इसलिए, उदाहरण के लिए, आपके पास GPT विभाजन के साथ 3 ड्राइव वाला सिस्टम हो सकता है। उन ड्राइवों में एक वर्ल्ड वाइड नाम हो सकता है जो इसे विशिष्ट पहचान देता है। मान लीजिए कि 3 ड्राइव एक-एक पार्टीशन के साथ विभाजित हैं ( /dev/sd[abc]1)। प्रत्येक विभाजन में एक GPT UUID होगा जो GPT विभाजन तालिका में संग्रहीत है।

यदि उन विभाजनों को एक md RAID5 सरणी बनाते हैं। प्रत्येक को RAID सदस्य के रूप में एक md UUID मिलेगा, और सरणी को md RAID युक्ति के रूप में एक UUID मिलेगा।

यही कारण है कि /dev/md0आगे MSDOS या GPT प्रकार विभाजन के साथ विभाजित किया जा सकता। उदाहरण के लिए, हम /dev/md0p1एक GPT UUID (GPT विभाजन तालिका में संग्रहीत डेटा के साथ / dev / md0 के डेटा में संग्रहीत) हो सकता है।

यह बदले में LVM के लिए एक भौतिक आयतन हो सकता है। जैसे कि यह एक पीवी यूयूआईडी मिलेगा। वॉल्यूम समूह में एक वीजी यूयूआईडी भी होगा।

उस वॉल्यूम समूह में, आप तार्किक वॉल्यूम बनाते हैं, प्रत्येक में LV UUID मिलता है।

उन LVs (जैसे /dev/VG/LV) में से एक पर, आप एक ext4 फाइल सिस्टम बना सकते हैं। उस फाइलसिस्टम को एक ext4 UUID मिलेगा।

blkid /dev/VG/LVउस फाइलसिस्टम का UUID आपको (ext4) मिलेगा। लेकिन वीजी वॉल्यूम के अंदर एक विभाजन के रूप में, इसे एक विभाजन यूयूआईडी भी मिलेगा (कुछ विभाजन योजना जैसे एमएसडीओएस / एमबीआर में यूयूआईडी नहीं है)। वह वॉल्यूम समूह सदस्यों के पीवी से बना है जो स्वयं अन्य ब्लॉक डिवाइस हैं। blkid /dev/md0p1आप पीवी UUID दे देंगे। इसमें GPT तालिका में एक विभाजन UUID भी है /dev/md0/dev/md0खुद को अन्य ब्लॉक डिवाइस से बनाया गया है। blkid /dev/sda1छापा सदस्य UUID लौटाएगा। इसमें GPT तालिका में एक विभाजन UUID भी है /dev/sda


हम एक RAID युक्ति के UUID को किस तरह से बदलेंगे mdadm? हम बस एक सर्वर और यूयूआईडी की फिर से नकल कर रहे हैं, इसलिए हम पिछले यूयूआईडी को पुनर्स्थापित करना चाहते हैं ताकि हमें सभी कॉन्फ़िगरेशन फ़ाइलों को बदलने की आवश्यकता न हो। अनिवार्य रूप से, /dev/md0एक नया यूयूआईडी है और हम इसे पुराने (एक बैकअप से पहचाना गया) लौटना चाहते हैं ताकि सिस्टम को और बदलावों की आवश्यकता के बिना बूट किया जा सके।
क्रिस

@ क्रिस, एमडी यूयूआईडी (देखें man mdadm) या ext4 यूयूआईडी (देखें man tune2fs)? रूट फाइल सिस्टम खोजने के बारे में बूट समस्या है या initramfs में संग्रहीत mdadm.conf के आधार पर RAID सरणी के संयोजन के बारे में है। किसी भी तरह से, यह UUIDs के साथ मिंगल की तुलना में mdadm.conf या fstab / grub.cfg को अपडेट करने के लिए मुझे सरल लगता है।
स्टीफन चेज़लस

एमडी यूयूआईडी - हमने सर्वर को बैकअप से बहाल किया। क्या आप जानते हैं कि RAID युक्ति का UUID कैसे अपडेट किया जाता है? मैं उस जानकारी को मैनपेज में नहीं देख सकता। हम इसे काम करने के लिए सबसे सरल तरीके से काम करने की कोशिश कर रहे हैं (पुनर्स्थापना प्रक्रिया का परीक्षण)।
क्रिस

@ क्रिस, आपको उसके लिए एक और सवाल उठाना चाहिए।
स्टीफन चेज़लस

@ क्रिस: आप चाहते हैं कि यूयूआईडी अलग हो। यदि mdadm कई छापे मानता है, भले ही वह अलग-अलग छापे हो (यूयूआईडी संघर्ष के कारण), तो आपको वास्तविक समस्याएं होंगी।
फ्रॉस्ट्सचुट्ज़

4

अलग-अलग यूयूआईडी को पहले ही समझाया गया था। इतना ही नहीं फाइलसिस्टम उनके पास है। बस अलग-अलग चीजों के लिए यूयूआईडी हैं: छापे सरणी, डिवाइस, विभाजन, एलयूकेएस कंटेनर, एलवीएम पीवी के ... और अंत में फाइल सिस्टम।

व्यक्तिगत रूप से मुझे क्या गुस्सा आता है, यहां तक ​​कि उन यूयूआईडी को प्रारूपित करने का तरीका भी अलग है।

blkid:

# blkid /dev/sda1
/dev/sda1: 
UUID="d8b8b4e5-e47b-2e45-2093-cd36f654020d"
UUID_SUB="3c3e6eac-2139-3f7a-16b7-57280934d88e"
PARTUUID="6a89cedf-69e1-40db-b08c-1c8e45af59f5" 

mdadm:

# mdadm --examine /dev/sda1 | grep UUID
     Array UUID : d8b8b4e5:e47b2e45:2093cd36:f654020d
    Device UUID : 3c3e6eac:21393f7a:16b75728:0934d88e

आप देख सकते हैं, वे एक ही UUIDs रहे हैं, लेकिन blkidउन्हें डैश से प्रिंट -जबकि mdadmका उपयोग करता है कोलन :। तो आप d8b8b4e5-e47b-2e45-2093-cd36f654020dबनाम d8b8b4e5:e47b2e45:2093cd36:f654020d

बहुत कष्टप्रद है, खासकर यदि आप स्क्रिप्ट में यूयूआईडी के साथ काम करना चाहते हैं। यह स्पष्ट नहीं है कि एक प्रारूपण से दूसरे में कैसे परिवर्तित किया जाए।


एस /: / - / जी या इसके विपरीत के बारे में क्या? ;)
थिएमस्टर 22

वास्तव में बृहदान्त्र :या पानी -का छींटा वहाँ बस इतना है कि मनुष्य लंबे यूयूआईडी को विखंडू में पढ़ सकते हैं और बीच में कहीं खो नहीं सकते हैं। यूयूआईडी वास्तव में एक द्विआधारी संख्या है, और इसमें कोई डैश या कॉलोन नहीं है। यह लिनक्स में एक अहस्ताक्षरित वर्ण सरणी के रूप में कार्यान्वित किया जाता है unsigned char uuid_out[16]:। स्पष्ट रूप से UUID युक्ति में भी भिन्न और संस्करणों का विचार है , जिसे हम सबसे महत्वपूर्ण बाइट uuid_out[6]को 4 पर सेट करके कार्यान्वित देख सकते हैं ।
ट्रिनिट्रॉनएक्स

-1

"32cb0a6e-8148-44e9-909d-5b23df045bd1" के ऊपर ब्लकि यूडीआईडी ​​सही है, यही वह है जो ओएस RAID सरणी को खोजने के लिए उपयोग करेगा।

mdadm की अपनी "आंतरिक" UUID है जिसका उपयोग सीधे OS द्वारा नहीं किया जाता है और आप mdadm.conf फ़ाइल में इसका उपयोग करते हैं जैसे:

"ARRAY / देव / md1 स्तर = raid1 संख्या-उपकरण = 2 uuid = f204c558: babf732d: 85bd7296: bbfebeea"

mdadm को UUID से कुछ भी कॉल नहीं करना चाहिए जब वह एक से अलग हो जो blkid और OS को पहचानता है। शायद इसे भ्रम से बचने के लिए mduuid या कुछ और कहा जाना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.