Apakah perintah ddrescue ini melakukan sesuatu?

9

Dalam upaya mencoba memulihkan data dari hard drive yang gagal , saya menjalankan perintah ddrescue.

Perintah telah berjalan selama 9 hari, dan saya berpikir dari suara aktivitas disk yang mungkin sedang melakukan sesuatu. Output baris perintah tampak lebih atau kurang statis selama ini:

$ sudo ddrescue -r3 /dev/sdb /home/dave/RECOVERY/usb500.image /home/dave/recovery_usb500.logfile

Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued:         0 B,  errsize:       0 B,  errors:       0
Current status
rescued:         0 B,  errsize:    500 GB,  current rate:        0 B/s
   ipos:     2539 MB,   errors:       1,    average rate:        0 B/s
   opos:     2539 MB,     time from last successful read:     9.7 d
Splitting failed blocks... 

Satu bagian yang telah berubah adalah di mana dikatakan iposdan opos. Butuh 9 hari untuk bangkit 500000 MB, yang merupakan ukuran dari disk drive yang gagal. Ketika sampai di sana, kemudian turun kembali 0dan mulai naik lagi. Saat saya menulis ini, ini tentang 2580 MBdan terus bertambah.

Panjang file gambar yang dibuat adalah 0 byte.

File log berukuran sekitar 3MB dan terlihat seperti ini:

# Rescue Logfile. Created by GNU ddrescue version 1.14
# Command line: ddrescue -r3 /dev/sdb /home/dave/RECOVERY/usb500.image /home/dave/recovery_usb500.logfile
# current_pos  current_status
0x975C3000     /
#      pos        size  status
0x00000000  0x00862000  -
0x00862000  0x00014800  /
0x00876800  0x00800400  -
~~~~~~edited for brevity ~~~~~~~~
0x74702CCE00  0x00320000  -
0x74705ECE00  0x00025800  /
0x7470612600  0x005F3A00  -

Saya mulai khawatir bahwa ini hanya buang-buang waktu dan tidak ada data yang dipulihkan sama sekali.

Adakah indikasi dari output ini bahwa sesuatu yang bermanfaat sedang terjadi?

Apakah ada alasan untuk membiarkan ddrescueperintah berlanjut apa adanya, atau haruskah saya menghentikannya dan melakukan sesuatu yang lain?


Ini adalah konten terbaru dari /var/log/syslog

Jun 10 07:29:17 homebase-i3 kernel: [568470.316436] sd 5:0:0:0: [sdb]  Sense Key : Medium Error [current] 
Jun 10 07:29:17 homebase-i3 kernel: [568470.316443] sd 5:0:0:0: [sdb]  Add. Sense: Unrecovered read error
Jun 10 07:29:17 homebase-i3 kernel: [568470.316450] sd 5:0:0:0: [sdb] CDB: Read(10): 28 00 11 ff 02 98 00 00 08 00
Jun 10 07:29:17 homebase-i3 kernel: [568470.316465] end_request: critical target error, dev sdb, sector 301925016
Jun 10 07:29:17 homebase-i3 kernel: [568470.346640] sd 5:0:0:0: [sdb] Unhandled sense code
Jun 10 07:29:17 homebase-i3 kernel: [568470.346646] sd 5:0:0:0: [sdb]  Result: hostbyte=invalid driverbyte=DRIVER_SENSE
Jun 10 07:29:17 homebase-i3 kernel: [568470.346651] sd 5:0:0:0: [sdb]  Sense Key : Medium Error [current] 
Jun 10 07:29:17 homebase-i3 kernel: [568470.346656] sd 5:0:0:0: [sdb]  Add. Sense: Unrecovered read error
Jun 10 07:29:17 homebase-i3 kernel: [568470.346662] sd 5:0:0:0: [sdb] CDB: Read(10): 28 00 11 ff 02 98 00 00 08 00
Penanya
sumber

Jawaban:

8

Saya tidak tahu apakah Anda masih mencoba untuk mengekstrak data dari hard drive itu atau jika Anda sudah berhasil, tetapi jika Anda tidak berhasil dan ingin mencoba untuk melihat apakah Anda dapat memulihkan, mungkin, hilang Bitcoin atau apa pun, saya telah membuat beberapa modifikasi pada ddrescueparameter baris perintah Anda , saya telah menambahkan yang berikut:

$ sudo ddrescue -d /dev/sdb /home/dave/RECOVERY/usb500.image \
     /home/dave/recovery_usb500.logfile --force -R
  • -d yang memberitahu ddrescue untuk menggunakan akses disk langsung,
  • --force yang memberitahu ddrescue untuk secara paksa menggunakan dan membaca / menulis ke file log Anda jika ia mengeluh bahwa itu tidak dapat menggunakannya untuk tujuan baca / tulis
  • -R (ya, dengan CAPITAL R) yang memberi tahu ddrescueuntuk melakukan operasi pemulihan secara terbalik alih-alih membacakan hard drive yang gagal dalam mode penerusan. Kadang-kadang membaca secara terbalik membantu ketika kerusakan besar karena ini memotong cache hard drive jika ada masalah di sana.

Saat ini saya menggunakan perintah ini (kecuali saya tidak menggunakan 3perintah karena saya tidak ingin [BELUM] ddrescuemencoba kembali bad sector, saya akan meninggalkan itu untuk yang terakhir, setelah sapuan pertama saya selesai, dan saya berhasil menyelamatkan data dari hard drive Seagate 1TB saya gagal di mana saya ASUMSI mungkin memegang beberapa bitcoin, saya mungkin telah menambang kembali pada tahun 2009 hingga 2010, mungkin saya menemukan 1 hingga 3 blok masing-masing 50 BTC, saya harap ada di hard drive ini, well, saya akan membutuhkan lebih dari 15 hari untuk menyelesaikan operasi dengan kecepatan baca rata-rata 634 kbps.

Juga, saya ingin menambahkan bahwa Anda mungkin dan kemungkinan besar, berdasarkan track record Anda sebelumnya lebih dari 9 HARI dari "aktivitas membaca terakhir" bahwa Anda akan menghadapi situasi di mana hard drive hanya akan menolak untuk membaca lebih jauh, di mana situasi, cukup tekan CTRL + C untuk membatalkan karena Anda menggunakan file log, lepaskan kabel SATA dari hard drive yang gagal, tetapi bukan pengontrol USB dari port USB (ya, gunakan pengontrol USB SATA daripada menghubungkannya ke motherboard sehingga tidak akan mengunci seluruh komputer Anda memaksa Anda reboot keras, dan kemudian pasang kembali daya SATA untuk memulai kembali hard drive, berikan seperti 10 detik dan kemudian tekan panah atas atau bawah untuk memuat ulang terminal Anda sebelumnya perintah dan restartddrescueoperasi, terima kasih ke log sebelumnya Anda akan melanjutkan di mana terakhir tinggalkan dan akan ada pembacaan yang dilakukan dan "bacaan terakhir yang berhasil" akan selalu tetap pada "0s" (nol detik) di mana seharusnya, menunjukkan bahwa ddrescuesedang berhasil dalam membaca dari hard drive, dan jika Anda pernah melihat bahwa "read from from" terakhir mulai menghitung detik, cukup akhiri sekali lagi ddrescuedengan CTRL+ C, daya siklus hard drive, dan restartddrescue, tidak ada gunanya menunggu untuk melihat apakah "bacaan terakhir" memulai kembali ke 0 sendiri, berdasarkan pengalaman saya itu tidak akan pernah terjadi, Anda akan menunggu selamanya. Saya harus menghidupkan siklus hard drive 1 TB saya yang buruk sekitar 20 kali total, sudah seperti 7 hari dan saya sangat dekat untuk mencapai tanda pulih 500GB, setengah jalan lagi, berharap saya tidak akan mengalami kegagalan besar karena Saya mendekati 100% karena telah berjalan sempurna selama 3 hari terakhir, sekali lagi di atas 634 kbps.

Juga, jangan serakah dalam mencoba mendapatkan laju baca data throughput yang lebih cepat, karena upaya saya dalam mencoba banyak parameter dan ukuran blok yang berbeda hampir membuat saya mati dengan sangat keras yang akan berhenti bekerja dalam waktu lebih dari 1 detik setelah bersepeda. (itu 5 hari yang lalu) tapi untungnya itu baru mulai sekali lagi menunjukkan tanda kehidupan, awalnya membaca 2.000 bs (ya BYTES per detik) sedikit kurang dari 2kbps, saya sangat kecewa, tetapi setelah membatalkanddrescuedengan CTRL + C dan hanya me-restart sekali lagi (terbalik dengan -R) parameter ditambahkan, kemudian kecepatan kembali ke 630, sebelum saya membaca maju pada 930 kbps, setidaknya saya konten yang saya lakukan 630 kbps secara terbalik dan tidak harus menunda dengan 2kbps, jadi jika Anda mendapatkan kesuksesan pada kecepatan baca apa pun, seperti pada rentang 500 kbps tetap menggunakannya dan jangan mencoba apa pun untuk mendorong kecepatan lebih tinggi, itu mungkin merupakan upaya sukses terakhir Anda untuk mendapatkan kecepatan baca.

Atau, jika ddrescuetidak ada gunanya bagi Anda karena Anda tidak dapat membaca apa pun terlepas dari parameter apa yang Anda coba, Anda mungkin ingin mempertimbangkan untuk mengganti papan logika dari hard drive, karena 90% dari waktu itu adalah papan logika yang berjalan buruk, tetapi pertama-tama, lepaskan papan logika dan bersihkan semua kontak yang membuat kontak dengan pin hard drive, beberapa kali kontak ini mendapat campuran lengket kehitaman di dalamnya, memutuskan kontak yang bisa menjadi sumber kegagalan Anda. Tetapi perlu diketahui bahwa jika Anda harus mengganti papan logika hard drive Anda, Anda harus mendapatkan salah satu merek, nomor seri (hampir), nomor model, nomor revisi yang sama karena harus sedekat seperti aslinya untuk dewan donor untuk bekerja.

m8ty.com
sumber
2
Anda mungkin ingin mengedit dinding teks itu sedikit.
slm
4
Sebenarnya saya pikir itu adalah salah satu postingan paling konstruktif dan terperinci yang pernah saya lihat pada subjek. Saya harap Anda tidak keberatan, saya baru saja menambahkan pertanyaan serupa unix.stackexchange.com/q/219365/125662 yang menyebutkan kontribusi Anda yang sangat membantu
baroquedub
1
Dari manual ddrescue GNU: "- Force Force menimpa file outfile. Diperlukan saat file outfile bukan file biasa, tetapi sebuah perangkat atau partisi. Opsi ini hanyalah perlindungan untuk mencegah penghancuran partisi yang tidak disengaja, dan diabaikan untuk file biasa . " Ini bukan tentang mapfile / logfile.
Arch Linux Tux
Harap perbaiki deskripsi --forceopsi, itu tidak benar
endolith
5

Anda harus dapat berhenti ddrescuekarena menggunakan file log untuk dapat memulai kembali operasinya (tutup) ke tempat yang tersisa. Namun saya akan memeriksa apakah file log baru-baru ini diperbarui dengan melihat stempel waktu atau melakukan tail -f /home/dave/recovery_usb500.logfile.

File gambar Anda masih sekecil yang mungkin harus dilakukan tanpa blok yang berhasil diambil dari drive. Namun itu akan menjadi hasil yang buruk setelah sekian lama berjalan. Dengan asumsi ada hanya beberapa blok buruk pada perangkat, dan bahwa mereka tidak pada awalnya, status entri pertama Anda akan menjadi +. IIRC ddrescuemulai membaca hingga menemukan kesalahan dan kemudian mulai membagi sisa disk. Disk Anda tampaknya gagal sejak awal.

Kecuali ada (banyak) +entri dalam log dan ukuran file Anda masih akan 0saya pikir tidak ddrescuesalah. Tidak +berarti bahwa tidak ada dari drive Anda yang dapat dipulihkan. Itu mungkin berarti elektronik yang digoreng atau kepala yang buruk, karena jika hanya beberapa sektor yang rusak Anda akan memiliki hasil yang jauh lebih cepat.

Adapun melakukan sesuatu yang lain. Saya berasumsi Anda sudah mencoba membaca beberapa blok dengan dd normal. Sudahkah Anda melihat syslog berdasarkan itu dan menelusuri semua pesan yang Anda temukan di sana?


Mencari "Hasil: hostbyte = driverbyte tidak valid = DRIVER_SENSE" menghasilkan beberapa bacaan yang menarik (sebagian Jerman) dengan beberapa saran lagi:

  • Coba sambungkan melalui USB 1.1, bukan 2.0
  • Drive mungkin menjadi panas, oleh karena itu bungkus dalam plastik dan letakkan di lemari es selama 10 menit, ini memberikan waktu pembacaan sebelum drive memanas lagi.
  • saklar SMART di BIOS (dan terhubung dengan SATA).
  • Pastikan drive USB memiliki daya yang cukup (catu daya tambahan)
  • Jika membaca melalui USB gagal setelah beberapa waktu, gunakan Hub USB yang dikendalikan dari jarak jauh di mana Anda secara terprogram mengalihkan daya dari USB HUB ke drive selama beberapa detik.

Selain mendinginkan disk yang tidak dapat dibaca (dengan semprotan pendingin) saya belum mencoba semua ini sendiri.

Anthon
sumber
Terima kasih telah merespons. Saya belum mencoba yang "normal" dd, karena saya tidak tahu apa itu. Perasaan saya adalah bahwa sebagian besar drive dan data utuh, tetapi ada beberapa kesalahan di beberapa area kritis disk tempat pengindeksan atau daftar file berlangsung.
Penanya
Yang bisa Anda pertimbangkan ddrescueadalah turunan dari ddyang tidak berhenti ketika terjadi kesalahan. Apakah Anda memeriksa +tanda - tanda?
Anthon
Dalam file log, tidak ada +tanda-tanda. Hanya ada -dan \ tanda - tanda.
Penanya
Itu berarti belum ada yang pulih, dan saya pikir tidak mungkin itu ddrescueakan dimulai setelah sekian lama. Jika mau, kami dapat mengobrol (tautkan atas halaman ini) tentang ini
Anthon
Saya telah menambahkan konten /var/log/syslogke pertanyaan.
Penanya