नॉलेजबेस · सर्वर डेडिकेटेड और VPS
Linux सॉफ़्टवेयर RAID का प्रबंधन (भाग II): डिस्क फ़ेल होने के बाद रिकवरी
अंतिम अपडेट 2019-02-03
Linux सॉफ़्टवेयर RAID का प्रबंधन (भाग II): डिस्क फ़ेल होने के बाद रिकवरी
|
यह लेख आपको बताता है कि एक डिस्क के फ़ेल होने की स्थिति में Linux सॉफ़्टवेयर RAID को कैसे रिकवर करें। आगे के उदाहरणों में हम निम्नलिखित मान्यताओं का उपयोग करेंगे:
स्वस्थ ऐरे cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[1] sda1[0] 511988 blocks super 1.0 [2/2] [UU] md1 : active raid1 sdb2[1] sda2[0] 976247676 blocks super 1.1 [2/2] [UU] bitmap: 1/8 pages [4KB], 65536KB chunk unused devices: <none>
ध्यान दें कि दोनों ऐरे (md0, md1) इस प्रकार हैं:
cat /proc/partitions major minor #blocks name 8 0 976762584 sda 8 1 512000 sda1 8 2 976248832 sda2 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0
ध्यान दें कि निम्नलिखित बातें सही होनी चाहिए:
डिग्रेडेड ऐरे
Personalities : [raid1] md0 : active raid1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : active raid1 sdb2[1] sda2[0] 976247676 blocks super 1.1 [2/2] [UU] bitmap: 0/8 pages [0KB], 65536KB chunk unused devices: <none>
नोट: एक या अधिक RAID ऐरे में सदस्य अनुपस्थित दिखाई देंगे: [2/1] [_U]
Personalities : [raid1] md0 : active raid1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : active raid1 sdb2[1] sda2[0](F) 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk unused devices: <none> गंभीर विफलता की स्थिति में, या सिस्टम रीस्टार्ट पर डिस्क के इनिशियलाइज़ न होने पर, डिस्क स्वयं गायब हो सकती है, जैसा कि नीचे दिए गए उदाहरणों में दिखाया गया है।
Personalities : [raid1] md0 : active raid1 sdb1[1] 511988 blocks super 1.0 [2/1] [_U] md1 : active raid1 sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk unused devices: <none>
डिस्क अनुपस्थित: /proc/partitions major minor #blocks name 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0
खराब डिस्क को हटाना डिवाइस को मैन्युअली ‘failed’ के रूप में चिह्नित करना किसी डिवाइस को मैन्युअली खराब (faulty) के रूप में तभी चिह्नित करें, जब किसी पार्टीशन में टाइमआउट या रीड एरर के कारण उसका कोई ऐरे degraded स्थिति में हो। फिजिकल डिस्क स्वयं सामान्य रूप से काम करती रहनी चाहिए।
सावधानी: सुनिश्चित करें कि आप केवल उन्हीं पार्टीशन को failed कर रहे हैं जो संबंधित खराब डिस्क के हैं (यानी sda1/sda2 के लिए sda और sdb1/sdb2 के लिए sdb). सेट करें sda1 और sda1 को faulty [root@freshinstall ~]# mdadm --manage /dev/md0 --fail /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md0
[root@freshinstall ~]# mdadm --manage /dev/md1 --fail /dev/sda2 mdadm: set /dev/sda2 faulty in /dev/md1
मेंcat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : active raid1 sdb2[1] sda2[0](F) 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk unused devices: <none>
ऐरे से खराब डिवाइस हटाना डिस्क बदलने से पहले, खराब हो चुके सदस्यों को उनके संबंधित ऐरे से हटा देना चाहिए:
[root@freshinstall ~]# mdadm --manage /dev/md0 --remove /dev/sda1 mdadm: hot removed /dev/sda1 from /dev/md0
[root@freshinstall ~]# mdadm --manage /dev/md1 --remove /dev/sda2 mdadm: hot removed /dev/sda2 from /dev/md1
[root@freshinstall ~]# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[1] 511988 blocks super 1.0 [2/1] [_U] md1 : active raid1 sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk unused devices: <none>
[root@freshinstall ~]# mdadm --misc --zero-superblock /dev/sda1 [root@freshinstall ~]# mdadm --misc --zero-superblock /dev/sda2
dd if=/dev/zero of=/dev/sda bs=1M सावधानी: यह प्रक्रिया "of=" आर्गुमेंट में दिए गए डिवाइस का सारा डेटा मिटा देती है (/dev/sda ऊपर दिए गए उदाहरण में)। नोट: इस प्रक्रिया को पूरा होने में कुछ समय लग सकता है।
नई डिस्क जोड़ना नई डिस्क का आकार खराब हुई डिस्क के बिल्कुल बराबर या उससे बड़ा होना चाहिए। नई डिस्क को सिस्टम में लगाने के बाद, कर्नेल लॉग में कुछ इस तरह की जानकारी दर्ज करेगा: dmesg | tail sd 0:0:0:0: [sdc] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) sd 0:0:0:0: [sdc] 4096-byte physical blocks sd 0:0:0:0: [sdc] Write Protect is off sd 0:0:0:0: [sdc] Mode Sense: 00 3a 00 00 sd 0:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
cat /proc/partitions major minor #blocks name
8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 8 0 976762584 sdc नई डिस्क की SMART स्थिति जाँचें: smartctl -H /dev/sdc smartctl 5.39.1 2010-01-28 r3054 [x86_64-unknown-linux-gnu] (local build) Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED
पार्टीशनिंग पार्टीशनिंग शुरू करने से पहले यह सुनिश्चित करें कि नई डिस्क अपने-आप माउंट नहीं हुई है: mount | grep sdc कोई आउटपुट नहीं दिखना चाहिए। यदि कुछ भी दिखाई देता है, तो संबंधित पार्टीशन को निम्न कमांड से मैन्युअली अनमाउंट करना होगा: umount <partition> चूँकि शुरुआती सिस्टम में बिल्कुल समान आकार की दो मिरर्ड ड्राइव उपयोग की गई थीं, इसलिए हम पार्टीशनिंग के लिए चालू ड्राइव को टेम्पलेट के रूप में उपयोग कर सकते हैं: sfdisk -d -uS /dev/sdb | sfdisk -L -uS /dev/sdc Checking that no-one is using this disk right now ... OK
Disk /dev/sdc: 121601 cylinders, 255 heads, 63 sectors/track Old situation: Units = 512 बाइट के सेक्टर, 0 से गिनती शुरू होती है
Device Boot Start End #sectors Id System /dev/sdc1 * 2048 1026047 1024000 fd Linux raid autodetect /dev/sdc2 1026048 1953523711 1952497664 fd Linux raid autodetect /dev/sdc3 0 - 0 0 Empty /dev/sdc4 0 - 0 0 Empty नई स्थिति: Units = 512 बाइट के सेक्टर, 0 से गिनती शुरू होती है
Device Boot Start End #sectors Id System /dev/sdc1 * 2048 1026047 1024000 fd Linux raid autodetect /dev/sdc2 1026048 1953523711 1952497664 fd Linux raid autodetect /dev/sdc3 0 - 0 0 Empty /dev/sdc4 0 - 0 0 Empty चेतावनी: पार्टिशन 1 सिलेंडर सीमा पर समाप्त नहीं होता चेतावनी: पार्टिशन 2 सिलेंडर सीमा पर शुरू नहीं होता चेतावनी: पार्टिशन 2 सिलेंडर सीमा पर समाप्त नहीं होता नया पार्टिशन टेबल सफलतापूर्वक लिख दिया गया
पार्टिशन टेबल दोबारा पढ़ा जा रहा है ...
यदि आपने कोई DOS पार्टिशन बनाया या बदला है, जैसे /dev/foo7, तो dd(1) का उपयोग करें पहले 512 बाइट को शून्य करने के लिए: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (देखें fdisk(8)।)
इसके बाद, आप अपनी नई पार्टिशन की गई डिस्क देख सकेंगे: cat /proc/partitions major minor #blocks name
8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 8 0 976762584 sdc 8 1 512000 sdc1 8 2 976248832 sdc2
array में नए डिवाइस जोड़ना [root@freshinstall ~]# mdadm --manage /dev/md0 --add /dev/sdc1 mdadm: added /dev/sdc1
[root@freshinstall ~]# mdadm --manage /dev/md1 --add /dev/sdc2 mdadm: added /dev/sdc2
[root@freshinstall ~]# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdc1[2] sdb1[1] 511988 blocks super 1.0 [2/2] [UU] md1 : active raid1 sdc2[2] sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] [>....................] recovery = 0.1% (1618176/976247676) finish=160.6min speed=101136K/sec bitmap: 1/8 pages [4KB], 65536KB chunk unused devices: <none> नोट: दोनों array में दो-दो सक्रिय सदस्य हैं और md1 में पुनर्निर्माण (reconstruction) चल रहा है।
बूटलोडर दोबारा इंस्टॉल करना खराब ड्राइव बदलने के बाद, नई डिस्क के MBR में GRUB दोबारा इंस्टॉल करें, ताकि आप उससे बूट कर सकें: grub-install /dev/sdc Installation finished. No error reported. This is the contents of the device map /boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'.
# this device map was generated by anaconda (hd0) /dev/sdc (hd1) /dev/sdb
|
Tell us what you need
Compare available plans or describe your workload so we can discuss a suitable starting point.