F.3. RAID-आधारित और बहुपथ भंडारण विन्यस्त करने के लिए mdadm का प्रयोग

raidtools संकुल समुच्चय युक्त अन्य उपकरण के समान, mdadm समादेश का प्रयोग बहु युक्ति सेट के नियंत्रण से जुड़ी सभी आवश्यक कार्यों को करने के लिए किया जा सकता है. यह खंड बताता है कि कैसे mdadm का प्रयोग किया जा सकता है:

F.3.1. mdadm से RAID युक्ति बनाना

RAID युक्ति बनाने के लिए, /etc/mdadm.conf को उचित DEVICE और ARRAY मानों को परिभाषित करने के लिए संपादित करें.

DEVICE /dev/sd[abcd]1
ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1

इस उदाहरण में, DEVICE रेखा पारंपरिक फाइल नाम (ज्यादा जानकारी के लिए glob(7) को देखें) का प्रयोग निम्न SCSI युक्तियों को परिभाषित करने के लिए कर रही है:

ARRAY रेखा एक RAID युक्ति (/dev/md0) को परिभाषित करती है जो DEVICE रेखा के द्वारा SCSI युक्तियों को शामिल करती है.

निर्माण के पूर्व या किसी RAID युक्तियों के प्रयोग के पहले, /proc/mdstat फाइल कोई सक्रिय RAID युक्तियां नहीं दिखाती है:

Personalities :
read_ahead not set
Event: 0
unused devices: <none>

आगे, उपर्युक्त विन्यास और RAID 0 सरणी बनाने के लिए mdadm समादेश का प्रयोग करें

mdadm -C /dev/md0 --level=raid0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 \
/dev/sdd1
Continue creating array? yes
mdadm: array /dev/md0 started.

बनाने के बाद, RAID युक्ति को प्रस्थिति सूचना देने के लिए किसी भी समय पूछा जा सकता है. निम्न उदाहरण mdadm --detail /dev/md0 समादेश का आउटपुट दिखाता है.

/dev/md0:
Version : 00.90.00
Creation Time : Mon Mar  1 13:49:10 2004
Raid Level : raid0
Array Size : 15621632 (14.90 GiB 15.100 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Mon Mar  1 13:49:10 2004
State : dirty, no-errors
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Chunk Size : 64K

Number   Major   Minor   RaidDevice State
0       8        1        0      active sync   /dev/sda1
1       8       17        1      active sync   /dev/sdb1
2       8       33        2      active sync   /dev/sdc1
3       8       49        3      active sync   /dev/sdd1
UUID : 25c0f2a1:e882dfc0:c0fe135e:6940d932
Events : 0.1

F.3.2. mdadm से बहुपथ युक्ति बनाना

RAID सरणी निर्माण के अलावे, mdadm का प्रयोग व्यक्तिगत SCSI LUNs (डिस्क चालन) में एक से ज्यादा I/O पथ हार्डवेयर समर्थन का लाभ के लिए भी प्रयोग किया जा सकता है. बहुपथ भंडारण का लक्ष्य हार्डवेयर विफलता या व्यक्तिगत पथ संतृप्ति की स्थिति में सतत आंकड़ा उपलब्धता है . चूंकि यह विन्यास विविध पथ (प्रत्येक एक स्वतंत्र आभासी नियंत्रक के रूप में कार्य करता है) को साझा SCSI LUN (डिस्क चालन) के अभिगम के लिए धारण करती है, Linux कर्नेल प्रत्येक साझा चालन को एकबार प्रत्येक पथ से "होकर" खोजती है. दूसरे शब्दों में, SCSI LUN (डिस्क चालन) जो इस रूप में /dev/sda जाना जाता है, को /dev/sdb, /dev/sdc इस रूप में अभिगम किया जा सकता है, और विशिष्ट विन्यास पर निर्भर करते हुए क्रमशः इसी प्रकार.

एकमात्र युक्ति, जो अभिगम किया जा सके अगर I/O पथ विफल होता है या संतृप्त हो जाता है को उपलब्ध कराने के लिए, mdadm इसके ––level विकल्प में एक अतिरिक्त पैरामीटर शामिल करती है. यह पैरामीटर — multipath — md स्तर को Linux कर्नेल में I/O आग्रह को I/O पथ विफलता की स्थिति में एक पथ से दूसरे में जाने के लिए निर्देशित करती है.

बहुपथ युक्ति बनाने के लिए, /etc/mdadm.conf फाइल को DEVICE और ARRAY पंक्तियों को मानों को परिभाषित करने के लिए संपादित करें जो आपके हार्डवेयर विन्यास को प्रतिविंबित करता है.

नोटनोट
 

पहले के RAID उदाहरण (जहां /etc/mdadm.conf में निर्दिष्ट प्रत्येक युक्ति को भौतिक डिस्क चालन को दर्शाना चाहिए) के विपरीत इस फाइल का प्रत्येक युक्ति समान साझा डिस्क चालन रेफर करता है.

बहुपथ युक्ति को बनाने के लिए प्रयुक्त समादेश RAID युक्ति के लिए प्रयुक्त के समान है; multipath पैरामीटर के साथ RAID स्तर पैरामीटर का प्रतिस्थापन ही अंतर है.

mdadm -C /dev/md0 --level=multipath --raid-devices=4 /dev/sda1 /dev/sdb1  
/dev/sdc1 /dev/sdd1
Continue creating array? yes
mdadm: array /dev/md0 started.

इस mdadm समादेश रेखा की लंबाई के कारण यह दो पंक्तियों में तोड़ी गई है.

इस उदाहरण में, हार्डवेयर एक SCSI LUN को धारण किए है जो चार अलग SCSI युक्ति के रूप में प्रस्तुत है, जिसमें प्रत्येक अलग रास्ते से समान भंडारण का अभिगम करता है. बहुपथ युक्ति /dev/md0 को बनाने के बाद /dev/md0 को संदर्भित सभी I/O ऑपरेशन /dev/sda1, /dev/sdb1, /dev/sdc1, या /dev/sdd1 में गंतव्य है (कौन सा पथ अभी सक्रिय है और काम कर रहा है इसपर निर्भर करते हुए).

/dev/md0 के विन्यास का mdadm --detail /dev/md0 समादेश के प्रयोग से बहुत नजदीक से परीक्षण किया जा सकता है यह जांचने के लिए कि यह वास्तव में एक बहुपथ युक्ति है.

/dev/md0:
Version : 00.90.00
Creation Time : Tue Mar  2 10:56:37 2004
Raid Level : multipath
Array Size : 3905408 (3.72 GiB 3.100 GB)
Raid Devices : 1
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Tue Mar  2 10:56:37 2004
State : dirty, no-errors
Active Devices : 1
Working Devices : 4
Failed Devices : 0
Spare Devices : 3

Number   Major   Minor   RaidDevice State
0       8       49        0      active sync   /dev/sdd1
1       8       17        1      spare   /dev/sdb1
2       8       33        2      spare   /dev/sdc1
3       8        1        3      spare   /dev/sda1
UUID : 4b564608:fa01c716:550bd8ff:735d92dc
Events : 0.1

mdadm का दूसरा गुण युक्ति (RAID सरणी का एक सदस्य मानें या बहुपथ विन्यास में एक पथ) पर एक कामकाजी विन्यास से हटाने के लिए दबाव डालने की क्षमता है. इस उदाहरण में, /dev/sda1 को दोषयुक्त के रूप में चिह्नित किया जाता है, तब हटा दिया जाता है, और अंततः विन्यास में फिर जोड़ा जाता है. बहुपथ विन्यास के लिए, ये क्रिया किसी I/O सक्रियता को समय पर होने देने से प्रभावित नहीं करेगा:

# mdadm /dev/md0 -f /dev/sda1
mdadm: set /dev/sda1 faulty in /dev/md0
# mdadm /dev/md0 -r /dev/sda1
mdadm: hot removed /dev/sda1
# mdadm /dev/md0 -a /dev/sda1
mdadm: hot added /dev/sda1
#