Mencoba menghapus / mendiagnosis satu Current_Pending_Sector dalam data SMART

18

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.

Ivan Kovacevic
sumber
1
Saya kira drive Anda memiliki 234441658 sektor, tetapi sektor cadangan yang dipetakan ulang di sektor yang buruk tidak masuk dalam angka ini.
gronostaj
Hmm, jadi kesalahan di sektor 235018779 berarti kesalahan di sektor cadangan ... Apakah itu mungkin?
Ivan Kovacevic
1
Nah, sektor cadangan juga bisa rusak. Kalau tidak, kita akan membuat hard drive "abadi" hanya dari sektor cadangan.
gronostaj
:) ... Yah alasan saya adalah bahwa sektor cadangan tidak digunakan (dan karenanya aman). Saya menduga bahwa permukaan HDD hanya dapat rusak jika kepala disk membuat tindakan yang tidak tepat, karena kegagalan daya atau sesuatu.
Ivan Kovacevic
1
Dengan asumsi bahwa sektor 235018779 adalah sektor cadangan. Itu berarti bahwa saya harus memiliki setidaknya 235018779 - 234441658 = 577121 sektor cadangan. Itu hampir 282 MB di sektor cadangan. Tampak banyak (terlalu banyak) bagi saya. Atau itu? Hanya berpikir keras, mungkin itu bukan sektor cadangan tetapi kesalahan dalam diagnostik SMART?
Ivan Kovacevic

Jawaban:

15

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 dengan dd if=/dev/zero of=/dev/sda, memeriksa status SMART, kemudian membaca seluruh disk dengan dd if=/dev/sda of=/dev/nulldan 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 :

Hitungan sektor "tidak stabil" (menunggu untuk dipetakan kembali, karena kesalahan baca yang tidak dapat dipulihkan). Jika sektor yang tidak stabil selanjutnya dibaca dengan sukses, sektor tersebut dipetakan ulang dan nilai ini menurun. Kesalahan baca pada suatu sektor tidak akan memetakan kembali sektor tersebut dengan segera (karena nilai yang benar tidak dapat dibaca sehingga nilai untuk memetakan tidak diketahui, dan juga mungkin dapat dibaca nanti); sebagai gantinya, firmware drive akan mengingat bahwa sektor ini perlu dipetakan ulang, dan akan memetakannya kembali saat nanti ditulis. [29] Namun beberapa drive tidak akan segera memetakan kembali sektor-sektor tersebut ketika ditulis; sebaliknya drive pertama-tama akan mencoba menulis ke sektor bermasalah dan jika operasi penulisan berhasil maka sektor tersebut akan ditandai dengan baik (dalam hal ini, "Jumlah Acara Realokasi" (0xC4) tidak akan ditingkatkan).

Sekarang mari kita tinjau poin-poin penting:

... firmware drive mengingat bahwa sektor ini perlu dipetakan ulang, dan akan memetakannya kembali saat nanti ditulis. [29] Namun beberapa drive tidak akan segera memetakan kembali sektor-sektor tersebut ketika ditulis; sebaliknya drive akan mencoba menulis ke sektor bermasalah terlebih dahulu dan jika operasi penulisan berhasil maka sektor tersebut akan ditandai dengan baik.

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:

  1. Penulisan gagal, dalam hal ini sektor yang tertunda harus dipetakan ulang.
  2. Penulisan berhasil, dalam hal ini sektor yang tertunda harus dibersihkan ("ditandai baik").

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 ).

Jika sektor yang tidak stabil selanjutnya dibaca dengan sukses, sektor tersebut akan dipetakan ulang dan nilai ini menurun.

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

Tambahkan nomor blok yang tercantum dalam file yang ditentukan oleh nama file ke daftar blok buruk. Format file ini sama dengan yang dihasilkan oleh program badblocks (8). Perhatikan bahwa nomor blok didasarkan pada ukuran blok sistem file. Oleh karena itu, badblocks (8) harus diberi blocksize dari sistem file untuk mendapatkan hasil yang benar. Akibatnya, jauh lebih sederhana dan lebih aman untuk menggunakan opsi -c ke e2fsck, karena itu akan memastikan bahwa parameter yang benar diteruskan ke program badblocks.

(Catatan yang e2fsck -clebih disukai e2fsck -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:

  b = (int)((L-S)*512/B)
where:
b = File System block number
B = File system block size in bytes
L = LBA of bad sector
S = Starting sector of partition as shown by fdisk -lu
and (int) denotes the integer part.

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) :

6.2.1 Abort (ABRT) Error bit 2. Abort harus diatur ke satu jika perintah tidak didukung. Abort dapat diatur ke satu jika perangkat tidak dapat menyelesaikan tindakan yang diminta oleh perintah. Abort juga harus ditetapkan ke satu jika alamat di luar kisaran alamat yang dapat diakses pengguna diminta jika IDNF tidak diatur ke satu.

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/sdalagi 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.

rampok
sumber
Ide bagus, saya akan mencobanya sekarang.
Ivan Kovacevic
1
Bagaimana dengan mencoba ini hanya dengan bad sector 167095? :)
minggu
Naah itu terlalu membosankan: D. Saya akan mencoba dengan sektor yang mencurigakan terlebih dahulu, jelas merupakan saran yang cerdas, jika itu tidak melakukan apa-apa, saya akan membiarkannya berjalan di seluruh drive untuk berjaga-jaga ...
Ivan Kovacevic
@Minggu itu harus melakukan trik tetapi sepertinya dia mengalami kesulitan memusatkan perhatian pada bad sector jadi itu sebabnya saya menyarankan hanya melakukan seluruh drive.
merampok
1
Jika masih ada sektor yang tertunda setelah menulis ke seluruh drive, maka memetakan ulang sektor buruk tidak berfungsi dengan benar dan Anda harus mengganti drive (atau, jika Anda seorang pemain judi, terus menggunakannya mengetahui bahwa itu mungkin berperilaku tidak menentu) .
merampok
5

Artikel Bad Sector Remapping memberikan algoritma yang digunakan.

Ada dua daftar kerusakan pada hard disk:

  • P-list adalah cacat yang ditemukan selama pembuatan dan juga dikenal sebagai Cacat Utama. Mereka secara berurutan mengikuti sektor normal. Sebuah bad sector akan menunjuk ke penggantinya menggunakan shift-number (pertama adalah +1, lalu +2 dll).
  • G-List adalah cacat yang berkembang dalam penggunaan normal drive dan dikenal sebagai Cacat Tumbuh. Tidak ada kendala pada alokasi mereka dan mereka tidak perlu mengikuti cacat daftar-P secara berurutan. Sektor buruk akan menunjukkan penggantinya menggunakan nomor sektor sederhana.

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 :

Jumlah Sektor yang Direalokasi

Jumlah sektor yang dialokasikan kembali. Ketika hard drive menemukan kesalahan baca / tulis / verifikasi, itu menandai sektor itu sebagai "dialokasikan kembali" dan mentransfer data ke area khusus yang dipesan (area cadangan). Proses ini juga dikenal sebagai pemetaan ulang, dan sektor-sektor yang dialokasikan kembali disebut "remaps". Nilai mentah biasanya mewakili hitungan sektor buruk yang telah ditemukan dan dipetakan kembali.

Hitungan Sektor Tertunda Saat Ini

Hitungan sektor "tidak stabil" (menunggu untuk dipetakan kembali, karena kesalahan baca yang tidak dapat dipulihkan). Jika sektor yang tidak stabil selanjutnya dibaca dengan sukses, sektor tersebut akan dipetakan ulang dan nilai ini menurun. Kesalahan baca pada suatu sektor tidak akan memetakan kembali sektor tersebut dengan segera (karena nilai yang benar tidak dapat dibaca sehingga nilai untuk memetakan tidak diketahui, dan juga mungkin dapat dibaca nanti); sebagai gantinya, firmware drive akan mengingat bahwa sektor ini perlu dipetakan ulang, dan akan memetakannya kembali saat nanti ditulis.

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:

UNC : data is uncorrectable
ABRT : command was aborted

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.

harrymc
sumber
Artikel yang bagus, saya pasti belajar sesuatu yang baru! Namun ini masih tidak menjelaskan mengapa sektor buruk yang dilaporkan dalam log SMART bahkan dilaporkan di area sektor cadangan dan tidak dalam ruang yang dapat digunakan normal dan mengapa counter sektor yang tertunda masih 1 dan realokasi counter sektor 0. Jika semuanya berfungsi sebagaimana mestinya dua penghitung ini seharusnya membalikkan nilainya.
Ivan Kovacevic
1
Lihat hasil edit saya di atas.
harrymc
Terima kasih! Info bagus! Sekarang saya punya pertanyaan: Karena 167095 tidak dipetakan kembali, apakah disarankan untuk menggunakan HDD ini? Apakah HDD hanya menandai sektor itu sebagai buruk dan akan menghindari menggunakannya di masa depan. Pada dasarnya saya perlu memutuskan: Dapatkah saya melanjutkan dan menginstal Linux, atau haruskah saya membuang HDD ini membeli yang baru dan menginstal Linux, atau dapatkah saya melakukan sesuatu (menjalankan perintah) untuk menandai sektor itu sebagai buruk secara manual dan menginstal Linux (my opsi favorit).
Ivan Kovacevic
1
Disk besar dengan hanya dua sektor buruk tidak pantas dibuang. Ketika badblock berhasil, mudah-mudahan itu menandai sektor itu sebagai buruk. Saya akan mencoba menginstal Linux untuk itu, tetapi lakukan format penuh jika distribusi Anda dapat melakukannya selama instalasi. Tetapi jika ini untuk sistem produksi yang penting, saya akan mengganti disk, untuk berjaga-jaga.
harrymc