กู้คืนอาร์เรย์ RAID5 ของซอฟต์แวร์ Linux หลังจากอัปเกรดเซิร์ฟเวอร์


2

ฉันเพิ่งอัพเกรดเซิร์ฟเวอร์จาก Fedora 6 เป็น Fedora 14 นอกจากฮาร์ดไดรฟ์หลักที่ติดตั้งระบบปฏิบัติการแล้วฉันยังมีฮาร์ดไดรฟ์ 3 1TB ที่กำหนดค่าสำหรับ RAID5 (ผ่านซอฟต์แวร์) หลังจากการอัพเกรดฉันสังเกตเห็นว่าฮาร์ดไดรฟ์ตัวหนึ่งถูกลบออกจากอาเรย์การโจมตี ฉันพยายามที่จะเพิ่มมันกลับมาด้วย mdadm - เพิ่ม แต่มันก็ใส่ไว้ในอะไหล่ ฉันคิดว่าฉันจะกลับไปหามันในภายหลัง

จากนั้นเมื่อทำการรีบู๊ตระบบจะไม่สามารถติดตั้งอาเรย์การโจมตีได้เลย ฉันลบมันออกจาก fstab เพื่อที่ฉันจะสามารถบูทระบบได้และตอนนี้ฉันกำลังพยายามที่จะดึงข้อมูลการโจมตี

ฉันวิ่งต่อไปนี้:

mdadm --create /dev/md0 --assume-clean --level=5 --chunk=64 --raid-devices=3 missing /dev/sdc1 /dev/sdd1

ฉันรู้ว่าขนาดก้อนของฉันคือ 64k และ "หายไป" สำหรับไดรฟ์ที่ถูกเตะออกจากอาร์เรย์ (/ dev / sdb1)

ดูเหมือนว่าจะใช้งานได้และ mdadm รายงานว่าอาเรย์ทำงาน "สะอาดลดระดับ" ด้วยไดรฟ์ที่หายไป

อย่างไรก็ตามฉันไม่สามารถติดตั้งอาร์เรย์การโจมตีได้ เมื่อฉันลอง:

mount -t ext3 /dev/md0 /mnt/foo

ฉันเข้าใจ:

mount: wrong fs type, bad option, bad superblock on /dev/md0,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

และ / var / log / messages แสดง:

EXT3-fs (md0): error: can't find ext3 filesystem on dev md0.

ไม่มีใครมีความคิดว่าจะลองทำอะไรต่อไป


คุณลองติดตั้งไดรฟ์สองในสามตัวแล้วหรือยัง ฉันไม่แน่ใจว่า RAID-5 จะทำงานกับหนึ่งในสามไดรฟ์หรือไม่
Diego Sevilla

ใช่นั่นคือสิ่งที่ฉันทำกับคำสั่ง mdadm - สร้าง คุณจะสังเกตเห็นในตอนท้ายฉันระบุสามไดรฟ์ว่า "หายไป" "/ dev / sdc1" และ "/ dev / sdd1" นอกจากนี้ mdadm --query --details / dev / md0 รายงานว่าอาร์เรย์เป็น "clean, degraded" ซึ่งเป็นสิ่งที่ฉันคาดหวังสำหรับอาร์เรย์ RAID5 ที่หายไปหนึ่งไดรฟ์
jstevej

คำตอบ:


0

คุณอาจได้missingตำแหน่งผิด เฉพาะตำแหน่งที่ถูกต้องของไดรฟ์และmissingจะทำงาน เพิ่งรัน:

mdadm --examine  /dev/sdb1

สิ่งนี้จะส่งออก (เหนือสิ่งอื่นใด) ข้อมูลที่หมายเลขใน RAID หายไปจริงๆ มองหาthisเส้น:

      Number   Major   Minor   RaidDevice State
this     0     253       13        0      active sync   /dev/dm-13

ในกรณีนี้มันคือหมายเลข 0 (= อุปกรณ์แรก) และactiveเนื่องจาก RAID ของฉันออนไลน์อยู่ในขณะนี้ ตอนนี้คุณรู้แล้วว่าควรจะระบุไดรฟ์missingใด

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


ฉันลองคำแนะนำของคุณ ในความเป็นจริงฉันลองชุดไดรฟ์ที่เป็นไปได้ทั้งหมด 6 ชุด (หายไป sdc1 sdd1 หายไป sdd1 sdc1 หายไป sdd1 หายไป sdd1, sdd1 หายไป sdc1, sdc1 sdd1 ขาดหายไป, sdd1 sdc1 ขาดหายไป) แต่พวกเขาทั้งหมดให้ข้อผิดพลาดเหมือนกัน
jstevej

0

หนึ่งในสิ่งที่ฉันพบคือมันmdadm --create /dev/md0 --assume-cleanจะทำงานได้อย่างถูกต้องเฉพาะเมื่อคุณใช้ mdadm รุ่นเดียวกัน (หรือปิด) ที่ใช้ในการสร้างอาร์เรย์ดั้งเดิม นั่นเป็นเพราะพวกเขาใช้ออฟเซ็ตที่แตกต่างกันสำหรับข้อมูลและเมตาดาต้าแม้ว่าจะมีเวอร์ชั่นซุปเปอร์บล็อกเดียวกัน (เช่น 1.2)

ปัญหาคือว่าเอาต์พุต mdadm มักจะบอกว่ามันสร้างอาร์เรย์ใหม่ได้ดี แต่ข้อมูลที่มีอยู่ใน / dev / md0 จะผิด

ตัวอย่างเช่นการใช้ mdadm เมื่อเร็ว ๆ นี้ 3.3.2 หรือ 3.2.5 ก่อนหน้านี้ใช้งานไม่ได้สำหรับฉัน แต่กลับไปที่ mdadm 3.1.4 (ซึ่งสร้างอาร์เรย์) ทำงานได้ดี

โปรดทราบว่าฉันยังระมัดระวังในการระบุไดรฟ์ในลำดับที่ถูกต้อง (ตามรายละเอียดในmdadm --examine /dev/sd?) เมื่อสร้างอาร์เรย์และใช้ไฟล์ซ้อนทับสำหรับการทดสอบทั้งหมด (เพื่อไม่เพิ่มความเสียหาย) โดยใช้คำแนะนำที่https: //raid.wiki.kernel .org / index.php / Recovering_a_failed_software_RAID

ในกรณีของฉันมีปัญหาคือ 6-disk RAID5 ซึ่งกำลังเติบโตถึง 7 ดิสก์ แต่มันไม่คืบหน้าเลยดังนั้นจึงถูกยกเลิกและจะไม่รวมตัวอีกต่อไปด้วยmdadm: Failed to restore critical section for reshape, sorry.และ--forceและ--invalid-backupก็ไม่ได้ช่วยด้วยดังนั้นฉันจึงต้องใช้--create --assume-clean

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