web-dev-qa-db-ja.com

非標準の2ドライブRAID5アレイからドライブを削除するにはどうすればよいですか?

RAIDアレイの形状変更に関する情報がいくつかあります ですが、少し緊張しているので確認してください。

問題:ソフトウェアRAID 5(mdadm)として2つの500GBドライブがあります。 RAIDの冗長性は弱虫用なので、2つのドライブのうちの1つを解放したいと思います...

mdadm --grow --array-size=1

続いて

mdadm --grow --raid-disks 1

これは単純すぎるようです。どのドライブが解放されるかをどのように指定しますか?この操作の理由の一部は、バックアップを実行するための追加のスペースがないことです。

編集:現状では、これは非標準のRAID5実装です(Dave Mまたはgmanによるコメントを参照)。しかし、無謀さで私を責めないでください。私は、このドライブの取り外しを行う最もリスクの低い方法に単に興味があります。バックアップの問題を処理したが、バックアップから再構築するためにそれを使用するつもりはないと仮定しましょう。


$ Sudo mdadm --detail --test /dev/md1 
/dev/md1:
        Version : 00.90
  Creation Time : Sat Sep  1 18:08:21 2007
     Raid Level : raid5
     Array Size : 488383936 (465.76 GiB 500.11 GB)
  Used Dev Size : 488383936 (465.76 GiB 500.11 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 1
    Persistence : Superblock is persistent

Update Time : Mon Nov 28 11:32:13 2011
      State : clean
</ code>

アクティブデバイス:2 動作デバイス:2 障害デバイス:0 スペアデバイス:0
     Layout : left-symmetric
 Chunk Size : 64K

       UUID : XXX (local to Host XXX)
     Events : 0.29336

Number   Major   Minor   RaidDevice State
   0       8       33        0      active sync   /dev/sdc1
   1       8       17        1      active sync   /dev/sdb1

3
DrSAR

Mdadmを使用すると、2ドライブのRAID5はRAID0ではなくRAID1とバイナリで同一になり、魔法のように見えないデバイスはありません。配列は2つのコンポーネントのそれぞれと同じサイズであり、それらの合計ではないため、わかります。

Array Size : 488383936 (465.76 GiB 500.11 GB)
Used Dev Size : 488383936 (465.76 GiB 500.11 GB)

次のようにして確認できます。

 dd if=/dev/sdb1 bs=512 count=1024 of=/tmp/b1
 dd if=/dev/sdc1 bs=512 count=1024 of=/tmp/c1

 md5sum /tmp/b1
 md5sum /tmp/c1

ドライブが冗長であるため、md5はそれぞれ同じです。これはRAIDと同じであるため、停止した後、同じデバイス上にRAID1を作成し、同じデータを持つことができます。

mdadm -C /dev/md1  --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

または、1つのデバイスだけでRAID1を実行し、他のデバイスを解放します。

mdadm -C /dev/md1  --level=1 --raid-devices=1 --force /dev/sdb1

次に、削除されたスーパーブロックのスーパーブロックをクリアします。

mdadm /dev/sdc1 --zero-superblock

これはmdadmスーパーブロックバージョン0.90であるため、各ドライブも単独で使用できる必要があります。 1.1と1.2はメタデータを配列の先頭近くに配置するため、これらのバージョンでは機能しません。

4
Ray M

この質問は数年前に回答されたと思いますが、最近同様の問題を解決しました。質問とRayMの回答の両方にある程度の明確さを加えることができると思います...

スーパーブロックバージョン1.2を実行している同様の2ドライブRAID5は、Ray Mが述べたように、RAID1とバイナリで同一です。ただし、v0.9のアレイとは異なり、1.xメタデータのアレイでは、デバイスの開始とアレイデータの開始の間にギャップが残る可能性があります。したがって、2つのデバイスの同等性を検証するために、最初に各コンポーネントのデータオフセットを決定します。

mdadm --examine /dev/sdb1
mdadm --examine /dev/sdc1

デバイスごとに次のような行が表示されます(デフォルトでは両方で同じです)。

Data Offset : 262144 sectors

ここからデバイスデータが始まります。ここから、いくつかのデータをコピーします。

dd if=/dev/sdb1 skip=262144 bs=512 count=1024 of=/tmp/b1
dd if=/dev/sdc1 skip=262144 bs=512 count=1024 of=/tmp/c1

Md5の合計は等しくなければなりません:

$ md5sum /tmp/b1 /tmp/c1
6b327bb46f25587806d11d50f95ff29b  /tmp/b1
6b327bb46f25587806d11d50f95ff29b  /tmp/c1

ドライブは実際には相互のミラーであるため、障害が発生して1つのドライブを取り外し、アレイを劣化させたままにすることができます。

mdadm /dev/md1 --fail /dev/sdc1 --remove /dev/sdc1
mdadm --zero-superblock /dev/sdc1

または、シングルディスクRAID1から始めてください。

mdadm --stop /dev/md1
mdadm --create /dev/md1 --level 1 --raid-devices 1 --force /dev/sdb1
mdadm --zero-superblock /dev/sdc1

2ディスクのRAID5はRAID1とバイナリで同等ですが、単純に次のことはできません。

mdadm --grow --raid-devices 1

2ドライブRAID5を使用。

1
ryank