web-dev-qa-db-ja.com

RAID-1が組み立てられない、スペアとしてリストされている要素、回復方法は?

最近、Kubuntu12.04ワークステーションを新しい場所に移動しました。通常はシャットダウンされましたが、新しいホームで再起動すると、RAID-1アレイ/ dev/md0はなくなりました!配列の要素はスペアとしてリストされていますか?(!)

RAID-1アレイ/ dev/md0に含まれているのは重要なファイルのみであり、OSは独自のHDD上にあります。

アレイの両方の要素は正常であるように見え、次のようにリストされています。LinuxRAID自動検出。

fdisk -l出力:

# fdisk -l

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000669b6

Device Boot      Start         End      Blocks   Id  System
/dev/sdc1              63  1953520064   976760001   fd  Linux raid autodetect

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes                                         
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors               
Units = sectors of 1 * 512 = 512 bytes                                                
Sector size (logical/physical): 512 bytes / 512 bytes                                 
I/O size (minimum/optimal): 512 bytes / 512 bytes                                     
Disk identifier: 0x0000f142                                                           

Device Boot      Start         End      Blocks   Id  System                        
/dev/sdb1              63  1953520064   976760001   fd  Linux raid autodetect   

mdadm出力:

# mdadm --examine /dev/sdb1 /dev/sdc1
 /dev/sdb1:
         Magic : a92b4efc
       Version : 1.2
   Feature Map : 0x0
    Array UUID : f3d0cc70:52dfd786:d81c7e2d:1c12b06d
          Name : forsaken:0
 Creation Time : Tue Sep  3 04:52:19 2013
    Raid Level : -unknown-
  Raid Devices : 0

Avail Dev Size : 1953517954 (931.51 GiB 1000.20 GB)
   Data Offset : 2048 sectors
  Super Offset : 8 sectors
         State : active
   Device UUID : 75c525b2:cdfbc3c4:918ac90a:a1bedfd0

   Update Time : Thu Nov 20 16:50:46 2014
      Checksum : ff0eb2ba - correct
        Events : 1


  Device Role : spare
  Array State :  ('A' == active, '.' == missing)

/dev/sdc1:
         Magic : a92b4efc
       Version : 1.2
   Feature Map : 0x0
    Array UUID : f3d0cc70:52dfd786:d81c7e2d:1c12b06d
          Name : forsaken:0
 Creation Time : Tue Sep  3 04:52:19 2013
    Raid Level : -unknown-
  Raid Devices : 0 

Avail Dev Size : 1953517954 (931.51 GiB 1000.20 GB)
   Data Offset : 2048 sectors
  Super Offset : 8 sectors
         State : active
   Device UUID : e62e960a:3adf4b5e:f1fb773f:a7a80cfa  

   Update Time : Thu Nov 20 16:50:46 2014
      Checksum : 4ee25b00 - correct
        Events : 1


  Device Role : spare
  Array State :  ('A' == active, '.' == missing)

アレイを停止して自己組織化を試みる:

# mdadm --stop /dev/md0
  mdadm: stopped /dev/md0
# mdadm --assemble -v --scan --uuid=f3d0cc70:52dfd786:d81c7e2d:1c12b06d
  mdadm: looking for devices for /dev/md/0
  mdadm: cannot open device /dev/sr0: No medium found
  mdadm: no RAID superblock on /dev/sdb
  mdadm: no RAID superblock on /dev/sde1
  mdadm: no RAID superblock on /dev/sde
  mdadm: no RAID superblock on /dev/sdd1
  mdadm: no RAID superblock on /dev/sdd
  mdadm: no RAID superblock on /dev/sdc
  mdadm: no RAID superblock on /dev/sda9
  mdadm: no RAID superblock on /dev/sda8
  mdadm: no RAID superblock on /dev/sda7
  mdadm: no RAID superblock on /dev/sda6
  mdadm: no RAID superblock on /dev/sda5                                                                                                 
  mdadm: no RAID superblock on /dev/sda4                                                                                                 
  mdadm: no RAID superblock on /dev/sda3                                                                                                 
  mdadm: no RAID superblock on /dev/sda2                                                                                                 
  mdadm: no RAID superblock on /dev/sda1                                                                                                 
  mdadm: no RAID superblock on /dev/sda                                                                                                  
  mdadm: /dev/sdb1 is identified as a member of /dev/md/0, slot -1.                                                                      
  mdadm: /dev/sdc1 is identified as a member of /dev/md/0, slot -1.                                                                      
  mdadm: added /dev/sdc1 to /dev/md/0 as -1                                                                                              
  mdadm: added /dev/sdb1 to /dev/md/0 as -1                                                                                              
  mdadm: /dev/md/0 assembled from 0 drives and 2 spares - not enough to start the array.

アレイをアセンブルして強制的に実行しようとしています。

# mdadm --assemble -v --scan --force --run --uuid=f3d0cc70:52dfd786:d81c7e2d:1c12b06d
mdadm: looking for devices for /dev/md/0
mdadm: cannot open device /dev/sr0: No medium found
mdadm: no RAID superblock on /dev/sdb
mdadm: no RAID superblock on /dev/sde1
mdadm: no RAID superblock on /dev/sde
mdadm: no RAID superblock on /dev/sdd1
mdadm: no RAID superblock on /dev/sdd
mdadm: no RAID superblock on /dev/sdc
mdadm: no RAID superblock on /dev/sda9
mdadm: no RAID superblock on /dev/sda8
mdadm: no RAID superblock on /dev/sda7
mdadm: no RAID superblock on /dev/sda6
mdadm: no RAID superblock on /dev/sda5
mdadm: no RAID superblock on /dev/sda4
mdadm: no RAID superblock on /dev/sda3
mdadm: no RAID superblock on /dev/sda2
mdadm: no RAID superblock on /dev/sda1
mdadm: no RAID superblock on /dev/sda
mdadm: /dev/sdb1 is identified as a member of /dev/md/0, slot -1.
mdadm: /dev/sdc1 is identified as a member of /dev/md/0, slot -1.
mdadm: added /dev/sdc1 to /dev/md/0 as -1
mdadm: added /dev/sdb1 to /dev/md/0 as -1
mdadm: failed to RUN_ARRAY /dev/md/0: Invalid argument
mdadm: Not enough devices to start the array.

これはまだ機能していません。 RAID-1アレイを再構築して、データへのアクセスを回復するにはどうすればよいですか?

3
exitpoint

RAIDメタデータが何らかの理由で破損したようです。どうしてこうなりました?設定ミス、誤ったスクリプト、ハードウェアの問題などを修正したら、読み取り専用でマウントしてみてください。

mkdir /mnt/{sdb1,sdc1}
mount -o ro,loop,offset=$((2048*512)) /dev/sdb1 /mnt/sdb1
mount -o ro,loop,offset=$((2048*512)) /dev/sdc1 /mnt/sdc1

どちらかがマウントされているかどうかを確認し、既知のタイプのファイルを確認し、どちらかの側でファイルが破損していないかどうかを比較します。これは、バックアップを作成するのにも良い時期です。

どちらの側を維持するかを決定したら、それを使用して新しいRAIDを作成します。

最初のアンマウント:

umount /mnt/{sdb1,sdc1}

/dev/md*に従っていずれかのデバイスを使用している/proc/mdstatがある場合は、それを停止します。

mdadm --stop /dev/md0

この例では、/dev/sdb1を使用して新しいRAID-1を作成します。正しいメタデータバージョンと正しいオフセットを使用する必要があることに注意してください。したがって、上記のマウントが実際に機能した場合にのみこれを実行してください。そうでない場合は、最初に正しいオフセットを決定する必要があります。

mdadm --create /dev/md0 --metadata=1.2 --data-offset=2048 \
      --level=1 --raid-devices=2 /dev/sdb1 missing

繰り返しますが、読み取り専用でマウントして、実際に期待どおりに機能したことを確認します。

mount -o ro,loop /dev/md0 /mnt/sdb1

すべてが順調に進んだら、最後に不足しているデバイスをRAIDに追加します。

mdadm /dev/md0 --add /dev/sdc1

これにより、/ dev/sdc1が/ dev/sdb1のデータで上書きされ、RAIDが同期に戻ることが期待されます。


ちなみに、パーティションはセクター63から始まります。ディスクにまだ512バイトのセクターがある場合は、それで問題ありません。ただし、ほとんどの新しいディスクは4kセクターを使用するため、RAID内のディスクを交換する必要がある場合は、それらの新しいディスクのパーティションの配置にも注意を払う必要があります。

1
frostschutz