Saya sedang dalam proses melakukan instalasi Linux baru dan sebelum saya melakukan itu saya pikir itu adalah waktu yang tepat untuk memverifikasi kesehatan HDD karena saya dapat dengan aman menimpa data pada HDD jika diperlukan.
Pertama saya mencoba memeriksa dengan smartmontools ... HDD Seagate saya melaporkan satu sektor yang tertunda saat ini dan satu offline tidak dapat diperbaiki (mungkin yang sama). Jumlah sektor yang dialokasikan kembali adalah nol.
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
...
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 1
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 1
Namun tes mandiri SMART (pendek, panjang, offline, alat angkut) tidak menemukan kesalahan.
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 6631 -
# 2 Conveyance offline Completed without error 00% 6630 -
# 3 Extended offline Completed without error 00% 6622 -
# 4 Short offline Completed without error 00% 6600 -
# 5 Extended offline Completed without error 00% 6632 -
Saya juga telah mencoba menjalankan badblocks -wsv (tes lulus pola baca-tulis 4 penuh) pada drive dan tidak ada blok buruk yang ditemukan. Saya kemudian mengikuti panduan (sejauh mungkin, karena saya menghapus sistem file saya setelah menjalankan badblocks) ditemukan di sini: http://smartmontools.sourceforge.net/badblockhowto.html
Di sana dikatakan bahwa jika saya menimpa sektor dengan semua nol disk harus bergerak (realokasi) sektor yang tertunda. Badblock, pola penulisan terakhir adalah semua nol sehingga seharusnya bisa melakukannya. namun tidak ada yang berubah Saya masih memiliki hitungan sektor yang tertunda 1.
Saya kemudian mencoba mencari tahu sektor mana yang bermasalah dan dalam output SMART ada log kesalahan:
Error 2 occurred at disk power-on lifetime: 5344 hours (222 days + 16 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
84 51 7c 1b 1a 02 ae Error: ABRT at LBA = 0x0e021a1b = 235018779
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
20 20 7f 18 1a 02 ae 00 00:09:05.228 READ SECTOR(S)
20 20 01 17 1a 02 ae 00 00:09:05.228 READ SECTOR(S)
20 20 01 01 00 00 a0 00 00:08:59.830 READ SECTOR(S)
91 20 3f 01 00 00 af 00 00:08:59.826 INITIALIZE DEVICE PARAMETERS [OBS-6]
10 20 01 01 00 00 a8 00 00:08:59.678 RECALIBRATE [OBS-4]
Error 1 occurred at disk power-on lifetime: 5009 hours (208 days + 17 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 00 b7 8c 02 e0 Error: UNC at LBA = 0x00028cb7 = 167095
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
25 20 1e 9e 8c 02 e0 00 00:02:20.691 READ DMA EXT
25 20 1e 80 8c 02 e0 00 00:02:20.691 READ DMA EXT
25 20 1e 62 8c 02 e0 00 00:02:20.690 READ DMA EXT
25 20 1e 44 8c 02 e0 00 00:02:20.690 READ DMA EXT
25 20 1e 26 8c 02 e0 00 00:02:20.690 READ DMA EXT
Jadi ternyata drive tersebut memiliki dua kesalahan.
84 51 7c 1b 1a 02 ae Error: ABRT at LBA = 0x0e021a1b = 235018779
dan
40 51 00 b7 8c 02 e0 Error: UNC at LBA = 0x00028cb7 = 167095
Jadi saya berasumsi ini adalah nomor sektor: 167095 dan 235018779. Dan saya mencoba menulis nol dengan dd:
dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=167095
Sekarang yang benar. Namun ketika saya mencoba dengan sektor lain:
dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=235018779
Saya mendapatkan dd: '/ dev / sda': tidak dapat mencari: Argumen tidak valid . Saya kemudian melihat bahwa HDD saya hanya memiliki 234441658 sektor. Jadi ini di luar jangkauan. Tapi mengapa SMART melaporkan kesalahan pada alamat itu ?!
Adakah yang bisa membantu saya mencari tahu dan juga menyarankan saya bagaimana melakukan ini dengan benar jika saya salah melakukannya? Saya menduga bahwa mungkin saya salah dalam menggunakan ukuran blok 512 dengan dd. Itu adalah ukuran sektor yang dilaporkan oleh SMART. mungkin alamat LBA itu bukan byte blok saya mencoba pengaturan bs = 1 dan menulis hanya satu byte ke alamat di HDD. Itu berhasil (proses penulisan dd) ... Namun hitungan sektor yang tertunda masih tidak berubah setelah itu. Saya juga menelepon sinkronisasi dan smartctl -t offline / dev / sda untuk mencoba 'memaksa' drive untuk merealokasi sektor ini. Tidak ada...
Ini adalah smartctl lengkap saya - semua / dev / hda keluaran:
smartctl 5.43 2012-06-30 r3573 [i686-linux-2.6.32-358.el6.i686] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.9
Device Model: ST3120811AS
Serial Number: 6PT1N4VZ
Firmware Version: 3.AAE
User Capacity: 120,034,123,776 bytes [120 GB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 7
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Mon Nov 18 12:03:00 2013 UTC
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 430) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 51) minutes.
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 084 077 006 Pre-fail Always - 185600113
3 Spin_Up_Time 0x0003 095 095 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 098 098 020 Old_age Always - 2185
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 073 055 030 Pre-fail Always - 25890559714
9 Power_On_Hours 0x0032 093 093 000 Old_age Always - 6632
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 098 098 020 Old_age Always - 2229
187 Reported_Uncorrect 0x0032 099 099 000 Old_age Always - 1
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 071 056 045 Old_age Always - 29 (Min/Max 25/29)
194 Temperature_Celsius 0x0022 029 044 000 Old_age Always - 29 (0 13 0 0 0)
195 Hardware_ECC_Recovered 0x001a 052 046 000 Old_age Always - 194244099
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 1
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 1
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0
202 Data_Address_Mark_Errs 0x0032 066 219 000 Old_age Always - 34
SMART Error Log Version: 1
ATA Error Count: 2
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
Error 2 occurred at disk power-on lifetime: 5344 hours (222 days + 16 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
84 51 7c 1b 1a 02 ae Error: ABRT at LBA = 0x0e021a1b = 235018779
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
20 20 7f 18 1a 02 ae 00 00:09:05.228 READ SECTOR(S)
20 20 01 17 1a 02 ae 00 00:09:05.228 READ SECTOR(S)
20 20 01 01 00 00 a0 00 00:08:59.830 READ SECTOR(S)
91 20 3f 01 00 00 af 00 00:08:59.826 INITIALIZE DEVICE PARAMETERS [OBS-6]
10 20 01 01 00 00 a8 00 00:08:59.678 RECALIBRATE [OBS-4]
Error 1 occurred at disk power-on lifetime: 5009 hours (208 days + 17 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 00 b7 8c 02 e0 Error: UNC at LBA = 0x00028cb7 = 167095
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
25 20 1e 9e 8c 02 e0 00 00:02:20.691 READ DMA EXT
25 20 1e 80 8c 02 e0 00 00:02:20.691 READ DMA EXT
25 20 1e 62 8c 02 e0 00 00:02:20.690 READ DMA EXT
25 20 1e 44 8c 02 e0 00 00:02:20.690 READ DMA EXT
25 20 1e 26 8c 02 e0 00 00:02:20.690 READ DMA EXT
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 6631 -
# 2 Conveyance offline Completed without error 00% 6630 -
# 3 Extended offline Completed without error 00% 6622 -
# 4 Short offline Completed without error 00% 6600 -
# 5 Extended offline Completed without error 00% 6632 -
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
MEMPERBARUI:
Seperti yang disarankan dalam jawaban dari rob saya mencoba menimpa seluruh HDD dengan nol. Memeriksa nilai-nilai SMART dan kemudian mulai membaca seluruh HDD. Sekali lagi memeriksa nilai SMART. Hasilnya adalah: Nilai-nilai SMART mengenai penghitungan sektor yang tertunda / dialokasikan kembali tidak berubah, dalam kedua kasus, segera setelah menulis dan kemudian setelah membaca. Realokasi 0. Tertunda 1.
sumber
Jawaban:
Sektor ditandai tertunda saat pembacaan gagal. Sektor yang tertunda akan ditandai dialokasikan kembali jika penulisan berikutnya gagal. Jika penulisan berhasil, itu dihapus dari sektor tertunda saat ini dan dianggap ok. (Perilaku yang tepat bisa sedikit berbeda dan saya akan membahasnya nanti, tapi ini perkiraan yang cukup dekat untuk saat ini.)
Saat Anda menjalankan
badblocks -w
, setiap pola pertama kali ditulis, lalu membaca. Ada kemungkinan bahwa penulisan ke sektor serpihan berhasil tetapi pembacaan berikutnya gagal, yang lagi menambahkannya ke daftar sektor yang tertunda. Saya akan mencoba menulis nol ke seluruh disk dengandd if=/dev/zero of=/dev/sda
, memeriksa status SMART, kemudian membaca seluruh disk dengandd if=/dev/sda of=/dev/null
dan memeriksa status SMART lagi.Memperbarui:
Berdasarkan hasil Anda sebelumnya dengan
badblocks -w
, saya akan berharap sektor yang tertunda akan dihapus setelah menulis seluruh disk. Tetapi karena itu tidak terjadi, aman untuk mengatakan bahwa disk ini tidak berperilaku seperti yang diharapkan.Mari kita tinjau deskripsi Hitungan Sektor Tertunda Saat Ini :
Sekarang mari kita tinjau poin-poin penting:
Dengan kata lain, sektor yang tertunda harus segera dipetakan kembali, atau drive seharusnya berusaha menulis ke sektor tersebut dan salah satu dari dua hal seharusnya terjadi:
Saya mengisyaratkan ini sebelumnya, tetapi deskripsi Wikipedia tentang Sektor Tertunda Saat Ini menunjukkan bahwa jumlah sektor yang tertunda saat ini harus selalu nol setelah disk penuh menulis . Karena bukan itu masalahnya, kami dapat menyimpulkan bahwa (a) Wikipedia salah (atau setidaknya salah untuk drive Anda), atau (b) firmware drive tidak dapat menangani keadaan kesalahan ini dengan benar (yang saya anggap sebagai bug firmware ).
Karena jumlah sektor yang tertunda saat ini masih tidak berubah setelah membaca seluruh drive, kami dapat menyatakan bahwa (a) sektor tersebut tidak dapat dibaca dengan sukses atau (b) sektor itu berhasil dibaca dan ditandai dengan baik, tetapi ada kesalahan membaca sektor yang berbeda. Tetapi karena hitungan sektor yang dialokasikan kembali masih 0 setelah dibaca, kita dapat mengecualikan (b) sebagai suatu kemungkinan dan dapat menyimpulkan bahwa sektor yang tertunda masih belum dapat dibaca.
Pada titik ini, akan sangat membantu untuk mengetahui apakah drive telah mencatat kesalahan SMART baru. Saran saya berikutnya adalah untuk memeriksa apakah Seagate memiliki pembaruan firmware untuk drive Anda, tetapi sepertinya tidak.
Meskipun saya akan merekomendasikan untuk tidak terus menggunakan drive ini, sepertinya Anda mungkin bersedia menerima risiko yang terlibat (yaitu, bahwa ia dapat terus bertindak tidak menentu dan / atau dapat menurunkan atau gagal lebih jauh secara serampangan). Dalam hal ini, Anda dapat mencoba menginstal Linux, boot dari CD cadangan, kemudian (dengan sistem file di-unmount) gunakan e2fsck -l nama file untuk secara manual menandai blok yang sesuai sebagai buruk. (Pastikan Anda menjaga cadangan yang baik!)
e2fsck -l nama file
(Catatan yang
e2fsck -c
lebih disukaie2fsck -l filename
, dan Anda bahkan mungkin ingin mencobanya, tetapi berdasarkan hasil Anda sejauh ini, saya sangat ragu e2fsck -c akan menemukan blok buruk.)Tentu saja, Anda harus melakukan aritmatika untuk mengubah LBA dari sektor yang salah (seperti yang disediakan oleh SMART) menjadi nomor blok sistem file. The Bad Blocks HowTo menyediakan formula praktis:
HowTo juga berisi contoh lengkap menggunakan rumus ini. Setelah OS diinstal, Anda dapat mengonfirmasi apakah file menempati sektor terkelupas menggunakan debugfs (lihat HowTo untuk petunjuk terperinci).
Pilihan lain: partisi di sekitar blok buruk yang dicurigai Ketika Anda menginstal OS Anda, Anda juga bisa mencoba mempartisi di sekitar kesalahan. Jika saya melakukan perhitungan aritmatika saya dengan benar, kesalahannya adalah sekitar 81,589 MB, jadi bisa membuat / boot sedikit kecil dan memulai partisi Anda berikutnya setelah sektor 167095, atau melewatkan 82 MB pertama atau lebih sepenuhnya.
ABRT 235018779 Sayangnya, untuk kesalahan ABRT di sektor 235018779, kita hanya bisa berspekulasi, tetapi spesifikasi ATA8-ACS memberi kita beberapa petunjuk.
Dari Draft Kerja AT Lampiran 8 - ATA / ATAPI Command Set (ATA8-ACS) :
Melihat perintah yang mengarah ke ABRT (beberapa READ SEKTOR (S) diikuti oleh kalibrasi ulang dan inisialisasi ulang) ...
Batalkan akan diatur ke satu jika perintah tidak didukung. - Ini sepertinya tidak mungkin.
Abort dapat diatur ke satu jika perangkat tidak dapat menyelesaikan tindakan yang diminta oleh perintah. - Mungkin P-list sektor yang dialokasikan kembali menggeser alamat yang dapat diakses pengguna cukup jauh sehingga alamat yang dapat diakses pengguna diterjemahkan ke sektor 235018779, dan operasi baca tidak dapat menyelesaikan (untuk alasan apa, kita tidak tahu ... tetapi tidak ada kesalahan CRC, jadi saya tidak berpikir kita bisa menyimpulkan bahwa sektor 235018779 buruk).
Abort juga harus ditetapkan ke satu jika alamat di luar kisaran alamat yang dapat diakses pengguna diminta jika IDNF tidak diatur ke satu. - Bagi saya ini tampaknya paling mungkin, dan saya mungkin akan menafsirkannya sebagai hasil dari bug perangkat lunak (baik OS Anda atau beberapa program yang sedang Anda jalankan). Dalam hal ini, itu bukan tanda akan datangnya malapetaka bagi hard drive.
Kalau-kalau Anda belum lelah menjalankan diagnostik ...
Anda dapat mencoba
smartctl -t long /dev/sda
lagi untuk melihat apakah itu menghasilkan kesalahan lagi dalam log SMART, atau Anda dapat meninggalkan ini sebagai file-X yang tidak terpecahkan ;) dan memeriksa log SMART secara berkala untuk melihat apakah itu terjadi lagi. Bagaimanapun, jika Anda terus menggunakan drive tanpa membuatnya untuk merealokasi atau menghapus sektor yang tertunda, Anda sudah mengambil risiko.Gunakan sistem file checksumming
Untuk sedikit lebih aman, Anda mungkin ingin mempertimbangkan untuk menggunakan sistem file checksumming seperti ZFS atau btrfs untuk membantu melindungi terhadap korupsi data tingkat rendah. Dan jangan lupa untuk sering melakukan backup jika Anda memiliki sesuatu yang tidak dapat dengan mudah direproduksi.
sumber
Artikel Bad Sector Remapping memberikan algoritma yang digunakan.
Ada dua daftar kerusakan pada hard disk:
Oleh karena itu fakta bahwa sektor buruk Anda adalah 577121 sektor di luar sektor terakhir normal tidak berarti bahwa Anda memiliki 577121 sektor buruk, kecuali jika itu adalah cacat daftar-P. Cacat daftar-G dapat ditempatkan di mana saja, sehingga sangat mungkin bahwa firmware mengalokasikannya di akhir ruang sektor cadangan.
Dari wikipedia, atribut ATA SMART yang dikenal :
Jadi sebenarnya, kesalahan yang tertunda jauh lebih buruk daripada memetakan kembali, karena kesalahan itu cukup sulit untuk mencegah membaca konten asli untuk memetakan kembali. Akibatnya, isi sektor itu mungkin hilang selamanya.
Dokumen MHDD Alat diagnostik Hard Disk level sangat rendah menjelaskan kode kesalahan sebagai:
Jadi sektor 167095 tidak dapat diperbaiki dan membaca / menulis ke 235018779 dibatalkan.
Karena penulisan untuk kedua sektor tidak mengubah status dari yang tertunda menjadi dipetakan kembali, bagi saya tampaknya sektor pengganti juga buruk. Teori saya adalah bahwa sektor 167095 telah dipetakan kembali ke sektor 235018779, tetapi sayangnya yang terakhir juga buruk, dan bahwa firmware tidak tahu cara memetakan kembali sektor-sektor cadangan yang buruk. Hasilnya adalah sektor buruk yang tidak dapat diperbaiki.
sumber