Mengapa hard drive yang diketahui memiliki blok buruk (diverifikasi dalam HDTune dan HDDScan), membeku di seluruh sistem saya?
Ini bukan drive OS; terpasang ke port SATA lain, dan saya mencoba untuk menyalin file dari itu ke drive lain yang sehat.
Saya telah mengalami masalah ini dengan hampir setiap hard drive yang rusak dan setiap PC Windows.
Saya berharap untuk melihat pembekuan hanya untuk program yang saya gunakan untuk menyalin file (Windows Explorer, dll), tetapi sebaliknya seluruh PC saya tersentak-sentak, dan saya tidak dapat menelusuri web atau menonton film sambil menyalin file dari drive yang rusak.
Ceritanya panjang.
Saya tinggal di daerah pedesaan di mana ada masalah dengan listrik (brownout, dll.). Saya sendiri menggunakan UPS dan hard drive saya sendiri baik-baik saja. Tetapi tetangga saya sering meminta bantuan dengan masalah PC mereka, dan saya sering menemukan bahwa hard drive mereka rusak, kemungkinan besar karena masalah listrik. Tentu saja, setelah mengganti drive yang rusak saya sarankan tetangga saya untuk membeli UPS.
Saya selalu bertanya-tanya, mengapa PC saya membeku sepenuhnya saat mengambil data dari drive yang rusak. Apakah ini masalah perangkat keras? Apakah ini disebabkan oleh cara OS membaca data? Apakah ini sesuatu yang spesifik untuk Windows, dan saya tidak akan mengalaminya di * nix?
Bagaimanapun, mulai sekarang saya akan menggunakan beberapa perangkat lunak khusus (seperti Roadkil's Unstoppable Copier) alih-alih Windows Explorer, walaupun saya tidak yakin apakah ini akan bekerja secara berbeda, tanpa membekukan seluruh PC.
Itu bukan permintaan bantuan, itu lebih untuk tujuan pendidikan, jadi saya tahu mengapa semuanya berjalan seperti itu.
sumber
Jawaban:
Ini adalah salah satu area di mana SATA tidak optimal. Masalahnya adalah pada tingkat protokol antarkoneksi perangkat penyimpanan, dan dengan demikian tidak terkait dengan perangkat lunak apa yang Anda jalankan. Menggunakan mesin fotokopi lain atau sistem operasi lain tidak akan secara ajaib membuat segalanya lebih baik, kecuali bahwa itu mungkin mencoba untuk menetapkan nilai batas waktu yang berbeda untuk mengurangi dampak dari masalah (yang mungkin atau mungkin tidak mungkin tergantung pada perangkat keras dan firmware; lihat di bawah ini ).
Ada beberapa poin penting di sini:
Poin # 1 adalah salah satu nilai jual utama untuk SAS di server; SAS memiliki penanganan kesalahan yang jauh lebih baik daripada SATA. Poin # 2 adalah batasan firmware drive, dan # 3 menjadi masalah karena # 2.
Jadi yang terjadi adalah OS mengeluarkan perintah "read sector" ke disk, dan sektor-sektor tertentu entah bagaimana rusak. Dengan demikian, disk akan masuk ke mode coba lagi untuk mencoba mendapatkan data dari piring-piring, mencoba membaca lagi dan lagi sampai mendapatkan data yang cukup baik bahwa koreksi kesalahan disk sendiri ( FEC ) dapat memperbaiki kesalahan yang tersisa. Jika Anda beruntung, ini mungkin tidak pernah, tetapi drive akan terus mencoba untuk jangka waktu yang cukup lama sebelum memutuskan bahwa pembacaan ini tidak akan berhasil.
Karena sistem operasi sedang menunggu pembacaan, ini setidaknya akan memperlambat proses penyalinan menjadi merangkak, dan tergantung pada arsitektur OS yang tepat dapat menyebabkan OS menjadi tersentak-sentak atau bahkan membeku selama durasi. Disk, pada titik ini, sibuk dengan pembacaan asli dan tidak akan menanggapi perintah pembacaan lebih lanjut sampai yang sedang menjalankan berakhir (berhasil atau tidak berhasil), dan perangkat lunak lain umumnya tidak akan melakukan lebih baik daripada sistem operasi itu. sedang berjalan.
Oleh karena itu, apa pun yang memicu pembacaan di tempat lain ( idealnya , hanya pada drive yang rusak) harus menunggu dalam antrean hingga drive yang rusak berhasil membaca sektor tersebut, atau menentukan bahwa itu tidak dapat dibaca. Karena penanganan drive nonresponsive SATA yang kurang optimal, ini dapat berarti bahwa tidak hanya drive yang Anda salin akan mengalami I / O tertunda. Ini dapat dengan mudah menyebabkan perangkat lunak lain menjadi lambat atau tidak responsif juga, karena perangkat lunak itu menunggu penyelesaian I / O yang berbeda untuk diselesaikan, bahkan jika sistem operasi mampu mengatasinya.
Penting juga untuk dicatat di sini bahwa disk I / O dapat terjadi meskipun Anda tidak secara eksplisit mengakses file apa pun pada disk. Dua penyebab utama untuk ini adalah kode eksekusi load-on-demand, dan swap. Karena swap kadang-kadang digunakan bahkan ketika sistem tidak berada di bawah tekanan memori, dan kode yang dapat dieksekusi load-on-demand adalah umum pada sistem modern dan dengan format file yang dapat dieksekusi modern, aktivitas pembacaan disk yang tidak diinginkan selama penggunaan normal adalah kemungkinan yang sangat nyata.
Seperti yang ditunjukkan dalam komentar terhadap pertanyaan oleh Matteo Italia , salah satu strategi mitigatif adalah menggunakan interkoneksi penyimpanan yang berbeda, yang merupakan cara rumit untuk mengatakan "memasukkan disk ke dalam selungkup USB". Dengan mengabstraksi melalui protokol penyimpanan massal USB , ini mengisolasi bagian SATA yang bermasalah dari seluruh sistem Anda, yang berarti bahwa secara teori , hanya I / O pada disk tertentu yang akan terpengaruh oleh masalah I / O pada disk tersebut.
Sebagai tambahan, ini adalah alasan mengapa SATA (khususnya, SATA tanpa drive-level ERC) sering tidak disarankan untuk RAID (terutama level RAID dengan redundansi, yang di antara yang standar adalah semua kecuali RAID 0 ); periode waktu tunggu yang lama dan penanganan kesalahan yang buruk dapat dengan mudah menyebabkan seluruh perangkat terlempar keluar dari array untuk bad sector tunggal, yang dapat ditangani dengan baik oleh pengontrol RAID jika ada redundansi dan pengontrol penyimpanan hanya tahu bahwa inilah masalahnya. SAS dirancang untuk array penyimpanan besar, dan dengan demikian dengan harapan bahwa akan ada masalah pada berbagai drive sesekali, yang menyebabkannya dirancang untuk menangani kasus drive bermasalah tunggal atau permintaan I / O dengan anggun.bahkan jika drive tidak. Disk bermasalah tidak sangat umum dalam sistem konsumen hanya karena mereka cenderung tidak memiliki banyak disk yang diinstal, dan yang diinstal hampir tidak pernah memiliki redundansi; karena SATA bertujuan untuk menggantikan PATA / IDE bukan SCSI (yang disebut SAS niche), kemungkinan fitur dan permintaan penanganan kesalahan (atau jaminan) dianggap memadai untuk kasus penggunaan yang dimaksudkan.
sumber
Seperti yang dinyatakan di atas, masalah dengan sistem membeku karena hard drive yang buruk terutama disebabkan oleh upaya panjang oleh drive untuk memulihkan data yang tidak dapat dibaca dari sektor buruk. Salah satu nilai jual drive perusahaan adalah batas waktu baca yang sangat singkat untuk sektor yang gagal. Menggunakan drive perusahaan dapat mengurangi masalah Anda sampai tingkat tertentu, tetapi tidak akan menyelesaikannya.
Jawaban terbaik, bergerak maju, adalah menjaga cadangan yang tepat sehingga pemulihan tidak diperlukan. Mengubah perangkat lunak pemulihan tidak akan membuat perbedaan karena ini adalah masalah batas waktu firmware.
sumber
Mereka tidak harus (secara umum). Ini benar-benar tergantung pada sistem file tertentu bagaimana kegagalan disk ditangani.
Pertimbangkan ZFS, yang dirancang dari bawah ke atas untuk menangani beberapa toleransi kesalahan. Berikut adalah video demo (dan satu dengan lebih banyak penjelasan ) di mana mereka menempatkan menjalankan drive pada landasan, mengambil ayunan dengan palu godam dan bor drive lain. Semua sementara ZFS terus berjalan.
sumber
Saya pikir masalah yang Anda temui adalah bagian tingkat rendah dari OS mencoba berkali-kali untuk membaca blok buruk sebelum menyerah. Rutin ini diimplementasikan pada level rendah jika diperlukan selama booting atau operasi mandiri lainnya, dan karenanya sulit untuk membuatnya kembali masuk. Sistem operasi akan halaman terus menerus selama operasi normal dan sulit untuk memberikan prioritas pada permintaan yang bersaing karena sistem tingkat rendah tidak akan tahu prioritas proses yang memiliki permintaan paging.
sumber