web-dev-qa-db-ja.com

mdadmにRAID5アレイを強制的に停止させる方法は?

4つのドライブで構成される/dev/md127 RAID5アレイがあります。私はなんとかアレイからホットリムーブを削除し、現在/dev/md127にはドライブがありません。

cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdd1[0] sda1[1]
      304052032 blocks super 1.2 [2/2] [UU]

md1 : active raid0 sda5[1] sdd5[0]
      16770048 blocks super 1.2 512k chunks

md127 : active raid5 super 1.2 level 5, 512k chunk, algorithm 2 [4/0] [____]

unused devices: <none>

そして

mdadm --detail /dev/md127
/dev/md127:
        Version : 1.2
  Creation Time : Thu Sep  6 10:39:57 2012
     Raid Level : raid5
     Array Size : 8790402048 (8383.18 GiB 9001.37 GB)
  Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
   Raid Devices : 4
  Total Devices : 0
    Persistence : Superblock is persistent

    Update Time : Fri Sep  7 17:19:47 2012
          State : clean, FAILED
 Active Devices : 0
Working Devices : 0
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       0        0        1      removed
       2       0        0        2      removed
       3       0        0        3      removed

mdadm --stop /dev/md127を実行しようとしましたが、

mdadm --stop /dev/md127
mdadm: Cannot get exclusive access to /dev/md127:Perhaps a running process, mounted filesystem or active volume group?

umount -l /dev/md127がマウント解除されていることを確認し、実際にマウント解除されていることを確認しました。

umount /dev/md127
umount: /dev/md127: not mounted

各ドライブのスーパーブロックをゼロにしようとしましたが、(各ドライブに対して)次のようになります。

mdadm --zero-superblock /dev/sde1
mdadm: Unrecognised md component device - /dev/sde1

lsof | grep md127の出力は次のとおりです:

lsof|grep md127
md127_rai  276       root  cwd       DIR                9,0          4096          2 /
md127_rai  276       root  rtd       DIR                9,0          4096          2 /
md127_rai  276       root  txt   unknown                                             /proc/276/exe

他に何ができますか? LVMもインストールされていないため、要因にはなりません。


何度も突っ込んだ後、ようやくアレイの停止を妨げている原因を見つけました。 SAMBAプロセスでした。サービスsmbdの停止後、アレイを停止することができました。奇妙なのは、ある時点でアレイがマウントされ、SAMBAを介して共有されていたにもかかわらず、停止しようとしたときにすでにマウント解除されていたためです。

10
matt

これは古い質問であり、元の投稿者はSAMBAが問題であると信じていましたが、同じ正確な問題を経験し、SAMBAではなかった可能性が高いと思います(実際にはSAMBAさえ持っていません)。 lsofの出力には表示されませんが、ユーザーはルートに切り替えたとき、またはSudoを実行したときにすでにRAIDマウントポイントディレクトリにいました。

私の場合、問題は、マウントされた/dev/md127ドライブにあるディレクトリに通常のユーザーがいるときにルートシェルを起動したことでした。

user1@comp1:/mnt/md127_content/something$ su -
root@comp1:~# umount /dev/md127
umount: /dev/md127: target is busy

私の場合のlsofの出力は次のとおりです。

root@comp1:root@comp1:~# lsof | grep /dev/md127
md127_rai  145            root  cwd       DIR      253,0     4096          2 /
md127_rai  145            root  rtd       DIR      253,0     4096          2 /
md127_rai  145            root  txt   unknown                                /proc/145/exe

lsof | grep md125には[md127_raid1]以外のプロセスは表示されませんでしたが、/dev/md127をアンマウントできませんでした。また、umount -l /dev/md127mountの出力から/dev/md127を隠しますが、ドライブはまだビジー状態であり、mdadm --stop /dev/md127を試行すると同じエラーが表示されます。

mdadm: Cannot get exclusive access to /dev/md127:Perhaps a running process, mounted filesystem or active volume group?

[〜#〜] solution [〜#〜]は簡単です。そのドライブのディレクトリにまだログインしているユーザーがログインしているかどうかを確認します。特に、使用しているルートシェルが、通常のユーザーの現在のディレクトリがそのドライブにあるときに起動されたかどうかを確認してください。そのユーザーのシェルに切り替えて(たぶんexitだけがルートになります)、別の場所に移動すると、umountmdadm --stopが機能します。

root@comp1:~# exit
user1@comp1:/mnt/md127_content/something$ cd /
user1@comp1:/$ su -
root@comp1:~# umount /dev/md127
root@comp1:~# mdadm --stop /dev/md127
mdadm: stopped /dev/md127
7
sd1074

Mdadmの上でLVMを使用している場合、ボリュームグループを非アクティブ化しても、LVMがデバイスマッパーデバイスを削除しないことがあります。手動で削除できます。

  1. Sudo vgdisplayの出力に何もないことを確認します。
  2. /dev/mapper/をご覧ください。 controlファイルとは別に、ボリュームグループにちなんで名付けられたデバイスマッパーデバイスが必要です。 VolGroupArray-name
  3. Sudo dmsetup remove VolGroupArray-nameを実行します(VolGroupArray-nameをデバイスマッパーデバイスの名前に置き換えます)。
  4. これでSudo mdadm --stop /dev/md0(またはmdadmデバイスの名前が何であれ)を実行できるようになります。
7

私は同様の問題に遭遇していましたが、どのような方法でもraidデバイスをマウントしていませんでした。 SAMBAを停止しても効果がないようです。 lsofは何も表示しませんでした。

結果は次のとおりです。

# mdadm --stop /dev/md2
mdadm: Cannot get exclusive access to /dev/md2:Perhaps a running process, mounted filesystem or active volume group?

最後に修正したのは、これがスワップパーティションであることを思い出していたため、swapoff /dev/md2-これによりmdadm --stop /dev/md2が成功しました。

1
bcrook88