Raid1 พร้อมพาร์ทิชันที่ใช้งานและว่าง


8

ฉันมีปัญหาต่อไปนี้กับพาร์ติชั่นการจู่โจมซอฟต์แวร์ RAID1 บนระบบ Ubuntu ของฉัน (10.04 LTS, 2.6.32-24- เซิร์ฟเวอร์ในกรณีที่เป็นเรื่องสำคัญ)

หนึ่งในดิสก์ของฉัน (sdb5) รายงานข้อผิดพลาดของ I / O และถูกทำเครื่องหมายว่าผิดพลาดในอาเรย์ อาร์เรย์จะถูกลดระดับด้วยอุปกรณ์ที่ใช้งานอยู่หนึ่งเครื่อง ดังนั้นฉันจึงเปลี่ยนฮาร์ดดิสค์โคลนตารางพาร์ทิชันและเพิ่มพาร์ทิชันใหม่ทั้งหมดในอาร์เรย์การโจมตีของฉัน หลังจากการซิงค์พาร์ติชั่นทั้งหมดสิ้นสุดลงโดยมีอุปกรณ์ที่ใช้งาน 2 อุปกรณ์ - ยกเว้นหนึ่งในนั้น อย่างไรก็ตามพาร์ติชันที่รายงานดิสก์ที่ผิดพลาดมาก่อนจะไม่รวมพาร์ติชันใหม่เป็นอุปกรณ์ที่ใช้งาน แต่เป็นดิสก์สำรอง:

md3 : active raid1 sdb5[2] sda5[1]
  4881344 blocks [2/1] [_U]

ดูรายละเอียดเผยให้เห็น:

root@server:~# mdadm --detail /dev/md3
[...]
Number   Major   Minor   RaidDevice State
   2       8       21        0      spare rebuilding   /dev/sdb5
   1       8        5        1      active sync   /dev/sda5

ดังนั้นนี่คือคำถาม: ฉันจะบอกการโจมตีของฉันเพื่อเปลี่ยนดิสก์สำรองให้กลายเป็นดิสก์ที่ใช้งานอยู่ได้อย่างไร และทำไมถึงถูกเพิ่มเป็นอุปกรณ์สำรอง? การสร้างหรือประกอบซ้ำอาร์เรย์ไม่ใช่ตัวเลือกเนื่องจากเป็นพาร์ติชันรากของฉัน และฉันไม่สามารถหาคำแนะนำใด ๆ เกี่ยวกับเรื่องนั้นใน Software Raid HOWTO

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

ทางออกปัจจุบัน

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

mdadm --examine /dev/sdb5
[...]
Number   Major   Minor   RaidDevice State
this     2       8       21        2      spare   /dev/sdb5

   0     0       0        0        0      removed
   1     1       8        5        1      active sync   /dev/sda5
   2     2       8       21        2      spare   /dev/sdb5

ดังนั้นการอ่านอุปกรณ์ sdb5 ไปยังอาร์เรย์ md3 มักจะจบลงด้วยการเพิ่มอุปกรณ์เป็นอะไหล่

ในที่สุดฉันก็สร้างอาร์เรย์ขึ้นมาใหม่

mdadm --create /dev/md3 --level=1 -n2 -x0 /dev/sda5 /dev/sdb5

ซึ่งทำงานได้

แต่คำถามยังคงเปิดอยู่สำหรับฉัน: มีวิธีที่ดีกว่าในการจัดการกับบทสรุปใน superblock และบอกให้อาร์เรย์เปลี่ยน sdb5 จากดิสก์สำรองเป็นดิสก์ที่ใช้งานอยู่หรือไม่ ฉันยังอยากรู้อยากเห็นสำหรับคำตอบ


"cat / proc / mdstat" แสดงอะไร ไม่ใช่การสร้างใหม่และ "อะไหล่" จะหายไปเมื่อการสร้างใหม่เสร็จสิ้นหรือไม่ "mdadm --version" แสดงอะไร มีข้อผิดพลาดเก่า ... ดูmail-archive.com/linux-raid@vger.kernel.org/msg09818.html
rems

ไม่นั่นเป็นปัญหา ตัวอย่างข้อมูลแรกในคำถามแสดงผลลัพธ์ของ / proc / mdstat สำหรับอาร์เรย์ อุปกรณ์ได้รับการซิงค์แล้ว แต่อย่างที่คุณเห็นหลังจากกระบวนการซิงค์สำเร็จอุปกรณ์ยังคงเป็นอะไหล่และไม่ได้กลายเป็นอุปกรณ์ที่ใช้งานอยู่
Daniel Baron

mdadm - v2.6.7.1
Daniel Baron

คำตอบ:


1

Daniel: เริ่มแรกให้ตรวจสอบอีกครั้งเพื่อดูว่ามีการรวมอะไหล่ไว้ในอาร์เรย์หรือไม่โดยทำ:

cat / proc / mdstat

ซึ่งควรรายงานว่ามีกระบวนการบิลด์เกิดขึ้นหรือไม่และคาดว่าจะใช้เวลานานเท่าใด

หากไม่มีสิ่งปลูกสร้างเกิดขึ้นให้ลองทำสิ่งต่อไปนี้

mdadm / dev / md3 - ลบ / dev / sdb5

mdadm / dev / md3 - เพิ่ม / dev / sdb5

และรายงานกลับมาว่ามันเหมาะกับคุณอย่างไร ดูhttp://linux.die.net/man/8/mdadmสำหรับรายละเอียดเพิ่มเติม


ขอบคุณสำหรับความช่วยเหลือของคุณ Rolnik อย่างที่คุณเห็นจาก snippet / proc / mdstat แรกของฉันแสดงอุปกรณ์ทั้งสองในอาเรย์ อุปกรณ์ได้รับการซิงค์มาก่อน (ไม่แสดงที่นี่) โดยไม่มีปัญหา แต่หลังจากเสร็จสิ้นกระบวนการซิงค์ใหม่อุปกรณ์ก็ไม่ได้กลายเป็นอุปกรณ์ที่ใช้งานอยู่ การลบและเพิ่มอีกครั้งไม่ได้เปลี่ยนพฤติกรรมนี้
Daniel Baron

1

ค่อนข้างช้า แต่การทำเช่นนี้จะเปิดใช้งานไดรฟ์สำรอง:

mdadm --grow /dev/md3 -n 2

ในฐานะที่เป็น manpage พูดว่า:

สำหรับสร้างสร้างหรือขยาย: -n, - กลัว-devices = ระบุจำนวนอุปกรณ์ที่ใช้งานในอาร์เรย์ สิ่งนี้รวมถึงจำนวนของอุปกรณ์สำรอง (ดูด้านล่าง) ต้องเท่ากับจำนวนของอุปกรณ์ - ส่วนประกอบ (รวมถึงอุปกรณ์ "หายไป") ที่แสดงรายการอยู่ในบรรทัดคำสั่งสำหรับ - สร้าง การตั้งค่า 1 อาจเป็นข้อผิดพลาดดังนั้นต้องระบุ - บังคับให้ระบุก่อน จากนั้นจะอนุญาตให้มีค่า 1 สำหรับ linear, multipath, RAID0 และ RAID1 ไม่อนุญาตสำหรับ RAID4, RAID5 หรือ RAID6 หมายเลขนี้สามารถเปลี่ยนแปลงได้โดยใช้ --grow สำหรับอาร์เรย์ RAID1, RAID4, RAID5 และ RAID6 และเฉพาะในเมล็ดที่ให้บริการพอร์ตที่จำเป็นเท่านั้น


0

จากสิ่งที่ฉันจำได้เมื่อฉันมีปัญหานั้น (ด้วยเหตุผลอื่น) ฉันต้องใช้ --grow เพื่อเพิ่มไดรฟ์สำรอง "อย่างถูกต้อง" อีกครั้ง (เช่นการล้างเงื่อนไขข้อผิดพลาด)

บางสิ่งเช่นนี้ (ยืนยันด้วยเอกสารของคุณ!):

mdadm --grow --level = ชำรุด --layout = flush / dev / sdb5

จากนั้นคุณสามารถเพิ่มอุปกรณ์และควรได้รับการยอมรับ

ปัญหาคือว่าไดรเวอร์ md บันทึกสถานะของแต่ละพาร์ติชันในข้อมูลการบูตของไดรฟ์ ดังนั้นแม้หลังจากการรีบูตระบบจะรู้สถานะและหลีกเลี่ยงการทำเครื่องหมายพาร์ติชันว่าผิดพลาด

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