mdadm: RAID 1'deki bileşenler kaldırılamıyor


14

Mdadm kullanarak bir RAID 1 dizisinde benim / önyükleme bölüm var. Bu dizi geçmişte birkaç kez bozuldu ve fiziksel sürücüyü her kaldırdığımda, yeni bir tane eklediğimde, diziyi normale getirdiğinde, yeni bir sürücü harfi kullanıyor. Eski diziyi hala dizide bırakarak başarısız oldu. Artık var olmayan tüm bileşenleri kaldıramıyorum.

[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_]

Varolmayan sürücüleri ve bölümleri kaldırmaya çalıştığım şey. Örneğin /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

Yani 8:49ben inanıyorum gösterilen büyük ve küçük sayısını ifade eder --detail, ama oldukça emin buradan nereye değilim. Yeniden başlatma veya mdadm'ı yeniden başlatmaktan kaçınmaya çalışıyorum.

[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

Not: Dizi şu anda meşru bir şekilde bozuluyor ve konuştuğumuzda orada yeni bir sürücü alıyorum. Ancak, yukarıda gördüğünüz gibi, bu önemli değil. Hala /dev/sdb1bu diziden kaldırmak mümkün olmalıdır .


"Kaldırıldı" durumunda bir diski çıkarmak için --force'a ihtiyacınız yoktur ve daha ciddi bir sorunu gizleyebilir. Bırakın onu.

Yanıtlar:


16

Bunun nedeni, aygıt düğümlerinin artık sisteminizde bulunmamasıdır (muhtemelen sürücü öldüğünde bunları udev kaldırmıştır). Anahtar kelimeyi kullanarak bunları kaldırabilmeniz failedveya detachedbunun yerine:

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

Eğer mdadm sürümünüz bunu yapmak için çok eskiyse mknod, cihazı tekrar var ederek çalıştırabilirsiniz. Ya da, dürüst olmak gerekirse, sadece görmezden gelin - bu gerçekten bir sorun değil ve bir dahaki sefere yeniden başlattığınızda ortadan kalkmalı.


Anahtar kelimeleri kullanmayı denedim, orijinal yayında bana verdiği çıktıyı görebilirsiniz. Bir bakayım mknod. Evet, muhtemelen bir sorun değil, ama ben OKB, lol.
Sajan Parikh

Evet, bunu yapmak için mknod kullandım ve işe yaradı.
Sajan Parikh

@SajanParikh gerçekten, bir şekilde zaten denediğinizi gösteren çizgileri kaçırmış ve başarısız olmuştu. Mknod'un çalışmasına sevindim.
derobert

6

Ne yaptığımı mknod@derobert aradığı cihazları oluşturmak için önerilen gibi kullanmak mdadmoldu. Mdadm'ın çalışana kadar kaldırmaya çalıştığım farklı sürücü harfleriyle bulamadığını söyleyen büyük / küçük sayıları denedim.

mknod /dev/sde1 b 8 17

Sonra --forcebileşeni kaldırmak için seçeneği kullanmak zorunda kaldı .

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

Sonra, oluşturulan blok cihazını kaldırdım.

rm /dev/sde1

Hmm ... 8:17 sdb1. (8:65 sde1) Ama bu da eksikti, bu yüzden sanırım işe yarıyor ...
derobert

Bu benim için işe yaramadı, mdadm"cihaz veya kaynak meşgul" demeye devam etti, ama bu onu sahte bir blok cihazıyla değil, geri döngü monte edilmiş bir görüntü gibi "gerçek" bir blok cihazla beslemeye çalışmamı sağladı. Bu noktada, /dev/loophala bozulmuş dizide bir dosya kullanan bir bayat olduğunu keşfettim . Ayrıldım ve sonunda mdadmdiziyi durdurmama izin verdim . Horay! Bunu okuyan herkes için mdadm, bu kadar sarsıntılı olmanın her zaman mantıklı bir açıklaması vardır , bu nedenle eski bir işlem / dosya / mountpoint / nfs işleyici / açık bash / geri döngü cihazı / vb. hala bozulmuş diziyi kullanıyor. :)
Avio

Sahte / dev / sdb2 cihazı mknod için aynı büyük ve küçük sürümleri (benim durumumda 8:18) kullanabildim. Bundan sonra, mdadm / proc / mdstat dizininden / dev / sdb2'nin eski kaydını siler. İşlemi başarıyla tamamladıktan sonra rm / dev / sdb2 komutunu kullanmayı unutmayın.
ILIV

3

Ayrıca, dizideki disklerin sayısını azaltarak da düzeltebilirsiniz:

Benim durumumda raid-1 dizisi /dev/md0var /dev/sda1ve "kaldırıldı". Sadece bir sürücüyü kullanmak için küçülttüm:

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

Kaldırıldıktan sonra gerçekten kaldırıldı (artık kaldırılan çizgiler yok mdadm --detail)


Yine de bu yaklaşıma dikkat etmelisiniz. Raid cihazlarını değiştirmeden önce ne tür RAID ile uğraştığınızı anlayın.
ILIV
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.