Linux md RAID: / dev / md0 बनाम / dev / md / 0


19

नए सिस्टम पर /usr/share/mdadm/mkconf(उत्पन्न /etc/mdadm/mdadm.confकरने के लिए उपयोग की जाने वाली स्क्रिप्ट ) के /dev/md/0बजाय डिवाइस नाम का उपयोग करने के लिए जाता है /dev/md0:

new-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md/0 metadata=1.2 UUID=a0021927:0e4f10bf:2c47dc72:ca0b352e name=unassigned:0

यह उन उपयोगकर्ताओं के लिए कुछ जलन पैदा कर सकता है जो /dev/md0वहां उम्मीद करते हैं, लेकिन जाहिर तौर पर यह ठीक काम करता है क्योंकि सर्वर बिना किसी समस्या के बूट करता है।

में /proc/mdstatउपकरण अभी भी कहा जाता है /dev/md0:

new-system ~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb2[2] sda2[0]
      1953381184 blocks super 1.2 [2/2] [UU]

unused devices: <none>

lsदिखाता है कि /dev/md/0यह एक सहिष्णुता है /dev/md0:

new-system ~ # ls -l /dev/md/0 
lrwxrwxrwx 1 root root 6 Nov 20 14:06 /dev/md/0 -> ../md0

एक और पुराने सिस्टम पर mkconfअभी भी /dev/md0इसके बजाय का उपयोग करता है , और /dev/mdखाली है:

old-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md0 UUID=76472cf5:83fd8e5a:ad617046:69b2ebf1
old-system ~ # ls -l /dev/md
total 0

मैं इन डिवाइस नामों के बीच अंतर जानना चाहता हूं, और मुझे Google पर कोई स्पष्टीकरण नहीं मिल सकता है। है/dev/mdN पुराना नाम है, और डिवाइस नामों mdपर जाने की योजना बना रहा है /dev/md/N? क्या यह परिवर्तन 1.2 मेटाडेटा से संबंधित है (मैंने देखा है कि नया सर्वर md 1.2 का उपयोग कर रहा है, जबकि पुराना अभी भी 990 का उपयोग कर रहा है)?


EDIT 2017-09-11: मुझे लगता है कि Krzysztof Stasiak का जवाब सही है। मैं अब तक इस प्रश्न के बारे में पूरी तरह भूल चुका था। एक परीक्षण के साथ खेलते समय RAID ने पिछले शुक्रवार को मैंने सोचा था कि "md0, md1, md2, ... आदि को याद रखने के बजाय मेरे सरणी का नाम क्यों नहीं दिया गया? आदि जटिल सेटअपों में होता है?", और इसलिए मैंने कोशिश की:

test-server ~ # mdadm --assemble /dev/mdfoobar /dev/loop[01]
mdadm: /dev/mdfoobar is an invalid name for an md device.  Try /dev/md/mdfoobar

और वास्तव में यह काम करता है:

test-server ~ # mdadm --assemble /dev/md/foobar /dev/loop[01]
mdadm: /dev/md/foobar has been started with 2 drives.

test-server ~ # ll /dev/md/foobar 
lrwxrwxrwx 1 root root 6 Sep 11 10:45 /dev/md/foobar -> ../md0

test-server ~ # cat /proc/mdstat 
Personalities : [raid1]
md0 : active (auto-read-only) raid1 loop0[0] loop1[1]
      102272 blocks super 1.2 [2/2] [UU]

unused devices: <none>

(आप भी कर सकते हैं mdadm --assemble foobar DEV...)

man mdadmअनुभाग में एक विस्तृत विवरण है DEVICE NAMES



@frostschutz आह, इसलिए उस से सरणी का नाम mdadm -Eवर्तमान unassigned:0में नए सर्वर पर विभाजित है :, और दूसरा भाग का हिस्सा बन जाता है /dev/md/<name>? तो अगर मैं ऐरे नाम को बदल unassigned:asdfदूं, तो सिमलिंक कहा जाएगा /dev/md/asdf? और वास्तविक डिवाइस को हमेशा कहा जाता है /dev/mdN, जहां एन अगले फ्री नंबर है?
मार्टिन वॉन विटिच

1
आप इसे इस तरह से उपयोग कर सकते हैं, लेकिन कोई भी ऐसा नहीं करता है; यह वास्तव में काम नहीं करता है, क्योंकि आम तौर पर md को एक जीवित सीडी से बनाया जाता है जिसमें आपका होस्ट नाम सेट नहीं होता है, आदि जैसे नाम unassigned:0सिर्फ दिमाग है।
frostschutz

जवाबों:


1

आप अपने नाम के रूप में सरणी का नाम दे सकते हैं (न केवल 0-127) और mdadm 3.0.3 के बाद से आप केवल नाम का उपयोग कर सकते हैं। अगर लगता है कि /dev/md/$nameअधिक लचीलापन या कुछ प्रकार के साफ या समूह सरणियों को बनाने के लिए सबफ़ोल्डर का उपयोग करने के लिए पथ बदल दिया गया था । यदि md सरणी प्रारूप में बनाई गई /dev/mdXहै तो नए प्रारूप के लिए संगतता बनाने के लिए सिमिलिंक जोड़ा गया है।


1

जब डिवाइस के नाम की बात आती है, तो बेहतर udv पूछें । मेरी समझ में,

  1. md%dनामकरण कर्नेल के द्वारा प्रयोग किया जाता है, यह द्वारा चालक सीधे उत्पन्न होता है md.c # L5284 , और उस में प्रयोग किया जाता है /proc/partitionsऔर sysfs। इसलिए, यह अंदर दिखाई देता है/dev

  2. /dev/md/...और /dev/disk/by-id/...udevd द्वारा सहानुभूति के रूप में उत्पन्न होते हैं। मेरे सिस्टम में इसी नियम को रखा गया है /usr/lib/udev/rules.d/63-md-raid-arrays.rules:

    ...
    ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}"
    ...
    

ऐसा लगता है कि udv फ़ाइल mdadm में इस कमिट केopenSUSE 11.1-rc3 अनुसार आती है । मैंने इस फ़ाइल की जाँच की है , लेकिन इसमें सहानुभूति नहीं है ...openSUSE 11.0md/%d


0

संभवतः लिनक्स कर्नेल संस्करण या यूनिक्स प्रणाली के आधार पर मूल पथ भिन्न होता है। /dev/md/Nसंगतता कारणों से प्रतीकात्मक लिंक मौजूद हो सकता है। प्रोग्राम या स्क्रिप्ट जो इस पथ का उपयोग कर सकते हैं /dev/mdN

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