Bagaimana cara memperbaiki kesalahan Input / Output menggunakan dd?

13

Hai, saya sedang mencoba memperbaiki sistem Windows 7 saya dengan harddisk yang rusak, tetapi masih berjalan.

Saya mencoba menyalin semua data ke drive baru untuk menginstal ulang Windows 7. Drive yang disebut SQSERVICE.

Saya tidak bisa menyalin sama sekali - lihat di bawah:

$ sudo dd if=/dev/sdc1 of=/dev/sda1
dd: reading `/dev/sdc1': Input/output error
11233976+0 records in
11233976+0 records out
5751795712 bytes (5.8 GB) copied, 187.731 s, 30.6 MB/s

Bagaimana cara memperbaiki "Kesalahan input / output" ini?

Erazer
sumber
1
@Gertvddijk terima kasih untuk memperbaiki masalah ejaan saya, saya dari Belanda masih belajar bahasa Inggris dengan baik.
Erazer

Jawaban:

15

Anda mengatakannya sendiri: disk Anda rusak. Anda dapat mencoba ddrescue, mungkin dapat bekerja di sekitar jalan yang rusak. Namun berhati-hatilah, bahwa Anda akan kehilangan data.

Memulihkan dari cadangan akan lebih mudah :)

Penggunaan yang benar ddrescueadalah sebagai berikut:

sudo apt-get install gddrescue
sudo ddrescue /dev/sdc1 /dev/sda1

atau jika Anda ingin menyalurkan stdoutke alat pemantauan progess:

sudo ddrescue /dev/sdc1 /dev/sda1 | pv
Dennis Kaarsemaker
sumber
ya saya katakan itu tetapi memulihkan dari cadangan itu di drive itu .. dan saya drive ini hanya memiliki masalah sektor, baik bagaimana saya bisa menggunakan perintah itu? im hanya pengguna linux pemula ..
Erazer
2
Jadi cadangan Anda ada di drive yang sama dengan drive yang Anda gunakan ?! boggles
Dennis Kaarsemaker
1
Drive juga sama ya tapi tidak pada partisi yang sama. baik saya agak bodoh: '(cadangannya tidak penting sama sekali
Erazer
6

Saya tidak tahu apakah ini berguna bagi siapa pun, tetapi jika saya menemukan halaman ini dalam pencarian saya, mungkin itu akan membantu seseorang (selain OP yang semoga menyelesaikan masalahnya bulan lalu).

ddrescue mungkin merupakan pilihan terbaik dalam hal ini, untuk pemulihan data (berbeda dari "memperbaiki" kesalahan / disk seperti pertanyaan awal diucapkan), seperti yang disarankan Dennis.

Atau, Anda juga bisa memasang disk dan menyalin file. Ini JAUH lebih cepat jika ada banyak ruang kosong, atau jika Anda hanya menginginkan beberapa file tertentu. PERINGATAN: dilakukan dari mesin Linux, ini kehilangan semua atribut yang diperluas, seperti izin file, jadi merupakan pilihan yang sangat buruk untuk file OS, tetapi dapat ditoleransi untuk file pengguna. Melakukannya dari windows harus melindungi itu, tetapi mungkin tidak menangani kesalahan dengan lancar, mungkin membuatnya sangat lambat.

Pilihan lain untuk benar-benar "memperbaiki" sektor, bukan hanya memotongnya, adalah untuk merealokasi sektor yang buruk. Jika Anda tahu nomor sektor (dalam kasus Anda, 11233976 dengan asumsi ukuran blok Anda dalam dd, dan ukuran sektor adalah 512), jalankan saja ini, dan jalankan lagi untuk setiap sektor buruk baru yang Anda temukan:

hdparm –write-sector 11233976 –yes-i-know-what-i-am-doing /dev/sdb

PERINGATAN: Ini akan menghancurkan data di sektor itu. Jadi pastikan Anda benar-benar tahu apa yang Anda lakukan. Jika sektor ini tidak dapat dibaca, menimpanya akan menghentikan kesalahan, tetapi itu berarti bahwa sektor tersebut akan mengandung sampah, mungkin merusak file penting.

Lihat ini untuk info lebih lanjut: http://www.sjvs.nl/forcing-a-hard-disk-to-reallocate-bad-sectors/

Dan jika disk Anda memiliki sejumlah besar (ribuan mungkin) sektor buruk (baik dilihat sebagai Current_Pending_Sector, Offline_Uncorrectable atau Reallocated_Sector_Ct), atau jika itu baru dan masih dalam garansi, atau jika jumlahnya secara konsisten naik seiring waktu, maka Anda harus mengganti disk tetap. Jangan biarkan mereka memberi tahu Anda bahwa realokasi perbaikan disk. Ini hanya memperbaiki bad sector yang diketahui dan mengkonsumsi sektor yang disediakan untuk realokasi. Jika disk cenderung mengembangkan lebih banyak sektor buruk, masalahnya hanya akan terus kembali, setiap kali merusak beberapa data.

Peter
sumber
0

Meskipun beberapa bagian disk rusak, Anda masih dapat menyalin bagian disk yang baik.

$ dd --help
...
 noerror   continue after read errors
...
sudo dd if=/dev/sdc1 of=/dev/sda1 conv=noerror
Max A.
sumber