Teknik pemulihan file partisi NTFS canggih untuk drive yang rusak (kesalahan IO)?

8

Saya baru-baru ini menderita jumlah kerusakan yang sangat kecil tapi sangat penting pada hard drive pada host ESXi yang memengaruhi beberapa VM. Ada file yang sangat ingin saya pulihkan, dan tentu saja itu entah bagaimana tertinggal dari cadangan reguler saya. Salinan terbaru berusia 6 bulan. Ternyata aku butuh itu ... oops.

Detail:

1) Saya telah menggunakan ddrescue (alat AWESOME) dalam ISO bootable Parted Magic untuk memulihkan 99,98% dari drive VM yang dimaksud. Sayangnya, kesalahan tampaknya hampir seluruhnya dari file TERBARU menulis ... jadi tentu saja mereka adalah sektor yang paling perlu saya pulihkan.

2) Drive memberikan kesalahan IO pada bacaan sektor buruk, tetapi kadang-kadang SUKSES dalam membaca sektor yang sebelumnya buruk! Jadi, pemulihan masih memungkinkan. Sedikit lebih sering daripada itu akan memiliki semacam kerusakan besar dan memutar drive ke bawah dan kembali. Oh, dan sekitar 1/4 dari putaran itu tidak akan muncul kembali. (Diperlukan siklus daya keras, shutdown tidak akan berfungsi) Terakhir, hampir setiap pembacaan sektor buruk dilengkapi dengan bunyi klik terdengar yang bagus.

3) Disk VM yang penting adalah format NTFS.

4) Saya dapat (biasanya) me-mount volume NTFS yang rusak read-only, dan saya dapat (sedikit lebih jarang) menavigasi ke folder yang berisi file yang saya butuhkan. Namun, file tersebut tampaknya selalu memberikan kesalahan IO ketika saya melakukan 'ls' dari folder tersebut. File-file lain dalam folder tidak memberikan kesalahan IO.

5) Saya sudah mencoba menggunakan ntfsinfo / etc ... yang kedengarannya persis seperti yang saya butuhkan ... tetapi tidak akan membuka partisi sama sekali. (Frustasi, karena 'mount' biasanya akan)

6) File ini adalah file XLS era Excel 2003, jadi saya tidak yakin saya bisa membuat string untuk mencari gambar disk mentah. (Mungkin bagian dari versi lama 6 bulan?)

Saya benar-benar ingin menggunakan sesuatu seperti fasilitas debugfs. Namun, dari halaman manual tampaknya alat ntfs dapat melakukan pekerjaan jika hanya mereka dapat dibuat untuk membuka partisi. Secara khusus, saya bertanya-tanya apakah kesalahan IO mungkin murni dalam metadata untuk file, dan apakah catatan direktori dapat dipulihkan dengan cukup baik untuk menyalin isi file. Sebagai upaya terakhir, isi file parsial apa pun yang dapat saya ambil akan sangat bagus.

Saya telah menulis modul kernel (yang relatif sederhana) sebelumnya, jadi saya dapat mengkompilasi modul NTFS khusus dengan info debug lebih diaktifkan (atau ditambahkan). (File ini bernilai setidaknya beberapa hari untuk bermain-main untuk mencoba memulihkan ... plus saya sedang belajar hal-hal keren dalam prosesnya)

Ada petunjuk?

EDIT:

Informasi kesalahan drive lebih lanjut:

Pesan / var / log / menampilkan banyak kesalahan NTFS-fs tentu saja ... tapi saya akhirnya repot-repot menerjemahkan pesan kode indria yang tidak ditangani yang biasanya saya dapatkan: kunci indera 0x3, ASC = 0x11, ASCQ = 0x4. (yang tampaknya diterjemahkan ke BACA KESALAHAN BACA - AUTO REALOKASI GAGAL).

Ketika drive berputar, saya melihat pesan "scsi0: * BusLogic BT-958 Initialized". Saya tidak yakin apakah itu driver Linux SCSI, driver ESXi, atau drive itu sendiri yang memutuskan untuk menurunkan drive. Jika itu adalah driver Linux, maka mungkin saya bisa memodifikasi driver untuk menghindari pemintalan. Seluruh masalah penyelamatan ini dibuat sangat menyakitkan oleh spindown yang membutuhkan siklus daya ini.

EDIT2:

menggunakan pesan log "end_request: I / O, dev sda, sector 7238859" tepat setelah saya direktori yang berisi file tersebut, saya telah menargetkan operasi ddrescue saya ke sektor itu. Saat ini saya berencana untuk mengambil peluang saya dan MENULIS sektor itu kembali ke live disk jika ini berhasil. Mungkin saya bisa secara perlahan membangun kembali cara saya ke file yang dimaksud dengan cara ini. Namun, sebagian besar sektor buruk yang dapat dipulihkan dipulihkan di bawah 20 percobaan ... yang ini lebih dari 150 sejauh ini ... * hah *

EDIT3:

Kesalahan sektor dari 'ls' pada file yang saya butuhkan sepenuhnya tidak kooperatif (1000+ mencoba semalam dan tidak berhasil). Saya berharap itu hanya metadata ketika Anda melakukan 'ls'? :)

Saya memiliki sebagian besar salinan ddrescue, tetapi itu tidak me-mount (atau me-mount tanpa file). Drive yang rusak terpasang dengan benar sebagian besar waktu ... mungkin kesalahan IO pada drive yang rusak 'mount' untuk jatuh kembali ke cermin yang berfungsi?

** EDIT4: **

Saya sudah menyerah untuk sekarang, menunggu saran lebih lanjut. Saya telah menghapus drive dan membangun kembali kotak. Saya akan terus berkeliling kalau-kalau ada sesuatu.

darron
sumber
3
Hal pertama yang harus dilakukan adalah membuat salinan disk, menggunakan ddrescueatau alat serupa lainnya untuk menyalin sebanyak mungkin sektor. Jangan lakukan pemulihan tingkat sistem file apa pun dari disk yang rusak, lakukan dari salinan.
Gilles 'SANGAT berhenti menjadi jahat'
1
@Gilles saya memang menyebutkan saya menggunakan ddrescue. Tampaknya ada kesalahan hanya di tempat yang salah untuk salinan untuk dipasang. Tidak jelas offset apa yang harus saya fokuskan dengan ddrescue untuk memperbaiki masalah itu ... sehingga pertanyaan tentang sesuatu seperti debugfs (atau ntfsinfo yang dapat bekerja dengan partisi setidaknya serta 'gunung' biasa). Taruhan terbaik saya pada saat ini adalah untuk menonton / var / log / pesan untuk kesalahan sektor saat saya mengakses drive buruk di mount read-only dan mencoba untuk menyelamatkan mereka ke salinan sampai berfungsi.
darron
1
Apakah Anda telah secara aktif mendinginkan drive selama proses ini? Menjaga drive sedingin mungkin sangat membantu.
Nathan V

Jawaban:

4

Beberapa catatan dari pengalaman saya:

  1. (penyebabnya) Jika Anda mendengar suara yang tidak biasa selama upaya akses hd, dan masalah tidak terjadi di (kurang lebih) hanya lokasi disk acak, maka penyebab utama kemungkinan besar pada permukaan disk (bukan elektronik) - sayangnya , itu skenario yang menyedihkan. Jika itu "hanya" elektronik, Anda mungkin memiliki kesempatan untuk memulihkan sebagian besar atau bahkan semua data Anda.
  2. (bad sector) Jika Anda belum melakukannya, cari di web untuk alat diagnostik / pemulihan bootable produsen disk, unduh, boot, jalankan tes mendalam dan biarkan mencoba untuk memetakan kembali sektor buruk - itu yang terbaik di antara metode gratis. Perhatikan bahwa bad sector memiliki kecenderungan untuk tumbuh - jadi bahkan jika Anda berhasil mendapatkan satu file Anda setelah beberapa kali upaya membaca 2314, kemungkinan bahwa upaya tersebut baru saja membuat bad sector terdekat tumbuh, secara efektif mengurangi kemungkinan memulihkan bagian lain dari file.
  3. (memulihkan NTFS) Tidak ada yang dapat memperbaiki sistem file NTFS serta alat asli MS Windows. Jika gambar NTFS tidak dapat di-mount (juga pastikan Anda mencoba me-mount partisi, bukan seluruh disk!), Anda dapat mencoba hal-hal seperti testdiskdi Linux, tetapi jika gagal, Windows chkdiskdapat membantu. Jika Anda menginstal Windows di bawah mesin virtual, Anda dapat mengonversi gambar mentah yang diperoleh dari ddrescueke format yang didukung oleh mesin virtual tersebut (seperti VDIatau VMDK), menambahkannya ke VM dan mem-boot Windows dalam mode baris perintah untuk memperbaiki sistem file. Jika Anda menggunakan VirtualBox, perintah untuk mengonversi gambar seperti itu VBoxManage convertfromraw <filename> <outputfile>secara opsional dengan --format VDI|VMDK|VHDuntuk memperoleh format output yang ditentukan.
rozcietrzewiacz
sumber