mdadm:RAID 1のコンポーネントを削除できません


14

mdadmを使用してRAID 1アレイに/ bootパーティションを作成しました。このアレイは過去数回劣化しており、物理ドライブを取り外すたびに新しいドライブを追加し、アレイを正常に戻すたびに、新しいドライブ文字が使用されます。古いアレイをアレイに残したまま、失敗しました。存在しなくなったすべてのコンポーネントを削除することはできないようです。

[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この配列から削除できるはずです。


"removed"状態のディスクを削除するのに--forceは必要ありません。これは、より深刻な問題を隠す可能性があります。そのままにしておきます。

回答:


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。ええ、それはおそらく問題ではありませんが、私はOCDです、笑。
サジャンパリフ

ええ、私はmknodを使用してこれを完了し、機能しました。
サジャンパリク

@SajanParikh確かに、どういうわけか、すでに失敗して切り離されていることを示す行を見逃していました。mknodが機能したことを嬉しく思います。
デロベルト

6

私がやったmknodことmdadmは、探しているデバイスを作成するために提案された@derobertのような使用でした。メジャー番号/マイナー番号を試してみましたが、mdadmは、機能するまで削除しようとしていたさまざまなドライブ文字では見つからないと言っていました。

mknod /dev/sde1 b 8 17

次に、--forceオプションを使用してコンポーネントを削除する必要がありました。

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

次に、作成したブロックデバイスを削除しました。

rm /dev/sde1

うーん... 8:17はsdb1です。(8:65はsde1)しかし、その1つも欠落していたので、それはうまくいくと思います
...-デロバート

これは私にとってはうまくいかず、mdadm「デバイスまたはリソースがビジー」と言い続けましたが、偽のブロックデバイスではなく、ループバックマウントされたイメージなどの「真の」ブロックデバイスで彼を養おうとしました。この時点で/dev/loop、劣化したアレイ上のファイルをまだ使用している古いものがあることを発見しました。私はそれを切り離し、最後mdadmにアレイを停止させました。ほら!これを読んでいるすべての人にとってmdadm、とてもジャークであるという論理的な説明が常にあるので、古いプロセス/ファイル/マウントポイント/ nfsハンドラ/ open bash / loopback device /などを探してください。劣化したアレイを引き続き使用しています。:)
Avio

まったく同じメジャーバージョンとマイナーバージョン(私の場合は8:18)を使用して、偽の/ dev / sdb2デバイスをmknodできました。その後、mdadm --removeは/ proc / mdstatから/ dev / sdb2の古いレコードを削除しました。--removeアクションが成功したら、忘れずにrm / dev / sdb2を実行してください。
ILIV

3

アレイ内のディスクの数を脱脂するだけで修正することもできます。

私の場合、raid-1配列/dev/md0/dev/sda1あり、「削除」されています。私はただ1つのドライブだけを使用するためにそれを単に縮めました:

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

削除された後、削除されました(削除された行はもうありませんmdadm --detail


ただし、このアプローチには注意する必要があります。--raid-devicesを変更する前に、どのタイプのRAIDを扱っているかをよく理解してください。
ILIV
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.