วิธีทำให้อุปกรณ์ RAID ที่ไม่ได้ใช้งานทำงานได้อีกครั้ง?


30

หลังจากบูทอุปกรณ์ RAID1 ของฉัน ( /dev/md_d0*) บางครั้งก็อยู่ในสถานะสนุกสนานและฉันไม่สามารถเมานต์ได้

* เดิมผมสร้างขึ้นแต่ก็มีการเปลี่ยนแปลงอย่างใดตัวเองลงไป/dev/md0/dev/md_d0

# mount /opt
mount: wrong fs type, bad option, bad superblock on /dev/md_d0,
       missing codepage or helper program, or other error
       (could this be the IDE device where you in fact use
       ide-scsi so that sr0 or sda or so is needed?)
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

อุปกรณ์ RAID ดูเหมือนจะไม่ได้ใช้งานอยู่ :

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] 
                [raid4] [raid10] 
md_d0 : inactive sda4[0](S)
      241095104 blocks

# mdadm --detail /dev/md_d0
mdadm: md device /dev/md_d0 does not appear to be active.

คำถามคือวิธีการทำให้อุปกรณ์ใช้งานอีกครั้ง (โดยใช้mdmadmฉันเข้าใจ)?

(บางครั้งก็ไม่เป็นไร (แอคทีฟ) หลังจากบู๊ตและฉันสามารถติดตั้งด้วยตนเองได้โดยไม่มีปัญหา แต่ก็ยังไม่เมาโดยอัตโนมัติแม้ว่าฉันจะใช้มัน/etc/fstab:

/dev/md_d0        /opt           ext4    defaults        0       0

ดังนั้นคำถามโบนัส: ฉันควรทำอย่างไรเพื่อให้อุปกรณ์ RAID ติดตั้งโดยอัตโนมัติ/optในเวลาบูต )

นี่คือเวิร์กสเตชัน Ubuntu 9.10 ข้อมูลความเป็นมาเกี่ยวกับการตั้งค่า RAID ในคำถามนี้

แก้ไข : ฉัน/etc/mdadm/mdadm.confดูเหมือนว่านี้ ฉันไม่เคยได้สัมผัสไฟล์นี้อย่างน้อยด้วยมือ

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR <my mail address>

# definitions of existing MD arrays

# This file was auto-generated on Wed, 27 Jan 2010 17:14:36 +0200

ใน/proc/partitionsรายการสุดท้ายmd_d0อย่างน้อยตอนนี้หลังจากรีบูตเมื่ออุปกรณ์เกิดขึ้นอีกครั้งจะใช้งานได้อีกครั้ง (ฉันไม่แน่ใจว่ามันจะเหมือนกันเมื่อไม่ได้ใช้งานหรือไม่)

การแก้ไข : ตามคำแนะนำของ Jimmy Hedmanฉันเอาผลลัพธ์ของmdadm --examine --scan:

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=de8fbd92[...]

และเพิ่มเข้าไป/etc/mdadm/mdadm.confซึ่งดูเหมือนจะแก้ไขปัญหาหลักแล้ว หลังจากเปลี่ยน/etc/fstabเป็นใช้/dev/md0อีกครั้ง (แทน/dev/md_d0) อุปกรณ์ RAID ก็จะถูกเมาต์โดยอัตโนมัติเช่นกัน!

คำตอบ:


25

สำหรับคำถามโบนัสของคุณ:

mdadm --examine --scan >> /etc/mdadm/mdadm.conf

2
ตกลงmdadm --examine --scanผลิตARRAY /dev/md0 level=raid1 num-devices=2 UUID=...(หมายเหตุ md0 แทน md_d0!) ฉันใส่ที่อยู่ในแฟ้ม mdadm.conf นี้ (ด้วยตัวเองเพราะเป็นปัญหากับ sudo และ>>( "อนุญาตปฏิเสธ") และ sudo ถูกต้อง) และนอกจากนี้ยังมีการปรับปรุง fstab กับการใช้งาน md0 (ไม่ใช่ md_d0) อีกครั้ง ตอนนี้ฉันดูเหมือนจะไม่พบปัญหา "ไม่ใช้งาน" อีกต่อไปและอุปกรณ์ RAID จะติดตั้งโดยอัตโนมัติที่ / opt เมื่อทำการบูท ขอบคุณมาก!
Jonik

3
เหตุผลที่คุณมีปัญหาsudo ... >> mdadm.confคือเชลล์เปิดไฟล์ที่เปลี่ยนเส้นทางก่อนที่ sudo จะทำงาน คำสั่งsu -c '.... >> mdadm.conf'ควรทำงาน
เหม่ย

10

ฉันพบว่าฉันต้องเพิ่มอาร์เรย์ด้วยตนเอง/etc/mdadm/mdadm.confเพื่อให้ Linux ติดตั้งเมื่อรีบูต มิฉะนั้นฉันจะได้รับสิ่งที่คุณมีที่นี่ - - md_d1อุปกรณ์ที่ไม่ได้ใช้งาน ฯลฯ

ไฟล์ conf ควรมีลักษณะดังนี้ - หนึ่งARRAYบรรทัดสำหรับแต่ละอุปกรณ์ md ในกรณีของฉันอาร์เรย์ใหม่หายไปในไฟล์นี้ แต่ถ้าคุณมีพวกเขาอยู่ในรายการนี้อาจไม่แก้ไขปัญหาของคุณ

# definitions of existing MD arrays
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

เพิ่มหนึ่งอาร์เรย์ต่ออุปกรณ์ md และเพิ่มหลังจากความคิดเห็นที่รวมไว้ข้างต้นหรือหากไม่มีความคิดเห็นดังกล่าวอยู่ท้ายไฟล์ คุณได้รับ UUIDs โดยทำsudo mdadm -E --scan:

$ sudo mdadm -E --scan
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

อย่างที่คุณเห็นคุณสามารถคัดลอกผลลัพธ์จากผลการสแกนไปยังไฟล์ได้

ฉันรัน ubuntu desktop 10.04 LTS และเท่าที่ฉันจำได้ว่าพฤติกรรมนี้แตกต่างจากรุ่นเซิร์ฟเวอร์ของ Ubuntu แต่มันนานมากแล้วที่ฉันสร้างอุปกรณ์ md ของฉันบนเซิร์ฟเวอร์ฉันอาจผิด อาจเป็นได้ว่าฉันเพิ่งพลาดตัวเลือกบางอย่าง

อย่างไรก็ตามการเพิ่มอาร์เรย์ในไฟล์ conf ดูเหมือนจะเป็นการหลอกลวง ฉันใช้การโจมตีเหนือ 1 และการบุก 5 เป็นเวลาหลายปีโดยไม่มีปัญหา


1
ดังนั้นโดยพื้นฐานแล้วคุณกำลังพูดในสิ่งเดียวกันกับคำตอบที่ได้รับการยอมรับในปัจจุบัน :) ยังคง +1 โพสต์แรกที่ดี
Jonik

7

คำเตือน:ก่อนอื่นให้ฉันบอกว่าด้านล่าง (เนื่องจากการใช้ "--force") มีความเสี่ยงสำหรับฉันและหากคุณมีข้อมูลที่ไม่สามารถกู้คืนได้ฉันขอแนะนำให้ทำสำเนาพาร์ติชันที่เกี่ยวข้องก่อนที่จะเริ่มลอง สิ่งต่าง ๆ ด้านล่าง อย่างไรก็ตามสิ่งนี้ใช้ได้สำหรับฉัน

ฉันมีปัญหาเดียวกันกับอาร์เรย์ที่แสดงว่าไม่ทำงานและไม่มีอะไรที่ฉันทำรวมถึง "mdadm --examine --scan> /etc/mdadm.conf" ตามที่คนอื่น ๆ แนะนำที่นี่ช่วยได้เลย

ในกรณีของฉันเมื่อมันพยายามที่จะเริ่มต้นอาร์เรย์ RAID-5 หลังจากการเปลี่ยนไดรฟ์มันก็บอกว่ามันสกปรก (ผ่านdmesg):

md/raid:md2: not clean -- starting background reconstruction
md/raid:md2: device sda4 operational as raid disk 0
md/raid:md2: device sdd4 operational as raid disk 3
md/raid:md2: device sdc4 operational as raid disk 2
md/raid:md2: device sde4 operational as raid disk 4
md/raid:md2: allocated 5334kB
md/raid:md2: cannot start dirty degraded array.

ทำให้มันแสดงเป็นไม่ได้ใช้งานใน/proc/mdstat:

md2 : inactive sda4[0] sdd4[3] sdc4[2] sde4[5]
      3888504544 blocks super 1.2

ฉันพบว่าอุปกรณ์ทั้งหมดมีเหตุการณ์เดียวกันกับพวกเขายกเว้นไดรฟ์ที่ฉันได้แทนที่ ( /dev/sdb4):

[root@nfs1 sr]# mdadm -E /dev/sd*4 | grep Event
mdadm: No md superblock detected on /dev/sdb4.
         Events : 8448
         Events : 8448
         Events : 8448
         Events : 8448

อย่างไรก็ตามรายละเอียดของอาเรย์แสดงให้เห็นว่ามีอุปกรณ์ 4 จาก 5 รายการ:

[root@nfs1 sr]# mdadm --detail /dev/md2
/dev/md2:
[...]
   Raid Devices : 5
  Total Devices : 4
[...]
 Active Devices : 4
Working Devices : 4
[...]
    Number   Major   Minor   RaidDevice State
       0       8        4        0      inactive dirty  /dev/sda4
       2       8       36        2      inactive dirty  /dev/sdc4
       3       8       52        3      inactive dirty  /dev/sdd4
       5       8       68        4      inactive dirty  /dev/sde4

(ด้านบนมาจากหน่วยความจำในคอลัมน์ "รัฐ" ฉันหามันไม่พบในบัฟเฟอร์เลื่อนกลับของฉัน)

ฉันสามารถแก้ไขปัญหานี้ได้โดยหยุดอาร์เรย์แล้วประกอบใหม่อีกครั้ง:

mdadm --stop /dev/md2
mdadm -A --force /dev/md2 /dev/sd[acde]4

เมื่อถึงตอนนั้นอาร์เรย์ก็ทำงานอยู่โดยใช้อุปกรณ์ 4 จาก 5 ตัวและฉันสามารถเพิ่มอุปกรณ์ทดแทนได้และกำลังสร้างขึ้นมาใหม่ ฉันสามารถเข้าถึงระบบไฟล์ได้โดยไม่มีปัญหา


4

ฉันมีปัญหากับ Ubuntu 10.04 ซึ่งข้อผิดพลาดใน FStab ทำให้เซิร์ฟเวอร์ไม่สามารถบูตได้

ฉันรันคำสั่งนี้ตามที่กล่าวถึงในวิธีแก้ไขปัญหาด้านบน:

mdadm --examine --scan >> /etc/mdadm/mdadm.conf

สิ่งนี้จะผนวกผลลัพธ์จาก "mdadm --examine --scan" เป็น "/etc/mdadm/mdadm.conf"

ในกรณีของฉันนี่คือ:

ARRAY /dev/md/0 metadata=1.2 UUID=2660925e:6d2c43a7:4b95519e:b6d110e7 name=localhost:0

นี่คือ fakeraid 0 คำสั่งของฉันใน/ etc / fstabสำหรับการติดตั้งอัตโนมัติคือ:

/dev/md0 /home/shared/BigDrive ext3 defaults,nobootwait,nofail 0 0

สิ่งสำคัญที่นี่คือคุณมี "nobootwait" และ "nofail" Nobootwait จะข้ามข้อความระบบใด ๆ ที่ทำให้คุณไม่สามารถบูทได้ ในกรณีของฉันนี่เป็นเซิร์ฟเวอร์ระยะไกลดังนั้นจึงจำเป็น

หวังว่าสิ่งนี้จะช่วยให้บางคน


นี่คือสิ่งที่ทำเพื่อฉัน ฉันได้ติดตั้งไดรฟ์ RAID ของฉันผ่านการ์ด PCI Express SATA ดังนั้นฉันจึงคาดเดาว่า ณ เวลาบูตระบบยังไม่เห็นไดรฟ์เหล่านั้น
Michael Robinson

2

คุณสามารถเปิดใช้งานอุปกรณ์ md ของคุณด้วย

mdadm -A /dev/md_d0

ฉันคิดว่าสคริปต์เริ่มต้นบางตัวเริ่มเร็วเกินไปก่อนที่สมาชิก RAID รายใดคนหนึ่งจะค้นพบหรือมีปัญหาคล้ายกัน เนื่องจากวิธีแก้ปัญหาที่รวดเร็วและสกปรกคุณควรเพิ่มบรรทัดนี้ใน /etc/rc.local:

mdadm -A /dev/md_d0 && mount /dev/md_d0

แก้ไข: เห็นได้ชัดว่า /etc/mdadm/mdadm.conf ของคุณยังคงมีชื่อการกำหนดค่าเก่า แก้ไขไฟล์นี้และแทนที่ md0 ด้วย md_d0


ตกลงในโอกาสเหล่านั้นเมื่ออุปกรณ์ที่เป็นที่ใช้งานหลังจากรีบูตเพียงmount /dev/md_d0ใน/etc/rc.localการทำงานที่ดี mdadm -A /dev/md_d0ในทางกลับกันล้มเหลวด้วยข้อความแสดงข้อผิดพลาดว่าในทั้งสองกรณี (ดังนั้นฉันไม่สามารถใช้มันก่อนที่&&ผู้ประกอบการนั้น) อย่างไรก็ตามครึ่งหนึ่งของปัญหาดูเหมือนจะแก้ไขได้ดังนั้น +1 สำหรับสิ่งนั้น
Jonik

จริง ๆ แล้ว mdadm.conf ไม่มีชื่อการกำหนดค่าใด ๆ อย่างน้อยโดยตรง (มันอ้างถึง/proc/partitionsแม้ว่า); ดูคำถามที่แก้ไข ฉันไม่เคยแตะ mdadm.conf - เครื่องมือใดที่ทำให้เกิดอัตโนมัติ
Jonik

สำหรับบันทึกที่ออก/etc/rc.localวิธีแก้ปัญหาที่ดูเหมือนว่าฉันได้ทุกอย่างทำงานอย่างถูกต้อง: superuser.com/questions/117824/... :)
Jonik

2

ฉันมีปัญหาที่คล้ายกัน ... เซิร์ฟเวอร์ของฉันจะไม่เมานต์ md2 หลังจากที่ฉันสร้างพาร์ติชันอุปกรณ์ที่เชื่อมโยงกัน จากการอ่านหัวข้อนี้ฉันพบว่าอุปกรณ์ md2 RAID มี UUID ใหม่และเครื่องพยายามใช้อันเก่า

ตามที่แนะนำ ... โดยใช้เอาต์พุต 'md2'

mdadm --examine --scan

ฉันแก้ไข/etc/mdadm/mdadm.confและแทนที่บรรทัด UUID เก่าด้วยเอาต์พุตเดียวจากคำสั่งด้านบนและปัญหาของฉันหายไป


2

เมื่อคุณหลอกจะทำอะไรกับมันไป /dev/md[012346789} ยังคงติดตั้งที่หรือคุณต้อง:/dev/md{126,127...}/dev/md0/dev/md126/dev/md127

umount /dev/md127 หรือ /dev/md126umount

นี่เป็นการชั่วคราวเพื่อให้คุณสามารถรันคำสั่งและบางแอปพลิเคชันโดยไม่หยุดระบบของคุณ


1

md_d0 : inactive sda4[0](S)ดูผิดสำหรับอาร์เรย์ RAID1 ดูเหมือนว่าจะแนะนำว่าอาร์เรย์ไม่มีอุปกรณ์ที่ใช้งานอยู่และอุปกรณ์สำรองหนึ่งชิ้น(ระบุโดย (S) คุณจะเห็น (F) ที่นั่นสำหรับอุปกรณ์ที่ล้มเหลวและไม่มีสิ่งใดสำหรับอุปกรณ์ OK / ที่ใช้งานอยู่) - สำหรับอาร์เรย์ RAID1 ที่ไม่ ไม่ควรลดระดับการทำงานควรมีอุปกรณ์ OK / active อย่างน้อยสองตัว(และสำหรับอาร์เรย์ที่ลดระดับลง, อุปกรณ์ OK / active อย่างน้อยหนึ่งตัว)และคุณไม่สามารถเปิดใช้งานอาร์เรย์ RAID1 ที่ไม่มีอุปกรณ์ที่ไม่ว่างไม่ล้มเหลว (เป็นอะไหล่ อย่ามีสำเนาของข้อมูลจนกว่าพวกเขาจะใช้งานได้เมื่อไดรฟ์อื่นล้มเหลว) หากฉันอ่าน/proc/mdstatเอาต์พุตนั้นถูกต้องคุณจะไม่สามารถเปิดใช้งานอาร์เรย์ในสถานะปัจจุบันได้

คุณมีไดรฟ์ทางกายภาพในเครื่องที่ไม่สามารถหมุนได้หรือไม่? ไม่ls /dev/sd*ทุกรายการไดรฟ์และพาร์ทิชันที่คุณมักจะคาดหวังที่จะเห็นบนเครื่องที่?


ดูเหมือนว่าฉันไม่สามารถทำซ้ำสถานการณ์ที่ไม่ได้ใช้งานได้อีกต่อไปหลังจากทำตามคำแนะนำในคำตอบของจิมมี่ (ดูเหมือนว่าหลังจากนั้นหลังจากรีบูตสักสองสามครั้ง) ... ไหนดี :) ขอบคุณในทุกกรณี!
Jonik

ฉันนำคำถามเกี่ยวกับสถานะนี้ไปยังรายการส่งเมล Linux RAID และได้รับการตอบกลับนี้: spinics.net/lists/raid/msg61352.html
nh2

ขณะที่ผมเพิ่งเขียนที่นี่ , echo active > /sys/block/md0/md/array_stateทำงานให้ฉันนำการทำ RAID ของฉันแสดงเป็น RAID1 กับหายไปอีกครั้งดิสก์แทน RAID0 กับอะไหล่เท่านั้น
nh2

1

วิธีง่ายๆในการเรียกใช้อาเรย์โดยสมมติว่าไม่มีปัญหาฮาร์ดแวร์และคุณมีไดรฟ์ / พาร์ติชันเพียงพอในการเริ่มต้นอาเรย์ดังต่อไปนี้:

md20 : inactive sdf1[2](S)
      732442488 blocks super 1.2

 sudo mdadm --manage /dev/md20  --run

อาจเป็นได้ว่าไม่ว่าด้วยเหตุผลใดอาเรย์นั้นใช้ได้ แต่มีบางอย่างขัดขวางไม่ให้เริ่มหรือสร้าง ในกรณีของฉันนี้เป็นเพราะ mdadm ไม่ทราบชื่ออาเรย์ดั้งเดิมคือ md127 และไดรฟ์ทั้งหมดถูกถอดออกสำหรับอาเรย์นั้น เมื่อแทนที่ฉันต้องรวบรวมด้วยตนเอง (อาจเป็นข้อผิดพลาดที่ mdadm คิดว่าอาเรย์นั้นทำงานอยู่แล้วเพราะชื่ออาเรย์เก่าแบบออฟไลน์)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.