パフォーマンスが低下した単一のmdadm raid1ドライブからファイルを回復する方法は? 「アレイを起動するのに十分ではありません。」

パフォーマンスが低下した単一のmdadm raid1ドライブからファイルを回復する方法は? 「アレイを起動するのに十分ではありません。」

ダウングレード/再構築された状態のraid1ドライブを強制的にマウントできますか?ペアリングと再構築という危険な作業を進める前に、すべてのファイルを復元したいと思います。私が知っている限り、ドライブの外観は良好で破損していません。ドライブのペアに部分的にエラーが発生しました。

ドライブが再構築されていない場合はどうするかを正確に知っていました。私が試したことは次のとおりです。

# mdadm --verbose --assemble /dev/md8 /dev/sdb1  --force
mdadm: looking for devices for /dev/md8
mdadm: /dev/sdb1 is identified as a member of /dev/md8, slot 1.
mdadm: no uptodate device for slot 0 of /dev/md8
mdadm: added /dev/sdb1 to /dev/md8 as 1
mdadm: /dev/md8 assembled from 0 drives and  1 rebuilding - not enough to start the array.

# cat /proc/mdstat                       
md8 : inactive sdb1[1](S)
      976759808 blocks super 1.2          
md0 : active raid1 sdc1[0]
      976759672 blocks super 1.2 [2/1] [U_]

# mdadm --stop /dev/md8
mdadm: stopped /dev/md8

# mount /dev/sdb1 /mnt/temp2
mount: unknown filesystem type 'linux_raid_member'

# mount -o ro -t ext3 -b 2048 /dev/sdb1 /mnt/temp1
mount: wrong fs type, bad option, bad superblock on /dev/sdb1.

# foremost -i /dev/sdb -o /tmp/foo    (this results in perfectly good files)

この特別なケースでは、コマンドはforemostファイルを復元するため、正しいスーパーブロックオフセットしか取得できない場合は、ドライブに何かが必要です。

この特別な場合、配列の2つの部分を組み立てるとカーネルパニック(!)が発生するため、とにかく実際にはオプションではありません(セキュリティの問題は取り除いてください)。


更新:mdadmの出力が追加されました。

# mdadm --examine /dev/sdb1
/dev/sdb1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x2
     Array UUID : e00a291e:016bbe47:09526c90:3be48df3
           Name : ubuntu:0
  Creation Time : Wed May 11 12:26:39 2011
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 1953519616 (931.51 GiB 1000.20 GB)
     Array Size : 1953519344 (931.51 GiB 1000.20 GB)
  Used Dev Size : 1953519344 (931.51 GiB 1000.20 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
Recovery Offset : 0 sectors
          State : clean
    Device UUID : 41346f44:ccacbbf7:0c17c133:eb7b341f

    Update Time : Sat Apr 13 00:02:08 2013
       Checksum : 483a0a44 - correct
         Events : 402833


   Device Role : Active device 1
   Array State : AA ('A' == active, '.' == missing)

答え1

RAID 1でデータオフセット(2048セクタ、通常は正確なデータオフセットを見つけることができるなどmdadm --examine /dev/sdb1)がわかっている場合は、次のように読み取り専用(安全のために)ループデバイスを作成できます。

# losetup --find --show --read-only --offset $((2048*512)) /dev/sdb1

/dev/loop7

次に、印刷されたループデバイスを確認してインストールしてみてください。

# fsck.ext3 -n -v /dev/loop7
# mount -o ro /dev/loop7 /mnt/recovery

-o ro,loop,offset=マウントオプションを使用してこれを直接実行することは可能ですが、実際に読み取り専用であることを確認するためにループデバイスを手動で作成することをお勧めします。

ファイルシステム自体が破損している場合は、イメージを作成し、そのイメージに対してddこのような実験を実行する必要があります。fsckあるいは、Linuxネットワークブロックデバイスを使用して、ディスクの上部に書き込むときにコピーレイヤーを配置することもできます。これによりfsck、ディスク自体に何も書き込むことなく、実際にそのレイヤーに何でも書き込むことができます(nbd-server -c/、それでデバイスがnbd-client作成されます)。/dev/nbdXあなたの使用のために)。おそらくデバイスマッパーを使って同じことをすることができますが、私は一度も試したことがありません。

答え2

次のコマンドを使用して、アレイ内のRAIDデバイスの数を1に設定できます。

mdadm /dev/md8 --grow --raid-devices=1 --force

/proc/mdstatその後、有効になっていることを確認してくださいmd8。データをコピーする前に読み取り専用でマウントする必要があります。

関連情報