Linux Raid1メンバーディスクからのファイルの回復 - できるだけ悪い

Linux Raid1メンバーディスクからのファイルの回復 - できるだけ悪い

仲良くして欲しい。

私はIT企業でWindowsシステムとクラウド技術を担当する技術者として働いているので、残念ながらLinuxの知識は非常に限られています。だから愚かな質問があればご了承ください。しかし、助けてくれるよう努力します。そして、ここに初めて投稿するので、間違った点があれば教えてください。

物語は次のとおりです。新しい顧客が電話をかけて自分のサーバーにアクセスできないと言いました。 - >サーバーが故障しました(新しいPSを使用しても電源装置とマザーボードが故障し、POSTビープ音も聞こえませんでした)。彼の以前のIT会社は1人放送だったが、残念ながら世界を去ったので、何の助けも受けられなかった。

サーバーは、LSI論理RAIDを内蔵した15年の富士通です。内部には、MBに接続された2つの2TB SATA HDDがあります。彼のすべてのデータとソフトウェアデータベースファイルはこのサーバーにあります。もちろん、バックアップはありません。すべてがミラーリングされているので、バックアップは必要ありません。顧客はまた、サーバーオペレーティングシステムをインストールしてから2〜3年前だと述べました。

だから私はDiskinternals RAID Recoveryのようないくつかの回復ツールを使い始めましたが、実際には動作しませんでした。単一のファイルだけをインポートしますが、その一部は機能ドキュメントなのでディスク自体は問題ないようですが、フォルダなどはインポートされません。お客様のソフトウェアを別のシステムに復元するには、完全なフォルダ、サブフォルダ、ファイルが必要です。

しかし、ファイルとフォルダはLinuxシステムにのみ存在することがわかりました。したがって、以前の技術者がLinux OSをインストールし、顧客のためにネットワーク共有を確立したと仮定します。

そのため、RAIDメンバーディスクの1つから別のHDDにダンプファイルをインポートし、さらにテストするためにDebianシステムをセットアップしました。彼がlinux / mdadm Raidを設定したのか、それともオンボードLSI Raidコントローラを使ってこれを行ったのかはまだわかりません。

これまでディスクの取り付けや再組み立ては行われませんでした。どんな助けでも大変感謝します。

  • mount /dev/sdb /mnt/mountpointでエラーが発生しましたFSエラー、オプションエラー、スーパーブロックの破損
  • ディスクは/ dev /にmdとして表示されません。

lsblk:

sdb      8:16   0   1,8T  0 disk 
├─sdb1   8:17   0   240G  0 part 
└─sdb2   8:18   0   1,6T  0 part

fdisk -l

Festplatte /dev/sdb: 1,82 TiB, 2000398934016 Bytes, 488378646 Sektoren
Festplattenmodell: EFAX-68FB5N0    
Einheiten: Sektoren von 1 * 4096 = 4096 Bytes
Sektorgröße (logisch/physikalisch): 4096 Bytes / 4096 Bytes
E/A-Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x87c99aec

Gerät      Boot     Anfang       Ende   Sektoren Größe Kn Typ
/dev/sdb1  *          2048   62916607   62914560  240G fd Linux RAID-Autoerkennung
/dev/sdb2         62916608 3897729167 3834812560 14,3T fd Linux RAID-Autoerkennung
/dev/sdb3       3897729168 3907029167    9300000 35,5G fd Linux RAID-Autoerkennung

mdadm --query /dev/sdb

/dev/sdb: is not an md array

mdadm - アセンブリ - スキャン

mdadm: No arrays found in config file or automatically

mdadm --/dev/sdbの確認

mdadm: No md superblock detected on /dev/sdb

どんな助けやヒントでも事前に感謝します。 KofftheHoff

編集1:

使用後

losetup --find --show --read-only --sector-size 512 --partscan /dev/sdb

そして

mdadm --examine /dev/loop*

私はこれが有望に見えると思います。

/dev/loop0:
   MBR Magic : aa55
Partition[0] :     62914560 sectors at         2048 (type fd)
Partition[1] :   3834812560 sectors at     62916608 (type fd)
Partition[2] :      9300000 sectors at   3897729168 (type fd)
/dev/loop0p1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 7e3b9767:71d0e46d:6fe589d3:47671ff3
           Name : schobert-fs:0
  Creation Time : Wed Mar 27 18:49:49 2019
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 62881792 (29.98 GiB 32.20 GB)
     Array Size : 31440896 (29.98 GiB 32.20 GB)
    Data Offset : 32768 sectors
   Super Offset : 8 sectors
   Unused Space : before=32680 sectors, after=0 sectors
          State : clean
    Device UUID : 34f9240c:3f35c4a9:b20f6259:5a6a295e

    Update Time : Fri Dec  2 16:10:26 2022
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : 9882cebb - correct
         Events : 430


   Device Role : Active device 1
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/loop0p2:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 1c73d398:e5404786:1cba7820:fb5e4cd5
           Name : schobert-fs:1
  Creation Time : Wed Mar 27 18:50:09 2019
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 3834550416 (1828.46 GiB 1963.29 GB)
     Array Size : 1917275200 (1828.46 GiB 1963.29 GB)
  Used Dev Size : 3834550400 (1828.46 GiB 1963.29 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262056 sectors, after=16 sectors
          State : clean
    Device UUID : 038f5d97:741a9a29:c4803eec:d5502d4b

Internal Bitmap : 8 sectors from superblock
    Update Time : Wed Nov 30 10:19:49 2022
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : 5dcb018a - correct
         Events : 12662


   Device Role : Active device 1
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/loop0p3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 00bd818b:55eed0df:3ad0c7d3:0c7a3a97
           Name : schobert-fs:2
  Creation Time : Wed Mar 27 18:50:31 2019
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 9291808 (4.43 GiB 4.76 GB)
     Array Size : 4645888 (4.43 GiB 4.76 GB)
  Used Dev Size : 9291776 (4.43 GiB 4.76 GB)
    Data Offset : 8192 sectors
   Super Offset : 8 sectors
   Unused Space : before=8104 sectors, after=32 sectors
          State : clean
    Device UUID : 1577f59e:d2022fbc:d0b79765:f127efbc

    Update Time : Wed Nov 30 00:01:49 2022
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : dc81c5d0 - correct
         Events : 92


   Device Role : Active device 1
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
mdadm: No md superblock detected on /dev/loop1.
mdadm: No md superblock detected on /dev/loop2.
mdadm: No md superblock detected on /dev/loop3.
mdadm: No md superblock detected on /dev/loop4.
mdadm: No md superblock detected on /dev/loop5.
mdadm: No md superblock detected on /dev/loop6.
mdadm: No md superblock detected on /dev/loop7.
mdadm: cannot open /dev/loop-control: Invalid argument

@frostschutzと画像のインポートに関するヒントに感謝します。これでダンプされたディスクが使用されており、元のディスクは変更されていません。

@gabor.zedこの別の名前schobert-fs:0 /schobert-fs:1 /schobert-fs:2はあなたの仮説を証明しますか?または:その後の数字はマーカーにすぎず、レイドのどのドライブですか?

lsblkは次のようになります。

NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0       7:0    0   1,8T  1 loop 
├─loop0p1 259:0    0    30G  1 part 
├─loop0p2 259:1    0   1,8T  1 part 
└─loop0p3 259:2    0   4,4G  1 part

fdiskも今合理的に見えます。

Festplatte /dev/loop0: 1,82 TiB, 2000398934016 Bytes, 3907029168 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x87c99aec

Gerät        Boot     Anfang       Ende   Sektoren Größe Kn Typ
/dev/loop0p1 *          2048   62916607   62914560   30G fd Linux RAID-Autoerkennung
/dev/loop0p2        62916608 3897729167 3834812560  1,8T fd Linux RAID-Autoerkennung
/dev/loop0p3      3897729168 3907029167    9300000  4,4G fd Linux RAID-Autoerkennung

これで、/dev/に3つのMDデバイスがリストされています。

MD125 MD126 MD127

mdadm --query --detail  /dev/md126

/dev/md125:
           Version : 1.2
        Raid Level : raid0
     Total Devices : 1
       Persistence : Superblock is persistent

             State : inactive
   Working Devices : 1

              Name : schobert-fs:2
              UUID : 00bd818b:55eed0df:3ad0c7d3:0c7a3a97
            Events : 92

    Number   Major   Minor   RaidDevice

       -     259        2        -        /dev/loop0p3


mdadm --query --detail /dev/md126

/dev/md126:
           Version : 1.2
        Raid Level : raid0
     Total Devices : 1
       Persistence : Superblock is persistent

             State : inactive
   Working Devices : 1

              Name : schobert-fs:1
              UUID : 1c73d398:e5404786:1cba7820:fb5e4cd5
            Events : 12662

    Number   Major   Minor   RaidDevice

       -     259        1        -        /dev/loop0p2


mdadm --query --detail /dev/md127

/dev/md127:
           Version : 1.2
        Raid Level : raid0
     Total Devices : 1
       Persistence : Superblock is persistent

             State : inactive
   Working Devices : 1

              Name : schobert-fs:0
          UUID : 7e3b9767:71d0e46d:6fe589d3:47671ff3
        Events : 430

Number   Major   Minor   RaidDevice

   -     259        0        -        /dev/loop0p1

mdデバイス自体はマウントできませんか?奇妙なことは、mdデバイスがRaid0だったということです。今何をすべきかわかりません。

少なくとも私が試したときは:

mount -o ro -t auto /dev/md125 /mnt/raid1

私は得る:

mount: /mnt/raid1: Der Superblock von /dev/md125 konnte nicht gelesen werden.

スーパーブロックを読むことができません

近づく前に何とか攻撃隊を集めるべきだと思いますか?

編集2:@frostschutzリクエストに応じて実行しました。

file -s /dev/md*

/dev/md125: empty
/dev/md126: empty
/dev/md127: empty

そして

blkid

/dev/sda1: UUID="ae7d369d-cf6b-4f84-a010-5d8a4c6fac80" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="248a7be6-01"
/dev/sda5: UUID="e49af320-e5fc-45fa-91b4-528b231f0bbd" TYPE="swap" PARTUUID="248a7be6-05"
/dev/sdb1: PARTUUID="87c99aec-01"
/dev/loop0p1: UUID="7e3b9767-71d0-e46d-6fe5-89d347671ff3" UUID_SUB="34f9240c-3f35-c4a9-b20f-62595a6a295e" LABEL="schobert-fs:0" TYPE="linux_raid_member" PARTUUID="87c99aec-01"
/dev/loop0p2: UUID="1c73d398-e540-4786-1cba-7820fb5e4cd5" UUID_SUB="038f5d97-741a-9a29-c480-3eecd5502d4b" LABEL="schobert-fs:1" TYPE="linux_raid_member" PARTUUID="87c99aec-02"
/dev/loop0p3: UUID="00bd818b-55ee-d0df-3ad0-c7d30c7a3a97" UUID_SUB="1577f59e-d202-2fbc-d0b7-9765f127efbc" LABEL="schobert-fs:2" TYPE="linux_raid_member" PARTUUID="87c99aec-03"

編集3:

だから私はすべてのデータが次のmd126にあると思ったので、私は以下を実行しました。

mdadm --stop /dev/md126
mdadm: stopped /dev/md126

その後、自動組み立てを試み、md126を再組み立てしてみました。

mdadm --assemble --scan
mdadm: /dev/md/schobert-fs:1 has been started with 1 drive (out of 2).

その後、インストールしようとしましたが読み取り専用なのでインストールできないというメッセージが表示されます。ループデバイスが読み取り専用モードなので、これは意味があります。しかし、-o roオプションを使用して読み取り専用モードでインストールした場合は実行できませんか?

mount -o ro /dev/md/schobert-fs\:1 /mnt/raid1
mount: /mnt/raid1: /dev/md126 konnte nicht im Lese-Schreib-Modus eingehängt werden, (Medium) ist schreibgeschützt..

編集4:

万歳、わかりました!

マウントマニュアルで最後のヒントを見つけてください。

-r, --読み取り専用

ファイルシステムを読み取り専用でマウントします。同義語は-o roです。

ファイルシステムのタイプ、状態、およびカーネルの動作に応じて、システムはまだデバイスに書き込むことができます。たとえば、ファイルシステムが汚れている場合、Ext3またはext4はそのログを再生します。このような書き込みアクセスを防止するには、ro,noloadマウントオプションを使用してext3またはext4ファイルシステムをマウントするか、ブロックデバイスを読み取り専用モードに設定する必要があります。 blockdev(8) コマンドを参照してください。

[… ]

回復なし/ロードなし

インストール時にジャーナルをロードしないでください。ファイルシステムが完全にマウント解除されていない場合、ログの再生をスキップすると、ファイルシステムに不整合が含まれ、多くの問題が発生する可能性があります。

だから私は以下を実行しました。

mount -o ro,noload /dev/md/schobert-fs\:1 /mnt/raid

ジャジャン、すべてのファイルがそこにあります!

助けてくれた@frostschutzと@gabor.zedに感謝します!

良い一日になってください。

ベストアンサー1

ここで最大の問題は、RAIDではなく、偽のパーティションテーブルです。パーティションテーブルは512バイトセクタ用に作成されましたが、ドライブは4Kベースセクタとして検出されました。したがって、すべてのパーティションオフセットとサイズが完全に間違っています。

この問題を解決するにはlosstupを使用できます。

losetup --find --show --read-only --sector-size 512 --partscan /dev/sdb

次に、ループデバイスに有効なパーティションとmdadmメタデータがあることを確認してください。

mdadm --examine /dev/loop*

それからそこに進むなら、もう質問がないことを願っています。

ドライブに障害がある場合は、ddrescueまず画像の抽出を検討することもできます。イメージファイルもデフォルトで通常512バイトセクタで処理されます。

すべてを読み取り専用に設定または使用記録中にコピーを上書きする

おすすめ記事