tl; dr jika URE terjadi pada hdd, apakah saya akan kehilangan 1bit, 1Byte, atau ukuran sektor (512Bytes, atau 4096 Bytes AF)? dan jika mungkin jelaskan mengapa demikian?
Latar Belakang: Pertanyaan di sini muncul ketika hard disk memiliki masalah dalam membaca data. Tentunya sebuah disk dapat gagal total sehingga semua datanya hilang (DISK FAIL), tetapi kasus yang saya tanyakan di sini adalah ketika sebagian kecil dari itu hilang (URE, kesalahan baca yang tidak dapat diperbaiki).
Meskipun saya telah mencari informasi mengenai URE, saya tidak banyak tahu. Ini mungkin memiliki penyebabnya yaitu apa yang terjadi secara internal di drive, yaitu apa yang disembunyikan dari interaksi pengguna langsung seperti ECCs-koreksi, bagi saya sulit untuk berhubungan dengan apa yang saya akses sebagai pengguna - sektor.
Mari kita bayangkan bahwa hdd kesulitan membaca data.
Dalam situasi itu, tentunya ini harus berarti bahwa:
- (a) beberapa bit dari sektor ini tidak dapat dibaca, atau
- (B) semua bit dapat dibaca, namun mereka tidak lulus tes checksum (tentu saja mengharapkan masalah sektor 4096 Byte bukan hanya 8 * 4096 bit, tetapi beberapa bit tambahan / byte untuk pengecekan / koreksi kesalahan (yaitu bit paritas ) (c) ????
Tidak, saya percaya bahwa ketika kita berada dalam situasi di mana kombinasi (a) dan (b) terjadi dan rekonstruksi yang andal dari byte sektor 4096 tidak dapat dilakukan, maka itu berlebihan untuk mengasumsikan bahwa semua itu adalah garpage , sebenarnya jika kita mengetahui logika koreksi kesalahan hdd interal kita mungkin malah mengatakan "lihat sesuatu tidak memeriksa, dan dengan perubahan yang baik setidaknya 1,2,3, n bit / byte dari data blok adalah" salah " ". Jika kita secara berlebihan menyimpan "halo, halo ....., halo" string byte ASCII di sektor ini kita sebenarnya mungkin masih memiliki suksesi yang adil "halo, halo ...." sebelum akan ada "... Uellohello ... "(yaitu" e "->" U ").
Jadi, apa rincian URE?
UPDATE: telah ada komentar yang memasukkan ide sektor buruk (dan menyarankan bahwa ini mencerminkan rincian acara URE. Tidak aneh, untuk menyarankannya dan mungkin dapat digunakan dalam menjawab pertanyaan. Namun saya hanya membaca terkait lainnya pertanyaan menanyakan tentang sektor yang belum dibaca yang tertunda (di sini /unix/1869/how-do-i-make-my-disk-unmap-pending-unreadable-sectors ) yang membuat saya berpikir bahwa dalam beberapa skenario memang ada garis yang lebih buram di antara data yang hilang dalam kasus URE.
sumber
Jawaban:
Kode koreksi kesalahan pada hard drive adalah potongan data tambahan yang terkait dengan setiap sektor perangkat keras. Selama menulis firmware drive menghitung data ini dan menulisnya bersama dengan data pengguna. Selama membaca firmware membaca ECC bersama dengan data dan memeriksanya bersama.
Untuk hard drive tradisional, sektor perangkat keras adalah 512 byte. Untuk drive Format Lanjutan, 4K byte (tidak masalah apakah drive menghadirkan sektor 512-byte atau 4K-byte pada antarmuka, yaitu 512e vs 4kn).
Hasil pemeriksaan setelah pembacaan pada dasarnya memiliki tiga hasil yang mungkin:
Sektor dibaca tanpa kesalahan. Ini sebenarnya tidak sepenuhnya umum pada hard drive modern; kepadatan bit sedemikian rupa sehingga mereka bergantung pada kerja ECC.
sektor dibaca dengan kesalahan yang bisa diperbaiki. Seperti tersirat di atas ini tidak jarang; itu diharapkan. Drive mengembalikan data, dengan koreksi kesalahan diterapkan, kepada pengguna.
sektor dibaca tetapi ada terlalu banyak "bit salah"; kesalahan tidak dapat diperbaiki.
Dalam kasus terakhir drive biasanya tidak mengembalikan konten apa pun; itu hanya mengembalikan status yang menunjukkan kesalahan. Ini karena tidak mungkin mengetahui bit mana yang dicurigai, apalagi nilai-nilainya. Oleh karena itu seluruh sektor (bit ECC dan semua) tidak dapat dipercaya. Tidak mungkin menentukan bagian mana dari sektor buruk yang buruk, apalagi apa isinya. ECC adalah "gestalt" yang dihitung di seluruh konten sektor, dan jika tidak cocok, itu adalah seluruh sektor yang tidak cocok.
SpinRite bekerja dengan hanya mencoba membaca sektor buruk berulang-ulang, menggunakan fungsi "maintenance read" yang mengembalikan data (tetapi tanpa bit ECC) meskipun drive mengatakan "kesalahan yang tidak dapat diperbaiki". Seperti yang dikatakan dalam deskripsi yang ditautkan oleh DavidPostill, itu mungkin berhasil dengan bebas kesalahan (sebenarnya "dapat diperbaiki" lebih mungkin) membaca; atau mungkin dapat menyimpulkan, pada dasarnya dengan rata-rata bit yang dikembalikan bersama-sama, tebakan yang masuk akal pada konten sektor. Tidak ada lagi kemampuan untuk memperbaiki kesalahan menggunakan ECC secara tepat daripada yang dilakukan oleh drive; itu mustahil secara matematis.
sumber
Apakah rincian URE?
Kesalahan baca yang tidak dapat dipulihkan (URE) adalah kegagalan baca sektor. Jika sektor tidak dapat dibaca tanpa kesalahan, tidak masalah apakah itu hanya 1 byte atau semua byte sektor.
Granularity adalah ukuran sektor .
Bahkan jika hanya 1 byte gagal, Anda biasanya tidak akan mendapatkan data dari sektor itu kembali tanpa menggunakan perangkat lunak khusus.
Bisakah data dari sektor yang gagal dipulihkan?
SpinRite mengatakan:
Lihat Bagaimana SpinRite Memulihkan Data yang Tidak Dapat Dibaca .
Penolakan.
Saya tidak berafiliasi dengan SpinRite dengan cara apa pun, dan saya tidak pernah menggunakannya.
sumber
Tidak ada yang namanya "tidak bisa membaca sedikit", kecuali jika Anda memiliki kesalahan perangkat keras yang sangat menyedihkan seperti kepala tidak dapat mencari ke trek yang benar, atau trek servo rusak dan sektor yang benar tidak dapat ditemukan . Jelas dalam kedua kasus Anda akan memiliki, paling tidak, seluruh sektor tidak terbaca.
Kalau tidak, Anda selalu mendapatkan bit kembali, mereka mungkin saja bit yang salah . Di sinilah kode koreksi kesalahan masuk; ia menambahkan beberapa jumlah bit ECC tambahan untuk setiap sektor, sehingga setiap kombinasi bit data dan bit ECC yang tepat mengamati beberapa aturan aljabar. Jika semua bit dibaca dengan benar, kode akan divalidasi dan data dapat dikirimkan kembali secara langsung. Jika sejumlah kecil bit salah dibaca, kode ECC dapat digunakan untuk menentukan dengan tepat yang mana, dan memperbaikinya, sehingga semua data dikembalikan dengan benar. Jika jumlah yang lebih besar dari bit dibacakan tidak benar, kode ECC dapat mendeteksi bahwa ada adalah kesalahan, tetapi tidak lagi memiliki informasi yang cukup untuk mencari tahu mana bit tidak benar; ini adalah kesalahan baca yang tidak dapat diperbaiki. Jika sebuahjumlah bit yang sangat besar terbaca salah, maka kode mungkin divalidasi dengan benar "secara tidak sengaja" dan drive akan mengembalikan data yang rusak, tetapi dengan bit ECC yang cukup, kemungkinan terjadinya hal ini dapat dibuat sekecil yang Anda mau.
Jadi untuk menjawab pertanyaan saya pikir Anda mengerti - jika ada kesalahan baca sebagian tetapi informasi yang cukup tersedia untuk mencari tahu di mana kesalahan terjadi, maka itu juga dapat diperbaiki, dan komputer tidak akan melihat kesalahan sama sekali . Ini sebenarnya terjadi terus-menerus. Kesalahan yang tidak dikoreksi terjadi ketika tidak mungkin untuk mencari tahu bit data mana yang valid dan mana yang tidak, dan karena kode koreksi kesalahan dihitung pada suatu sektor, ini terjadi pada granularity sektor.
sumber
Setelah melihatnya dan terinspirasi oleh jawaban https://superuser.com/a/969917/160771 dari https://superuser.com/users/337631/davidpostill
Saya ingin menjawab menyajikan jawaban alternatif yang agak meluas. Pertama memang benar bahwa hard disk dan firmware-nya adalah asal dari peristiwa URE, yaitu peristiwa bahwa data tidak dapat dibaca. Lebih lanjut memang benar bahwa data ditulis ke disk di sektor 512 atau 4096 Bytes data yang dapat digunakan dan sekitar 50 atau masing-masing 100 byte data tambahan yang seharusnya memungkinkan pengecekan dan koreksi kesalahan.
Karena itu, berbicara tentang URE terjadi secara alami dalam konteks sektor hard disk. Istilah bad sector tentu agak terkait, tetapi tidak identik dengan situasi yang dihadapi ketika kita memiliki sektor URE.
Sektor dengan beberapa masalah yang harus dibaca tanpa kesalahan, tidak sepenuhnya berarti. Bisa jadi memang semua data 4.096 telah rusak, tetapi bisa juga hanya 1 bit lebih dari yang dapat dipercaya andal (melalui data ECC tambahan yang ditambahkan ke setiap sektor) rusak.
Dalam kasus ini, di mana hanya beberapa byte lebih dari hdd yang dapat dikoreksi telah rusak ada perubahan bahwa sebagian kecil dari 4096 Bytes masih memiliki data yang bermakna.
Contohnya adalah bahwa 4096 mewakili karakter ASCII dari 2 kalimat. Maka ada kemungkinan bahwa topi 1 kalimat atau lebih sepenuhnya utuh. Bisa juga setiap huruf ke-2 atau ke-3 telah dihapus. Jika data 4096 hilang dalam peristiwa URE, maka tergantung interpretasi dan bergantung pada data. Orang bisa membayangkan bahwa data itu sendiri memiliki lapisan ECC shell lain, yang akan memungkinkan untuk pemulihan lebih lanjut.
Oleh karena itu baik bahwa sebagian besar perangkat tegar memperlakukan sektor URE berbeda dari sektor buruk:
Atau sejauh itu, mungkin sebagian sektor masih berisi data yang dapat digunakan.
sumber