web-dev-qa-db-ja.com

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

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を削除できるはずです。

14
Sajan Parikh

これは、デバイスノードがシステムに存在しないためです(おそらく、ドライブが停止したときに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再存在させることで機能させることができる場合があります。または、正直に言って、無視してください。これは実際には問題ではなく、次に再起動したときに消えるはずです。

16
derobert

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

mknod /dev/sde1 b 8 17

次に、--forceオプションを使用して、コンポーネントを削除します。

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

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

rm /dev/sde1
7
Sajan Parikh

アレイ内のディスクの数を減らすだけでも修正できます。

私の場合、私はraid-1配列/dev/md0/dev/sda1を持ち、「削除」しました。 1つのドライブのみを使用するように単純に縮小しました。

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

その後、実際に削除されました(削除された行はmdadm --detailにはありません)

3
Limalski