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.
sumber
ddrescue
atau alat serupa lainnya untuk menyalin sebanyak mungkin sektor. Jangan lakukan pemulihan tingkat sistem file apa pun dari disk yang rusak, lakukan dari salinan.Jawaban:
Beberapa catatan dari pengalaman saya:
testdisk
di Linux, tetapi jika gagal, Windowschkdisk
dapat membantu. Jika Anda menginstal Windows di bawah mesin virtual, Anda dapat mengonversi gambar mentah yang diperoleh dariddrescue
ke format yang didukung oleh mesin virtual tersebut (sepertiVDI
atauVMDK
), menambahkannya ke VM dan mem-boot Windows dalam mode baris perintah untuk memperbaiki sistem file. Jika Anda menggunakan VirtualBox, perintah untuk mengonversi gambar seperti ituVBoxManage convertfromraw <filename> <outputfile>
secara opsional dengan--format VDI|VMDK|VHD
untuk memperoleh format output yang ditentukan.sumber
Ini mungkin atau mungkin tidak berlaku untuk kasus Anda, tetapi satu langkah terakhir adalah "trik freezer". Lihat Memulihkan data dari hard drive yang rusak: "trik freezer" untuk pembahasan metode ini.
sumber