Bagaimana cara me-mount / memulihkan data pada disk yang merupakan bagian dari mdadm raid 1 di komputer lain?

17

Beberapa latar belakang

  • Disk itu sendiri "dikerjakan" oleh seorang teman dan dikatakan masih utuh, tidak rusak dan masih dapat dipasang / dipulihkan
  • Disk adalah bagian dari serangan perangkat lunak 1 di Ubuntu 12.04
  • Disk lain dalam serangan 1 asli diformat dan digunakan untuk tujuan lain, meninggalkan disk saat ini (yang dimaksud) masih secara teknis bagian dari serangan yang tidak lagi ada

Apa yang sudah saya coba

  • Pemasangan dasar

    • Saya menambahkan entri ke fstab, menandai disk sebagai ext3 / ext4 dan mencoba me-mount.
    • Saat memasang kesalahan berikut muncul

      wrong fs type, bad option, bad superblock on

    • Dan dalam dmesg

      EXT4-fs (sdc1): VFS: Can't find ext4 filesystem

  • Saya telah mencoba untuk menemukan tipe sistem file dari disk dan telah muncul dengan

    $sudo file -s /dev/sdc
    /dev/sdc: x86 boot sector; partition 1: ID=0x83, starthead 254, startsector 63, 1953520002 sectors, code offset 0xb8

Di mana saya memerlukan bantuan / Pertanyaan Saya

  • Apakah ada cara untuk mengubah disk ke ext4 tanpa merusak data?
  • Apakah ada cara sederhana untuk memasang disk tipe file Linux 83 dan memulihkan data?
  • Saya punya disk lain yang saat ini gratis kalau-kalau ada kemungkinan untuk membangun kembali serangan itu
  • Tujuan utama saya adalah memulihkan data dari disk. Saya terbuka untuk semua opsi.

Memperbarui

Output beberapa perintah

  • 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

  • file -s / dev / sdc1

    $file -s /dev/sdc1
    /dev/sdc1: data

  • hexdump -C -n 32256 / dev / sdc (Tidak yakin apakah ini bisa membantu atau tidak)

    $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
    
Adam
sumber
Masalahnya adalah bahwa partisi itu berpikir ada volume serangan di atasnya dan bukan ext4fs. Dan kernelnya benar. Namun karena itu adalah serangan 1, itu terjadi pada ext4fs. a mount -f ext4 /dev/sdc1 /mountpointharus melakukan trik.
Memaksa
1
Mount gaya tidak memberikan kesalahan, tetapi titik mount kosong. Entah data hilang, atau mount tidak berfungsi seperti yang diharapkan. Melakukan dfmenunjukkan kepada saya bahwa disk yang baru dipasang adalah 2% digunakan yang secara signifikan lebih rendah dari yang diharapkan.
Adam
@ user1129682, jika mount mengatakan itu bukan ext4, maka itu tidak ... mencoba untuk memaksa itu tidak akan membantu.
psusi
@psusi: bekerja untuk saya. Gilles menjawab menjelaskan mengapa itu bekerja dalam beberapa keadaan
Bananguin
@ Bananguin, bukan mount -t ext4? Bendera -f adalah untuk pemasangan 'palsu' (ubuntu 14.04).
Quantum7

Jawaban:

11

Ini bekerja sangat baik di Ubuntu 14.04:

sudo -i
mdadm --assemble --scan

Kamu akan mendapatkan:

mdadm: /dev/md/1 has been started with 1 drive (out of 2)

Kemudian pasang dan lihat file Anda:

cd /mnt && mkdir to-restore-md1 && mount /dev/md1 to-restore-md1
ls -la to-restore-md1
vchepurnov
sumber
Sudah "ada tetapi bukan array md" pada hard drive gagal yang merupakan bagian dari array ... dan ini bekerja lebih baik daripada semua saran lainnya. Dipasang dengan sukses, sibuk menyalin data dari sekarang.
Zayne S Halsall
opsi ini bekerja dengan baik untuk saya. 2 Intel SSD ada di RAID1. Menarik satu dan slave dari port SATA ke pc yang menjalankan suse linux. Awalnya hanya muncul sebagai /dev/sdcdan /dev/md127. Lalu apakah mdadm --assemble --scanyang menghasilkan /dev/md/Volume0_0p1dan /dev/md/Volume0_0p2dan seterusnya sesuai dengan 4 partisi yang ada di disk. P2 adalah yang saya butuhkan sehingga: mkdir /p2 diikuti oleh mount /dev/md/Volume0_0p2 /p2mount yang EXT3 dan saya dapat dengan mudah mengakses dan menyalin data. Itu juga memasangnya sebagai baca-tulis.
ron
kamu membuat hariku! Terima kasih!
Gooshan
kadang-kadang --scanmode tidak memulai array dengan disk yang hilang, dalam kasus saya di sini saya harus menghentikan array yang dirakit secara otomatis dan mulai lagi denganmdadm --assemble --force /dev/md/1 /dev/sdc1
BrunoJCM
7

Linux mdraid memiliki beberapa format metadata . Format 0.9 dan 1.0 meletakkan metadata di akhir perangkat yang berisi, dan payload (sistem file) dimulai pada awal perangkat dan dapat diakses secara langsung tanpa melalui lapisan serangan. Format 1.1 dan 1.2 menempatkan metadata di bagian tengah dan awal perangkat yang mengandung masing-masing, sehingga payload berada pada offset.

Penginstal Ubuntu membuat volume dengan format 1,2 metadata, jadi data Anda dimulai setelah metadata alih-alih di awal perangkat.

Cara paling sederhana untuk mengakses data itu adalah dengan merakit perangkat raid. Dalam volume RAID-1, satu perangkat cukup.

madadm -A /dev/sdc1

(Berhenti di sini kecuali jika Anda suka rasa sakit.)

Anda juga dapat mengakses data di offset. Satu-satunya hal yang dapat saya lihat untuk melakukan ini adalah jika Anda harus bekerja di kernel yang sangat lama yang tidak mendukung format mxraid 1.x. Pertama, tentukan offset mdadm -E /dev/sdc1: cari garis Data Offset : SSS sectors. Sektor mdadm adalah 512 byte.

sectors=$(mdadm -E /dev/sdc1 | awk -F: '$1 ~ /Data offset/ {print $2}')
bytes=$(($sectors * 512))
losetup -f -o $bytes /dev/sdc1

Dalam keputusasaan, dengan format 1.x, offset data disimpan dalam byte 128–135 dari metadata, little-endian¹. 1.2 metadata adalah 4.096 byte setelah awal perangkat.

Anda juga dapat mengubah tabel partisi untuk membuatnya mulai lebih jauh. Berhati-hatilah dengan aritmatika Anda. Hanya lakukan itu jika Anda ingin tetap menggunakan disk dalam jangka panjang di sistem lama yang tidak dapat mengakses perangkat raid.

¹ Atau dengan endianness platform? Saya tidak yakin.

Gilles 'SO- berhenti menjadi jahat'
sumber
data dapat mulai dari offset yang berbeda (lihat di mdadm -E /dev/sdc1mana tepatnya) tetapi tentu saja tidak pada 4k untuk 1,2 metadata, karena 4k tepat di mana metadata disimpan. Lihat juga unix.stackexchange.com/q/57477/22565
Stéphane Chazelas
@StephaneChazelas Ups, ya, kentut otak. Terima kasih.
Gilles 'SO- stop being evil'
3
mdadm -A /dev/sdc1output mdadm: device /dev/sdc1 exists but is not an md array.Aku sudah sedikit lebih jauh untuk penggunaan mdadm dan melihat apakah ada info tambahan ... mdadm --misc --examine /dev/sdc1output mdadm: No md superblock detected on /dev/sdc1.. Apakah ada cara saya bisa menulis ulang superblok pada disk ini untuk menandainya sebagai disk yang tersedia untuk perakitan RAID?
Adam
@Gilles A mdadm -E /dev/sdcmengembalikan yang berikut untuk saya: /dev/sdc: MBR Magic : aa55 Partition[0] : 1953520002 sectors at 63 (type 83) tetapi tidak ada informasi untuk / dev / sdc1
Adam
1
@ Adam Jika mdadm tidak dapat menemukan metadata-nya, tidak ada yang bisa Anda lakukan di sana: Anda tidak bisa memaksanya melakukan sesuatu karena ia tidak tahu apa yang harus dilakukan. Anda perlu mencari sistem file, dan jika saran psusi tidak mengarah ke mana pun, prospeknya suram. Mungkin hexdump dari beberapa kilobyte pertama dari disk dapat menginspirasi seseorang (berhati-hatilah karena itu dapat mengekspos beberapa data rahasia).
Gilles 'SO- stop being evil'
5

Yang mengejutkan saya, saya dapat memulihkan data hanya dengan menggunakan yang utama .

Bantuan yang diterima di sini sangat berharga. Setelah mencoba berbagai kombinasi yang disarankan, dan juga mix-in saya sendiri, metode yang ideal (untuk memasang dan menggunakan disk seperti biasa) sepertinya bukan pilihan lagi. Menggunakan pemulihan data adalah solusi saya dalam kasus ini.

Adam
sumber
Saya menyadari ini beberapa waktu yang lalu! Tetapi apakah Anda ingat apakah Anda dapat menggunakan yang utama tanpa memasang partisi?
PhillipOReilly
Maaf, saya tidak ingat detail ini lagi. : /
Adam
3

Tampaknya Anda telah membuka kunci superblock mdadm. Jika dulu ada di sana dan format 1.1 atau 1.2, maka kemungkinan besar sistem file di offset 2048 sektor. Anda dapat menjalankannya e2fsck /dev/sdc1?offset=2048untuk memaksanya mencari sistem file mulai dari offset itu. Jika menemukannya maka Anda dapat memodifikasi tabel partisi Anda untuk menunjuk ke tempat sistem file sebenarnya dimulai. Anda dapat menggunakan parted /dev/sdcdan unit sperintah untuk menggunakan unit sektor. printtabel, perhatikan sektor awal dan akhir, lalu rmpartisi, lalu buat ulang dengan mkpartdan gunakan sektor ujung yang sama, tetapi tambahkan offset ke sektor awal.

Jika 2048 tidak berfungsi, Anda juga dapat mencoba 1985.

psusi
sumber
Menjalankan e2fsck /dev/sdc1?offset=2048(saya juga menjalankan offset = 1985) keluaran Bad magic number..Superblock invalid...serta menyarankan bahwa superblock rusak dan mencoba menjalankan e2fsck dengan superblok alternatif. Sepertinya saya harus memberikan superblok alternatif untuk bergerak maju.
Adam
@ Adam, tidak, Anda hanya perlu mendapatkan offset yang benar. testdiskseharusnya dapat melakukan pemindaian terperinci dan memperbaiki tabel partisi untuk Anda.
psusi
testdiskbenar-benar wilayah baru bagi saya. Jalankan dasar (Analisis) menunjukkan No ext2, JFS, Reiser.. marker. Bad relative sector. No partition is bootable.Ini juga menyediakan yang berikut: 1 P Linux 0 1 1 121600 254 63 1953520002Bagaimana saya bisa memahaminya untuk membantu situasi?
Adam
@ Adam, saya tidak pernah menggunakannya sendiri, saya hanya tahu itu seharusnya dapat memindai dan menemukan superblock. Anda menjalankannya di seluruh disk, bukan partisi kan?
psusi
Setelah menjalankan analisis pada disk lengkap, ternyata tidak ada partisi. Saat ini sedang menjalankan pemindaian mendalam sekarang. Jika ini tidak menghasilkan apa-apa, saya tidak yakin harus ke mana dari sini.
Adam