いくつかの背景
- ディスク自体は友人によって「処理」されており、まだ完全で破損していません。
- このディスクは、Ubuntu 12.04のソフトウェアRAID 1の一部です。
- 元のRAID 1の別のディスクがフォーマットされ、他の目的に使用され、現在のディスク(問題のディスク)が技術的にまだ存在しなくなったRAIDの一部になりました。
私はすでに試しました。
基本インストール
- ディスクをext3 / ext4としてマークするエントリをfstabに追加してマウントしようとしました。
インストール後、以下のエラーが発生します。
wrong fs type, bad option, bad superblock on
そして情報
EXT4-fs (sdc1): VFS: Can't find ext4 filesystem
ディスクのファイルシステムタイプを見つけようとしました。
$sudo file -s /dev/sdc
/dev/sdc: x86 boot sector; partition 1: ID=0x83, starthead 254, startsector 63, 1953520002 sectors, code offset 0xb8
助けが必要です/質問があります
- データを壊さずにディスクをext4に変換する方法はありますか?
- Linux 83ファイル形式のディスクをマウントしてデータを回復する簡単な方法はありますか?
- 何とかRAIDを再構築できる場合に備えて、現在別の空きディスクがあります。
- 私の主な目標は、ディスクからデータを回復することです。私はすべてのオプションで開いています。
修正する
いくつかのコマンドの出力
fdisk -l /dev/sdc
$fdisk -l /dev/sdc
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: 0x0005ed9c
Device Boot Start End Blocks Id System
/dev/sdc1 63 1953520064 976760001 83 Linux
ファイル -s /dev/sdc1
$file -s /dev/sdc1
/dev/sdc1: data
hexdump -C -n 32256 /dev/sdc(これが役に立つかどうかわからない)
$hexdump -C -n 32256 /dev/sdc` 00000000 fa b8 00 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |................| 00000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..| 00000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u| 00000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 01 8b |.........|...t..| 00000040 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00 |L.....|.........| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001b0 00 00 00 00 00 00 00 00 9c ed 05 00 00 00 00 fe |................| 000001c0 ff ff 83 fe ff ff 3f 00 00 00 82 59 70 74 00 00 |......?....Ypt..| 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00007e00
答え1
これはUbuntu 14.04で完璧に動作します。
sudo -i
mdadm --assemble --scan
あなたは得るでしょう:
mdadm: /dev/md/1 has been started with 1 drive (out of 2)
次に、ファイルをインストールして確認します。
cd /mnt && mkdir to-restore-md1 && mount /dev/md1 to-restore-md1
ls -la to-restore-md1
答え2
Linux mdraidは複数のメタデータ形式。フォーマット0.9と1.0は含まれているデバイスの末尾にメタデータを置き、ペイロード(ファイルシステム)はデバイスの先頭から始まり、raidレイヤーを介さずに直接アクセスできます。フォーマット1.1と1.2は、それぞれメタデータを含むデバイスの中央と開始に配置されているため、ペイロードはオフセットにあります。
Ubuntuインストーラは1.2メタデータ形式を使用してボリュームを作成するため、データはデバイスの先頭ではなくメタデータの後ろから始まります。
このデータにアクセスする最も簡単な方法は、襲撃装置を組み立てることです。 RAID-1ボリュームでは、単一のデバイスで十分です。
madadm -A /dev/sdc1
(痛みが好きではない場合はここで止めてください。)
オフセットを介してデータにアクセスすることもできます。これを行うときに私が見ることができる唯一のポイントは、1.x mdraid形式をサポートしていない非常に古いカーネルで作業する必要がある場合です。まずオフセットを決定しますmdadm -E /dev/sdc1
。直線を探しますData Offset : SSS sectors
。 mdadmセクタは512バイトです。
sectors=$(mdadm -E /dev/sdc1 | awk -F: '$1 ~ /Data offset/ {print $2}')
bytes=$(($sectors * 512))
losetup -f -o $bytes /dev/sdc1
その結果、1.x形式では、データオフセットはリトルエンディアンであるメタデータのバイト128-135に格納されます。 1.2メタデータはデバイス起動後4096バイトです。
パーティションテーブルを変更して追加の起動を可能にすることもできます。算数をするときはとても注意してください。これは、RAIDデバイスにアクセスできない古いシステムでディスクを長期間使用したい場合にのみ必要です。
それともプラットフォームバイトオーダーですか?わかりません。
答え3
驚いたことに、単純に次のようにデータを回復できました。最も重要。
ここで得る助けはとても貴重です。さまざまな提案の組み合わせと私のミックスを試みた結果、理想的なアプローチ(通常のマウントとディスクの使用)はもはやオプションではないようです。この場合、データ復旧に頼ることは私の解決策です。
答え4
mdadmスーパーブロックを削除したようです。存在したことがあり、1.1または1.2形式の場合、ファイルシステムはセクタオフセット2048にある可能性が高くなります。e2fsck /dev/sdc1?offset=2048
強制的に、そのオフセットからファイルシステムを見始めるように実行できます。見つかったら、ファイルシステムが実際に起動する場所を指すようにパーティションテーブルを変更できます。parted /dev/sdc
とunit s
コマンドを使用してセクタ単位で作業できます。print
テーブルの開始セクタと終了セクタを確認し、パーティションを記録して再作成し、rm
同じエンドmkpart
セクタを使用しますが、スタートセクタにオフセットを追加します。
2048が機能しない場合は、1985を試してみることもできます。