mdadm: ไม่สามารถลบส่วนประกอบใน RAID 1


14

ฉันมีพาร์ทิชัน / boot ของฉันในอาร์เรย์ RAID 1 โดยใช้ mdadm อาเรย์นี้มีการลดระดับในอดีตไม่กี่ครั้งและทุกครั้งที่ฉันถอดฟิสิคัลไดรฟ์เพิ่มใหม่ทำให้อาเรย์เป็นปกติโดยใช้ตัวอักษรไดรฟ์ใหม่ ออกจากเดิมยังอยู่ในอาร์เรย์และล้มเหลว ฉันไม่สามารถลบองค์ประกอบทั้งหมดที่ไม่มีอยู่ได้

[root@xxx ~]# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdg1[10] sde1[8](F) sdb1[7](F) sdd1[6](F) sda1[4] sdc1[5]
      358336 blocks super 1.0 [4/3] [UUU_]

นี่คือสิ่งที่ฉันพยายามลบไดรฟ์และพาร์ทิชันที่ไม่มีอยู่ ตัวอย่างเช่น/dev/sdb1.

[root@xxx ~]# mdadm /dev/md0 -r /dev/sdb1
mdadm: Cannot find /dev/sdb1: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r faulty
mdadm: Cannot find 8:49: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r detached
mdadm: Cannot find 8:49: No such file or directory

ที่8:49ผมเชื่อว่าหมายถึงจำนวนหลักและรองที่แสดงใน--detailแต่ฉันไม่ได้ค่อนข้างแน่ใจว่าจะไปจากที่นี่ ฉันพยายามหลีกเลี่ยงการรีบูตหรือรีสตาร์ท mdadm

[root@xxx ~]# mdadm --detail /dev/md0 
/dev/md0:
        Version : 1.0
  Creation Time : Thu Aug  8 18:07:35 2013
     Raid Level : raid1
     Array Size : 358336 (350.00 MiB 366.94 MB)
  Used Dev Size : 358336 (350.00 MiB 366.94 MB)
   Raid Devices : 4
  Total Devices : 6
    Persistence : Superblock is persistent

    Update Time : Sat Apr 18 16:44:20 2015
          State : clean, degraded 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 3
  Spare Devices : 0

           Name : xxx.xxxxx.xxx:0  (local to host xxx.xxxxx.xxx)
           UUID : 991eecd2:5662b800:34ba96a4:2039d40a
         Events : 694

    Number   Major   Minor   RaidDevice State
       4       8        1        0      active sync   /dev/sda1
      10       8       97        1      active sync   /dev/sdg1
       5       8       33        2      active sync   /dev/sdc1
       6       0        0        6      removed

       6       8       49        -      faulty
       7       8       17        -      faulty
       8       8       65        -      faulty

หมายเหตุ:ตอนนี้อาร์เรย์ลดลงอย่างถูกต้องตามกฎหมายตอนนี้และฉันจะได้รับไดรฟ์ใหม่ที่นั่นเมื่อเราพูด อย่างไรก็ตามอย่างที่คุณเห็นด้านบนนั่นไม่น่าจะสำคัญ ฉันควรจะสามารถลบออก/dev/sdb1จากอาร์เรย์นี้ได้


คุณไม่จำเป็นต้อง - บังคับให้ลบดิสก์ในสถานะ "ถูกลบ" และอาจซ่อนปัญหาที่ร้ายแรงกว่านี้ได้ ทิ้งไว้

คำตอบ:


16

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

mdadm -r /dev/md0 failed     # all failed devices
mdadm -r /dev/md0 detached   # failed ones that aren't in /dev anymore

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


ฉันได้ลองใช้คำหลักคุณสามารถดูผลลัพธ์มันให้ฉันในโพสต์ต้นฉบับ mknodฉันจะใช้เวลาดูที่ ใช่มันอาจจะไม่เป็นปัญหา แต่ฉันเป็นโรค
Sajan Parikh

ใช่ฉันใช้ mknod เพื่อทำสิ่งนี้ให้สำเร็จและใช้งานได้
Sajan Parikh

@SajanParikh แน่นอนฉันจะพลาดบรรทัดที่แสดงว่าคุณได้ลองแล้วล้มเหลวและแยกออก ดีใจที่ mknod ทำงาน
Derobert

6

สิ่งที่ฉันทำคือใช้mknod@derobert แนะนำให้สร้างอุปกรณ์ที่mdadmต้องการ ฉันลองหมายเลขหลัก / รอง mdadm บอกฉันว่าไม่พบด้วยตัวอักษรไดรฟ์ที่แตกต่างกันฉันพยายามลบจนกว่าจะทำงาน

mknod /dev/sde1 b 8 17

จากนั้นฉันต้องใช้--forceตัวเลือกเพื่อลบส่วนประกอบ

mdadm /dev/md0 --remove --force /dev/sde1

จากนั้นฉันก็ลบอุปกรณ์บล็อกที่สร้างขึ้น

rm /dev/sde1

อืม ... 8:17 คือ sdb1 (8:65 เป็น sde1) แต่สิ่งนั้นก็ขาดหายไปเช่นกันดังนั้นฉันเดาว่ามันใช้งานได้ ...
derobert

สิ่งนี้ไม่ได้ผลสำหรับฉันmdadmพูดต่อ: "อุปกรณ์หรือทรัพยากรไม่ว่าง" แต่สิ่งนี้ทำให้ฉันพยายามป้อนเขาด้วยอุปกรณ์บล็อกปลอม แต่ด้วยอุปกรณ์บล็อก "จริง" เช่นรูปภาพที่ติดตั้งวนรอบ ณ จุดนี้ฉันค้นพบว่าฉันมีกลิ่นอับ/dev/loopที่ยังคงใช้ไฟล์ในอาร์เรย์ที่เสื่อมโทรม ฉันถอดมันออกและในที่สุดก็mdadmปล่อยให้ฉันหยุดอาร์เรย์ Horay! สำหรับทุกคนที่อ่านสิ่งนี้จะมีคำอธิบายที่สมเหตุสมผลสำหรับmdadmการกระตุกดังนั้นให้มองหากระบวนการเก่า / file / mountpoint / nfs handler / open bash / loopback device / etc ยังคงใช้อาร์เรย์ที่เสื่อมโทรม :)
Avio

ฉันสามารถใช้เวอร์ชันหลักและรองรุ่นเดียวกันได้ (8:18 ในกรณีของฉัน) เพื่อ mknod อุปกรณ์ปลอม / dev / sdb2 หลังจากนั้น mdadm - ลบบันทึกเก่าของ / dev / sdb2 ออกจาก / proc / mdstat อย่าลืม rm / dev / sdb2 หลังจากประสบความสำเร็จ - ลบการกระทำ
ILIV

3

คุณสามารถแก้ไขได้โดยลดจำนวนดิสก์ในอาร์เรย์:

ในกรณีของฉันฉันมีอาร์เรย์ RAID 1 /dev/md0พร้อม/dev/sda1และ "ลบ" ฉันแค่หดมันเพื่อใช้ไดรฟ์เดียวเท่านั้น:

mdadm -G /dev/md0 --raid-devices=1 --force

หลังจากลบออกแล้วจะถูกลบจริงๆ (ไม่มีบรรทัดที่ถูกลบอีกต่อไปในmdadm --detail)


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