memulihkan partisi ext4 setelah selesai HD

8

Saya tidak sengaja menggunakan dddan menulis lebih dari 208MB dari disk eksternal saya. Apa yang saya tulis adalah partisi pada dirinya sendiri (Debian nestinstaller) jadi apa yang saya lihat sekarang bukan partisi ext4 lama saya (sekarang rusak) tetapi partisi yang lebih kecil. Ini membatasi alat dan saran yang bisa saya ikuti.

Rencana saya adalah membuat ulang tabel partisi dengan testdiskdan kemudian memperbaiki semuanya dengan cadangan superblok seperti dijelaskan di sini . Saya akan kehilangan 208MB pertama tetapi tidak apa-apa dibandingkan dengan 300GB data lainnya di sana. Sesuatu seperti yang berikut ini:

mke2fs -n /dev/sdb1   # doesn't work because sdb1 is the 208MB new partition
testdisk ...          # used this to create new correct partition table
mke2fs -n /dev/sdb1   # now works fine, get backup superblock positions
e2fsck -b backup_position -y /dev/sdb1 # returns many errors hence the -y

Namun, saya tidak dapat memulihkan apa pun. Saya biasa testdiskmenulis tabel partisi baru yang cocok dengan apa yang saya miliki sebelumnya. Ketika saya menjalankan e2fsck saya mendapatkan banyak kesalahan berbeda. Saya mendapatkan sistem file setelah itu tetapi benar-benar kosong, tidak ada file.

Direktori yang hilang + ditemukan penuh dengan file (yang dipulihkan menurut saya) tetapi saya perlu memulihkan pohon direktori, bukan hanya file. Saya memerlukan nama file dan direktori sebelumnya untuk mengetahui apa file-file itu (gambar mikroskop, data spec massa, dll. Tanpa nama dan direktori di mana mereka berada, mereka tidak ada artinya).

Saya mendapatkan HD lain yang persis sama dan membuat salinan seluruh HD ddsehingga saya dapat melakukan percobaan pemulihan tanpa kehilangan apa pun. Ada saran?

carandraug
sumber
Apakah Anda tahu berapa banyak partisi yang Anda miliki sebelumnya?
Cougar
@Cougar ya. Saya memiliki partisi primer ext4 tunggal yang mencakup seluruh disk.
carandraug
2
Pertama saya sarankan untuk membuat ulang partisi dengan fdisk atau alat partisi tingkat rendah lainnya. Bagaimana memulihkan ext4 Anda setelah itu ditampilkan di sini: tautan
Cougar
@Cougar itu sebenarnya tautan yang saya ikuti untuk mencoba memulihkan partisi. Perbedaannya adalah bahwa saya digunakan testdiskuntuk membuat ulang partisi. Saya akan coba fdisk.
carandraug
@Cougar menggunakan fdisksaya bahkan tidak bisa menggunakan e2fsckkarena tidak akan menemukan cadangan superblok. Saya pikir masalahnya adalah bahwa saya tidak dapat mengedit CHS (partisi baru mengaturnya menjadi 64 tetapi seharusnya 255)
carandraug

Jawaban:

7

Saya akhirnya berhasil memperbaikinya. Sebagai catatan, beginilah cara saya melakukannya. Bagian dari solusi yang saya temukan di sini dan itu melibatkan mengetahui pengaturan yang digunakan untuk membuat sistem file (saya cukup yakin saya tidak mengubah default).

Pada dasarnya saya pertama-tama harus memperbaiki tabel partisi untuk mencerminkan apa yang sebenarnya saya miliki di sana (saya gunakan testdiskuntuk ini tetapi parted, cfdiskatau fdiskharus bekerja dengan baik juga). Saya baru saja menghapus partisi yang salah dan diganti dengan partisi tipe ext4 tunggal yang menutupi seluruh disk dengan nilai CHS yang benar.

Sisanya sebagian besar dari tautan di awal (baca untuk detail) tetapi pada dasarnya saya berlari mke2fs -n /dev/xxxuntuk menemukan posisi untuk cadangan superblok. Kemudian gunakan cadangan terakhir yang terdekat dengan ujung disk (hanya yang di awal disk telah ditimpa dengan dd) untuk menjalankan fsck. Ini menghasilkan banyak kesalahan tetapi fsck memiliki -yopsi (tidak sama dengan -a).

$ sudo e2fsck -a -b backup_block_number /dev/xxx

Saya pikir ini tidak berhasil karena saya tidak dapat melihat file tetapi sebenarnya mereka semua telah disimpan ke lost+founddirektori.

Jadi pada akhirnya saya melakukan penyelamatan sebagian besar file saya sambil menjaga nama file dan struktur direktori mereka. Semoga ini bisa membantu orang lain di masa depan.

carandraug
sumber
-1

Oke, ini berfungsi untuk memulihkan dari drive yang diinisiasi secara tidak sengaja di array MegaRAID. Kontroler RAID saya memasukkan SEMUA drive dalam RAID, bukan hanya yang untuk array RAID6 yang saya perbaiki. Aduh! Setidaknya saya melakukan init cepat, dan bukan init lambat - init lambat menghapus drive ke nol.

Init cepat menghapus 10M di awal dan akhir drive. Jadi, saya dengan partisi ext4 di seluruh drive (di Linux) dan satu drive, RAID0, punya beberapa kesempatan. Dengan drive yang menjadi drive 6TB, dan hampir 5TB di atasnya, saya berkeringat - itu adalah cadangan saya dari array RAID6 yang saya perbaiki!

By the way, saya tidak tergelincir - LSI MegaRAID TIDAK boleh inited drive di grup drive saya yang lain - tetapi itu terjadi. Sebagai catatan, apa yang seharusnya saya lakukan adalah HAPUS DRIVE DARI ENCLOSURE dan impor ulang SETELAH saya memiliki drive RAID6 yang baru diatur. Saya konyol. BENAR-BENAR konyol saya ....

OK, untungnya MegaRaid LSI tidak suka dengan drive RAID0 (jika ada satu saya kira tidak yakin tentang beberapa). Inilah yang saya lakukan untuk memperbaikinya. OS = Fedora F22. Drive = satu partisi ext4 besar, selesai dengan parted. Pertama saya mem-snap drive ke drive model baru yang sama persis, di server cadangan dengan beberapa slot teluk cadangan :: Sepuluh jam kemudian selesai ......

$ dd if=/dev/sdb of=/dev/sdc bs=64M conv=notrunc
89424+1 records in
89424+1 records out
6001175126016 bytes (6.0 TB) copied, 35130.2 s, 171 MB/s

Itu cadangan emas saya.

CATATAN - Drive saya tadinya /dev/sdb- Anda harus mengatur drive apa pun yang ingin Anda pulihkan. Jangan mengacaukan drive, atau Anda akan menjadi lebih berantakan ....

Kemudian, selesai saya melakukan hal berikut.

(1) menghapus snapshot dari mesin (tidak konyol lagi, saya dapat meyakinkan Anda - bahwa orang akan pergi ke rumah sakit pemulihan disk jika saya gagal, sementara saya memeriksa diri saya di UGD lokal!).

(2) reboot mesin FC22 dengan drive. Jalankan parted, ulangi partisi (dalam kasus saya, hapus yang rusak, tulis dalam partisi 0% hingga 100% ext4 baru). Anda HARUS tahu persis di mana partisi asli berada, dan jenis persisnya - langkah selanjutnya tergantung pada ini - jika tidak, BERHENTI DI SINI. Anda tidak akan berhasil. gunakan testdiskdan photorecatau serupa, atau untuk drive besar di mana itu benar-benar penting, kirimkan.

(3) lari mke2fs -n /dev/sdb1(jangan lupa -n, atau lagi Anda bisa pergi begitu saja ...)

Bagi saya hasilnya tampak seperti:

$ mke2fs -n /dev/sdb1
$ mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 1464843008 4k blocks and 183107584 inodes
Filesystem UUID: 1ac318a6-7953-42d5-8d7b-0597c54e1935
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

Itu dia, di situlah semua superblok cadangan berada ...... Kita tahu yang pertama dan terakhir adalah sampah, tapi yang di tengah harusnya OK. (Catatan, Anda bisa mkfs.ext4 -n /dev/sdb1menjadi sangat berhati-hati dan mendapatkan hasil yang sama).

(4) Jalankan e2fsck -y -b 102400000 /dev/sdb1. Anda akan memerlukan -y, karena akan ada banyak "ya" yang diperlukan untuk memperbaiki kekacauan yang dibuat oleh ujung depan disk yang hilang .... dan pilih semua superblock di tengah yang Anda suka ... dan setelah sekitar 30 menit keheningan (gunakan terminal lain dan "atas" untuk menonton kemajuan, atau lampu disk berkedip) dalam kasus saya presto, partisi yang dapat dipasang, dan hampir semuanya utuh dalam /lost+founddirektori.

Pokoknya saya harap ini membantu - jika Anda membaca ini dengan seksama, maka saya berharap yang terbaik untuk Anda. Dan terima kasih kepada orang-orang yang menulis di atas. Anda menyelamatkan saya dari akhir yang benar-benar memuakkan .....

lalat
sumber