単一の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
コマンドはファイルを回復するため、スーパーブロックのオフセットのみを正しく取得できた場合、ドライブに確実に何かが存在します。
そして、この特定のケースでは、配列の両方の半分をアセンブルするとカーネルがクラッシュするため、(安全性の問題を除いて)とにかくそれは現実的な選択肢ではありません。
更新: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)
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
mountは-o ro,loop,offset=
オプションを使用してこれを直接実行できる場合がありますが、ループデバイスを手動で作成して、本当に読み取り専用であることを確認することを好みます。
ファイルシステム自体が破損している場合は、dd
を使用してイメージを作成し、そのイメージに対してfsck
などの実験を実行する必要があります。または、Linuxネットワークブロックデバイスを使用して、ディスク上にコピーオンライトレイヤーを配置できます。これにより、実際にディスク自体に何も書き込まずに、そのレイヤーをfsck
できます(nbd-server -c
/nbd-client
は/dev/nbdX
デバイスを作成します)。デバイスマッパーでも同じことができるかもしれませんが、私は試したことはありません。
以下を使用して、アレイ内のRAIDデバイスの数を1に設定できるはずです。
mdadm /dev/md8 --grow --raid-devices=1 --force
その後、/proc/mdstat
かどうかを確認しますmd8
アクティブです。データをコピーするまでは、読み取り専用でマウントする必要があります。