Bagaimana selftest SMART terkait dengan badblock?

15

Alat smartctl memungkinkan memulai swa-uji panjang ( smartctl -t long /dev/sda). Namun ada juga badblocksyang bisa saya jalankan di drive. Bagaimana keduanya terkait? Jika badblock mendeteksi blok-blok buruk, apakah drive secara otomatis memperbarui nilai SMART-nya (mis. Dengan memperbarui sektor-sektor yang direlokasinya dihitung)? Bisakah badblock diganti smartctl -t long, atau sebaliknya?

Hongli Lai
sumber

Jawaban:

5

Saya harus tidak setuju dengan voretaq7 - SMART bukanlah sihir. Ketika Anda memiliki drive dan salah satu sektornya rusak, Anda tidak akan dapat membaca data lagi. Jadi sangat mungkin untuk memiliki file yang tidak dapat dibaca pada disk drive modern. SMART akan menandai sektor yang tidak dapat dibaca ini sebagai "Pending Saat Ini" dan "Offline Tidak Dapat Dioreksi" ketika akan pertama kali diakses setelah kegagalan.

Tetapi ketika sektor ini akan ditulis lagi maka akan dipetakan ulang untuk memetakan ulang ruang, tanpa tanda dan penghitung "Reallocated_Sector_Ct" akan meningkat. Maka seluruh drive akan dapat dibaca lagi.

smartctl -t longTes berguna - ini akan menguji seluruh ruang drive untuk sektor yang tidak dapat dibaca dan masuk dan tandai sebagai "Current Pending" dan "Offline Uncorrectable" yang merupakan sektor buruk pertama yang dihadapi saat dijalankan. Saya mengkonfigurasi server saya untuk menjalankan tes panjang ini sekali per minggu di setiap drive. Ini tidak terlalu memengaruhi fungsi drive normal, karena permintaan OS selalu diprioritaskan daripada pemindaian SMART.

Seperti pada server saya selalu menjalankan disk di mirror RAID1, jadi ketika tes panjang menemukan bad sector saya dapat menulis ulang isinya menggunakan data dari drive lain di mirror, memaksa realokasi.

badblockskadang-kadang juga berguna - misalnya itu akan menguji seluruh drive dan tidak akan berhenti pada kesalahan pertama. Itu dapat menguji satu partisi atau bagian lain dari drive. Anda dapat menggunakannya untuk memeriksa dengan cepat apakah blok yang buruk berhasil dialokasikan kembali.

Tometzky
sumber
11

Seperti yang saya tunjukkan dalam jawaban saya yang lain , setiap hard drive modern memiliki ruang remapping yang tersedia (karena terutama pada kepadatan disk saat ini, tidak ada plat drive yang akan sempurna - akan selalu ada beberapa cacat yang harus dipetakan ulang drive, bahkan pada merek). -baru-tidak-pernah-digunakan-datang-dari-drive-line-ke-tangan-saya-drive).

Karena itu, secara teoritis Anda harus melaporkan kegagalan SMART sebelum sesuatu seperti badblockspemberitahuan (end-user-visible) bad sector pada drive.
Pada hard disk modern, setiap sektor buruk yang terlihat oleh pengguna akhir (seperti yang mungkin dilaporkan oleh badblocksatau secara otomatis terdeteksi oleh OS) adalah napas terakhir dan getaran dari disk yang sekarat.


Akhirnya SMART dan badblocks menguji dua hal yang berbeda, namun terkait:

SMART adalah alat pemantauan mandiri:

Hard drive mengetahui beberapa informasi tentang parameter operasinya, dan memiliki beberapa pengetahuan meta tentang apa yang "normal" untuk beberapa orang, dan "dapat diterima" untuk orang lain.
Jika drive merasakan bahwa parameter tertentu "tidak normal" atau "tidak dapat diterima" itu akan melaporkan kondisi pra-kegagalan - dengan kata lain drive masih berfungsi, tetapi mungkin gagal segera.

Sebagai contoh: Motor spindel biasanya menarik 0,10 amp, tetapi sekarang ia menggambar 0,50 amp - undian tinggi tidak normal yang mungkin mengindikasikan poros mengikat atau pelumas permanen pada bantalan hilang. Akhirnya motor tidak akan mampu mengatasi hambatan dan drive akan menyambar.

Contoh lain: Drive memiliki 1000 "remap" blok untuk menangani bad sector. Ini telah menggunakan 750 dari mereka, dan para insinyur yang membangun drive menentukan bahwa jumlah remaps menunjukkan sesuatu yang salah secara internal (piring buruk, kegagalan usia tua, kepala rusak) - drive akan melaporkan kondisi pra-kegagalan yang memungkinkan Anda waktu untuk mendapatkan data Anda mati sebelum ruang remap habis dan bad sector menjadi terlihat.

SMART mencari lebih dari sekadar sektor buruk - ini adalah penilaian yang lebih komprehensif tentang kesehatan drive. Anda dapat memiliki peringatan pra-kegagalan SMART pada drive tanpa sektor buruk dan tidak ada kesalahan baca / tulis (misalnya, masalah motor spindle yang saya jelaskan di atas).


badblocks adalah alat dengan tujuan tertentu (kedaluwarsa): Temukan sektor buruk.

badblocksdatang dari masa sebelum SMART dan pemetaan ulang sektor buruk. Saat itu kami tahu drive memiliki ketidaksempurnaan, tetapi satu-satunya cara untuk memetakannya untuk mencegah penyimpanan data yang tidak disengaja adalah dengan stress-test disk, menyebabkan kegagalan, dan kemudian ingat untuk tidak memasukkan data ke sana lagi.

Alasan saya mengatakan ini sudah usang adalah karena elektronik pada drive modern sudah melakukan apa yang badblocksdilakukan, secara internal dan beberapa ribu kali lebih cepat. badblockspada dasarnya memungkinkan drive kuno yang kekurangan elektronik canggih untuk memetakan kembali (atau melompati) sektor yang gagal, tetapi hard drive modern sudah mendeteksi sektor yang gagal dan memetakannya kembali untuk Anda.

Secara teoritis Anda dapat menggunakan badblocksdata untuk memiliki OS remap (terlihat) kegagalan seolah-olah disk modern Anda adalah disk Winchester kuno, tapi itu pada akhirnya kontraproduktif - Seperti yang saya katakan sebelumnya APAPUN sektor buruk yang terdeteksi badblockspada drive modern adalah penyebab untuk membuang seluruh drive rusak (atau hampir gagal).

Sektor buruk yang terlihat menunjukkan bahwa drive keluar dari ruang remapping, yang relatif jarang untuk disk modern kecuali mereka tua (mendekati akhir masa fungsional) atau rusak (piring-piring / kepala buruk dari pabrik).


Jadi pada dasarnya jika berjalan badblockspada disk sebelum Anda menyebarkannya dalam produksi membuat Anda merasa lebih baik maju dan melakukannya, tetapi jika disk Anda diproduksi pada abad ini dan itu menunjukkan sektor buruk yang terlihat Anda harus membuangnya di tempat sampah (atau memanggil garansi). Untuk uang saya, status SMART dan pertahanan secara mendalam adalah penggunaan waktu saya yang lebih baik daripada memeriksa disk secara manual.

voretaq7
sumber
1
Baiklah, itu menjelaskan perbedaan antara SMART dan badblock dengan sangat baik. Tetapi apakah ini menyiratkan bahwa pemantauan status SMART sudah cukup, atau apakah saya juga harus menjalankan tes SMART lama sekali jika saya ingin peringatan SMART berbunyi dengan benar? Yaitu saya harus menjalankan smartctl -t long /dev/sdasesekali, atau dapatkah saya berasumsi bahwa smartdakan "secara otomatis" memperingatkan saya tentang masalah yang akan terjadi tanpa saya harus menyiapkan hal lain?
Hongli Lai
Itu adalah keputusan yang hanya dapat Anda buat, namun SMART tidak dirancang untuk memerlukan intervensi manual (ini "Hanya Bekerja" dan Anda biasanya tidak boleh mengacaukannya). Percayai perangkat keras Anda (setidaknya sejauh ini), karena jika Anda tidak dapat mempercayai perangkat keras Anda, Anda bisa berkemas dan pulang.
voretaq7
2
"drive modern sudah melakukan apa yang badblock lakukan, secara internal dan beberapa ribu kali lebih cepat" badblocksmembaca setiap byte dari drive, menimpa mereka dengan pola acak, dan kemudian mengembalikan data aslinya. Tes mandiri SMART tidak melakukan ini. Ini harus menghapus semua sektor yang "tertunda", jika saya mengerti dengan benar.
Endolith
4
@ endolith Tes ini tidak setara langsung, tetapi tujuan yang mereka layani adalah setara (temukan dan biarkan pemetaan ulang sektor buruk). Poin utama saya adalah paragraf terakhir: jika Anda ingin menjalankan badblocks sebagai pengolah disk (untuk melihat apakah Anda dapat memprovokasi kesalahan SMART karena menemukan banyak blok buruk) lakukan saja, tetapi jika Anda menjalankan badblock hari ini dengan niat kemudian memuat daftar blokir buruk untuk menghindari penggunaan sektor-sektor tersebut (seperti yang kami lakukan di zaman batu) Anda Melakukannya Salah: Sektor buruk yang terlihat berarti Anda harus membuang drive di tempat sampah terdekat.
voretaq7
1
@Hashim Ya saya percaya ini berguna untuk menggunakan badblocks karena akan menghapus sektor yang tertunda.
endolith
5

Jawaban yang bagus untuk pertanyaan ini adalah

/superuser//a/693065

/superuser//a/693064

Bertentangan dengan jawaban lain saya menemukan badblocks tidak ketinggalan zaman tetapi alat yang sangat berguna. Setelah saya memutakhirkan pc saya dengan hard drive baru dan mulai berjalan tidak stabil. Butuh beberapa saat untuk menyadari berkat badblock bahwa permukaan disk memiliki cacat. Sejak itu saya menjalankan badblock mode tulis penuh (destructible!) Untuk setiap hard drive baru yang saya mulai gunakan dan tidak pernah memiliki masalah itu lagi. Saya sangat merekomendasikan

waktu sudo badblocks -swvo sdX.log / sev / sdX

untuk setiap hard drive baru. Ini akan menguji setiap bit disk beberapa kali untuk menulis dan membaca sehingga dapat menghindari banyak masalah nanti.

Selama tes ini blok buruk akan dipetakan oleh drive. Jadi, "Hitungan Sektor yang Direlokasi" harus dicatat sebelum dan sesudah pengujian dan dibandingkan dengan ambang SMART karena akan memberi tahu sesuatu tentang kesehatan drive.

Frank Breitling
sumber
2
Menguji stres drive baru saat masih dalam garansi adalah ide bagus.
Endolith
2

badblock adalah peninggalan dari masa lalu dan tidak sepenuhnya berguna, ia dapat menemukan sektor yang saat ini tidak dapat dibaca tetapi hal yang benar untuk dilakukan dengan sektor yang buruk adalah memulihkan data dari cadangan. Apa yang dapat dilakukan jika data tidak penting bagi Anda adalah menghapus file yang terkait dan menulis apa pun di lokasi itu, ini akan memungkinkan disk mengalokasikan kembali sektor tersebut jika dianggap perlu dan terus bekerja.

Disk self-test juga akan berkeliling dan menguji seluruh media untuk berbagai cacat, seharusnya menggunakan ambang yang lebih rendah dibandingkan dengan apa yang digunakan dalam operasi normal untuk melihat apakah disk memiliki banyak titik lemah dan berdasarkan logika vendor dapat memutuskan bahwa disk sudah melewati masa manfaatnya dan menyatakan pengujian gagal. Pada saat itu, Anda harus mengeluarkan semua data atau memulihkannya dari cadangan dan mengganti disk.

Jika tindakan disk (baik oleh blokir atau operasi normal) mengenai kesalahan baca yang tidak dapat dipulihkan, disk akan secara otomatis memperbarui penghitung realokasi yang tertunda dan ketika realokasi dilakukan, akan memperbarui pendataan realokasi dan penghitung yang direalokasi. Dd sederhana akan membuat itu terjadi juga.

Jika Anda perlu memilih di antara keduanya gunakan smartctl -t selama itu akan memiliki analisis disk yang lebih baik.

Saya juga dapat menyarankan penggunaan utilitas diskscan saya https://github.com/baruch/diskscan , ini berfungsi lebih seperti badblock tetapi mencoba untuk menilai apakah ada sektor yang memburuk, seperti sektor pendengaran yang membutuhkan lebih lama untuk dibaca. Ini merupakan indikasi masalah media yang sedang berkembang dan dalam versi yang akan datang mungkin juga menawarkan upaya otomatis untuk membantu disk memperbaiki masalah ini.

Baruch Even
sumber
"Juga, badblock pada dasarnya sudah usang di zaman ini karena disk itu sendiri akan mengalokasikan kembali data dan tidak ada lagi kebutuhan nyata untuk memetakan blok buruk di tingkat filesystem lagi." Tidak badblocksmenekankan dorongan dengan cara yang tidak dilakukan oleh swa-uji SMART?
Endolith
Tidak. Badblock akan melakukan pemindaian berurutan pada disk. Itu tidak lebih baik daripada dd dan akan sama dengan apa yang dilakukan swa-uji juga.
Baruch Even
badblocksmembaca setiap byte dari disk, menggantinya dengan pola uji, lalu menulis data asli kembali pada tempatnya. Tes mandiri SMART sama dengan tes baca-tulis?
endolit
1
Nah badblocks 'menulis ulang data akan menghapus semua "Sektor yang tertunda" dan membuat drive menandai mereka dengan baik lagi atau realokasi, benar?
Endolith
1
Iya. Mungkin itu yang Anda inginkan dalam kasus seperti itu.
Baruch Even