SMART 데이터에서 단일 Current_Pending_Sector 제거 / 진단 시도


18

저는 새로 Linux를 설치하는 과정에 있으며, 그렇게하기 전에 필요한 경우 HDD의 모든 데이터를 안전하게 덮어 쓸 수 있으므로 HDD 상태를 확인하기에 좋은시기라고 생각했습니다.

먼저 smartmontools로 확인을 시도했습니다 ... Seagate HDD는 현재 보류중인 섹터 하나와 오프라인으로 수정할 수없는 하나 (아마도 동일한 섹터)를보고합니다. 재 할당 된 섹터 수는 0입니다.

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

그러나 SMART 자체 테스트 (짧은, 긴, 오프라인, 전달)는 오류가 없습니다.

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         -

또한 드라이브 에서 badblocks -wsv (전체 읽기-쓰기 4 패턴 패스 테스트)를 실행하려고 시도했지만 불량 블록이 없습니다. 그런 다음 가이드를 따르십시오 (불량 블록을 실행 한 후 파일 시스템을 삭제했기 때문에 가능한 한) : http://smartmontools.sourceforge.net/badblockhowto.html

거기에 내가 0으로 섹터를 덮어 쓰면 디스크가 보류중인 섹터를 이동 (재 할당)해야한다고 말합니다. Badblocks 마지막 쓰기 패턴은 모두 0이므로 완료해야합니다. 그러나 아무것도 바뀌지 않았습니다. 여전히 보류중인 섹터 수 1을 가지고 있습니다.
그런 다음 어떤 섹터가 문제가있는 섹터인지 알아 내려고 SMART 출력에 오류 로그가 있습니다.

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

따라서 드라이브에는 두 가지 오류가있었습니다.

84 51 7c 1b 1a 02 ae  Error: ABRT at LBA = 0x0e021a1b = 235018779

40 51 00 b7 8c 02 e0  Error: UNC at LBA = 0x00028cb7 = 167095

그래서 이들은 섹터 번호 167095와 235018779라고 가정했습니다. 그리고 dd로 0을 쓰려고했습니다.

dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=167095

이제 그 하나는 괜찮 았습니다. 그러나 다른 부문과 함께 시도했을 때 :

dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=235018779

나는 dd : '/ dev / sda': cannot seek : Invalid argument을 얻는다 . 그런 다음 HDD에 234441658 섹터 만 있음을 발견했습니다. 그래서 이것은 범위를 벗어났습니다. 그런데 왜 SMART가 그 주소에서 오류를보고 했습니까?!

누구든지 나를 알아 내고 잘못하고있는 경우 올바르게 수행하는 방법을 알려줄 수 있습니까? dd와 함께 블록 크기 512를 사용하는 것이 잘못되었을 수 있습니다. 이것이 SMART가보고 한 섹터 크기입니다. 어쩌면 그 LBA 주소는 bs = 1로 설정하고 HDD의 해당 주소에 1 바이트 만 쓰려고 시도한 블록이 아닌 바이트입니다. 그것은 효과가 있었지만 (dd write process)… 그 후에도 보류중인 섹터 수는 여전히 변하지 않았습니다. 또한 syncsmartctl -t offline / dev / sda 를 호출 하여 드라이브를 섹터를 재 할당하도록 강제했습니다. 아무것도...

내 전체 smartctl --all / dev / sda 출력 은 다음과 같습니다 .

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.

최신 정보:

rob의 답변에서 제안한 것처럼 전체 HDD를 0으로 덮어 쓰려고했습니다. SMART 값을 확인한 다음 전체 HDD를 읽기 시작했습니다. SMART 값을 다시 확인했습니다. 결과 : 보류 / 재 할당 된 섹터 수에 대한 SMART 값은 두 경우 모두 쓰기 직후와 읽기 후에 변경되지 않습니다. 재 할당 된 0. 보류 중 1.


1
드라이브에 234441658 섹터가 있다고 생각하지만 불량 섹터 대신 재 맵핑 된 백업 섹터는이 수에 포함되지 않습니다.
gronostaj

흠, 235018779 섹터의 오류는 백업 섹터의 오류를 의미합니다. 가능합니까?
Ivan Kovacevic

1
백업 섹터도 손상 될 수 있습니다. 그렇지 않으면 백업 섹터에서만 "불멸의"하드 드라이브를 만듭니다.
gronostaj

:)… 내 추론은 백업 섹터가 사용 중이 아니기 때문에 안전하다는 것입니다. 디스크 헤드가 정전 등으로 인해 부적절한 동작을하는 경우에만 HDD 표면이 손상 될 수 있다고 가정했습니다.
Ivan Kovacevic

1
235018779 섹터가 백업 섹터라고 가정합니다. 즉, 최소 235018779-234441658 = 577121 백업 섹터가 있어야합니다. 백업 섹터는 거의 282MB입니다. 나에게 너무 많은 것 같습니다. 아니면? 큰 소리로 생각해 보면 아마도 백업 섹터가 아니라 SMART 진단의 결함일까요?
Ivan Kovacevic

답변:


15

읽기가 실패하면 섹터가 보류 중으로 표시됩니다. 후속 쓰기가 실패하면 보류중인 섹터가 재 할당 된 것으로 표시됩니다. 쓰기가 성공하면 현재 보류중인 섹터에서 제거되고 정상으로 간주됩니다. (정확한 동작은 약간 다를 수 있으며 나중에 다시 설명하겠습니다. 그러나 이것은 현재까지의 근사치입니다.)

를 실행 badblocks -w하면 각 패턴이 먼저 작성된 다음 읽습니다. 비정상적인 섹터에 대한 쓰기는 성공할 수 있지만 후속 읽기는 실패하여 보류중인 섹터 목록에 다시 추가 될 수 있습니다. 를 사용하여 전체 디스크에 0을 기록 dd if=/dev/zero of=/dev/sda하고 SMART 상태를 확인한 다음 전체 디스크를 읽고 dd if=/dev/sda of=/dev/nullSMART 상태를 다시 확인하십시오.

최신 정보:

의 이전 결과를 바탕으로 badblocks -w전체 디스크를 작성한 후 보류중인 섹터가 지워질 것으로 예상했습니다. 그러나 그렇게되지 않았으므로이 디스크가 예상대로 작동하지 않는다고 말하는 것이 안전합니다.

현재 보류중인 섹터 수에 대한 설명을 검토하십시오 .

"불안정한"섹터 수 (읽을 수없는 읽기 오류로 인해 재 매핑 대기 중) 이후에 불안정한 섹터를 성공적으로 읽으면 해당 섹터가 다시 매핑되고이 값이 줄어 듭니다. 섹터의 읽기 오류는 섹터를 즉시 다시 매핑하지 않습니다 (올바른 값을 읽을 수 없어 다시 매핑 할 값을 알 수 없으므로 나중에 읽을 수도 있음). 대신, 드라이브 펌웨어는 섹터를 다시 매핑해야한다는 것을 기억하고 다음에 기록 할 때 다시 매핑합니다. [29] 그러나 일부 드라이브는 기록 될 때 이러한 섹터를 즉시 다시 매핑하지 않습니다. 대신 드라이브가 먼저 문제 섹터에 쓰려고 시도하고 쓰기 작업이 성공하면 섹터가 양호로 표시됩니다 (이 경우 "재 할당 이벤트 수"(0xC4)가 증가하지 않음).

이제 중요한 사항을 검토해 보겠습니다.

... 드라이브 펌웨어는 해당 섹터를 다시 매핑해야한다는 것을 기억하고 다음에 기록 할 때 다시 매핑합니다. [29] 그러나 일부 드라이브는 기록 될 때 이러한 섹터를 즉시 다시 매핑하지 않습니다. 대신 드라이브는 먼저 문제 섹터에 쓰려고 시도하고 쓰기 작업이 성공하면 섹터가 양호로 표시됩니다.

다시 말해, 보류중인 섹터는 즉시 다시 매핑되거나 드라이브가 해당 섹터에 쓰려고 시도해야하며 다음 두 가지 중 하나가 발생해야합니다.

  1. 쓰기에 실패했습니다.이 경우 보류중인 섹터를 다시 매핑해야합니다.
  2. 쓰기에 성공했으며,이 경우 보류중인 섹터가 지워졌어야합니다 ( "좋은 것으로 표시").

나는 이것에 대해 더 일찍 힌트를 주었지만 현재 보류중인 섹터에 대한 Wikipedia의 설명은 전체 디스크 쓰기 후에 현재 보류중인 섹터 수가 항상 0이어야한다고 제안합니다 . 여기에 해당되지 않으므로 (a) Wikipedia가 잘못되었거나 (또는 ​​드라이브에 이상적임) 또는 (b) 드라이브 펌웨어가이 오류 상태를 제대로 처리 할 수 ​​없다고 결론을 내릴 수 있습니다 (펌웨어 버그로 간주합니다) ).

이후에 불안정한 섹터를 성공적으로 읽으면 해당 섹터가 다시 매핑되고이 값이 줄어 듭니다.

전체 드라이브를 읽은 후에도 현재 보류중인 섹터 수는 변경되지 않으므로 (a) 섹터를 읽지 못했거나 (b) 섹터를 읽은 상태로 양호하게 표시했지만 오류가 발생했다고 주장 할 수 있습니다. 다른 부문. 그러나 재 할당 된 섹터 수는 여전히 읽은 후에도 0이므로 (b)를 가능성으로 제외하고 보류중인 섹터를 여전히 읽을 수 없다고 결론 내릴 수 있습니다.

이 시점에서 드라이브가 새로운 SMART 오류를 기록했는지 확인하면 도움이됩니다. 다음 제안은 Seagate에 드라이브 용 펌웨어 업데이트 가 있는지 확인하는 것이지만 그렇지 않은 것 같습니다.

이 드라이브를 계속 사용하지 않는 것이 좋지만 관련된 위험을 기꺼이 받아 들일 수있는 것처럼 들립니다 (즉, 계속해서 불규칙하게 작동하거나 치명적으로 저하 될 수 있음). 이 경우 Linux를 설치하고 복구 CD로 부팅 한 다음 파일 시스템이 마운트 해제 된 상태에서 e2fsck -l filename 을 사용 하여 해당 블록을 수동으로 불량으로 표시 할 수 있습니다. (좋은 백업을 유지해야합니다!)

e2fsck -l 파일 이름

filename으로 지정된 파일에 나열된 블록 번호를 불량 블록 목록에 추가하십시오. 이 파일의 형식은 badblocks (8) 프로그램에 의해 생성 된 형식과 동일합니다. 블록 번호는 파일 시스템의 블록 크기를 기반으로합니다. 따라서 올바른 결과를 얻으려면 파일 시스템의 블록 크기가 badblocks (8)에 제공되어야합니다. 결과적으로, 올바른 매개 변수가 badblocks 프로그램으로 전달되도록하기 때문에 -c 옵션을 e2fsck에 사용하는 것이 훨씬 간단하고 안전합니다.

( e2fsck -c이 방법을 선호하며 e2fsck -l filename시도해 볼 수도 있지만 지금까지의 결과를 바탕으로 e2fsck -c가 불량 블록을 찾지 못할 것입니다.)

물론 SMART에서 제공 한 결함이있는 섹터의 LBA를 파일 시스템 블록 번호로 변환하려면 산술을 수행해야합니다. 불량 블록이 하우투는 편리한 공식을 제공합니다 :

  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에는이 공식을 사용한 완전한 예제도 포함되어 있습니다. OS를 설치 한 후 debugfs를 사용하여 파일이 비정상적인 섹터를 차지하는지 확인할 수 있습니다 (자세한 지침은 HowTo 참조).

다른 옵션 : 의심되는 불량 블록 주변의 파티션 OS를 설치할 때 오류 주변의 파티션을 시도 할 수도 있습니다. 산술을 올바르게 수행하면 오류는 약 81.589MB이므로 / boot를 약간 작게 만들고 섹터 167095 이후에 다음 파티션을 시작하거나 처음 82MB 정도를 완전히 건너 뛸 수 있습니다.

ABRT 235018779 불행히도, 235018779 섹터의 ABRT 오류는 추측 만 할 수 있지만 ATA8-ACS 스펙은 몇 가지 단서를 제공합니다.

작업 초안 AT 첨부 파일 8-ATA / ATAPI 명령 세트 (ATA8-ACS) :

6.2.1 중단 (ABRT) 오류 비트 2. 명령이 지원되지 않으면 중단은 1로 설정됩니다. 장치에서 명령이 요청한 작업을 완료 할 수없는 경우 중단을 1로 설정할 수 있습니다. IDNF가 1로 설정되지 않은 경우 사용자 액세스 가능 주소 범위를 벗어난 주소를 요청하면 중단도 1로 설정됩니다.

ABRT (다수의 READ SECTOR (S)와 재 교정 및 재 초기화)로 이어지는 명령 살펴보기 ...

명령이 지원되지 않으면 중단은 1로 설정됩니다. -이럴 것 같지 않습니다.

장치에서 명령이 요청한 작업을 완료 할 수없는 경우 중단을 1로 설정할 수 있습니다. -재 할당 된 섹터의 P- 목록이 사용자 액세스 가능한 주소를 섹터 235018779로 변환 할 정도로 충분히 사용자 액세스 가능한 주소를 이동시킬 수 있으며 읽기 작업을 완료 할 수 없었습니다 (어떤 이유로 우리는 알지 못합니다 ... 그러나 CRC 오류는 없었으므로 섹터 235018779가 나쁘다는 결론을 내릴 수는 없습니다.

IDNF가 1로 설정되지 않은 경우 사용자 액세스 가능 주소 범위를 벗어난 주소를 요청하면 중단도 1로 설정됩니다. -나에게 이것은 가장 가능성이 높은 것으로 보이며 아마도 소프트웨어 버그 (OS 또는 실행중인 일부 프로그램)의 결과로 해석했을 것입니다. 이 경우 하드 드라이브에 대한 임박한 운명의 징후가 아닙니다.

아직 진단을 실행하는 데 지치지 않는 경우를 대비하여 ...

당신이 시도 할 수 smartctl -t long /dev/sda는 SMART 로그에 더 이상 오류가 발생하는지 다시, 또는 당신은 미해결로이 일 떠날 수 X 파일을 )하고 다시 발생 여부를 확인하기 위해 주기적으로 SMART 로그를 확인하십시오. 어쨌든, 보류중인 섹터를 재 할당하거나 지우지 않고 드라이브를 계속 사용하면 이미 위험에 처해 있습니다.

체크섬 파일 시스템 사용

좀 더 안전을 위해 ZFS 또는 btrfs와 같은 체크섬 파일 시스템을 사용하여 낮은 수준의 데이터 손상을 방지하는 것이 좋습니다. 쉽게 재생할 수없는 것이 있으면 자주 백업을 수행하는 것을 잊지 마십시오.


좋은 생각이야, 지금 당장해볼 게
이반 코바 세 비치

1
나쁜 섹터 167095로 이것을 시도하는 것은 어떻습니까? :

너무 지루한 Naah : D. 의심스러운 부분부터 먼저 시도해 보아라. 현명한 조언이다. 만약 아무것도하지 않는다면, 만일의 경우에 대비해 전체 드라이브에서 실행되도록 할 것이다.
Ivan Kovacevic

@week는 트릭을 수행해야하지만 나쁜 섹터에서 제로화하는 데 어려움을 겪고있는 것 같습니다. 그래서 나는 전체 드라이브를 제안했습니다.
rob

1
전체 드라이브에 기록한 후에도 여전히 보류중인 섹터가있는 경우 불량 섹터 리매핑이 제대로 작동하지 않으므로 드라이브를 교체해야합니다 (또는 도박을하는 사람인 경우 드라이브가 이상하게 작동한다는 것을 알고 계속 사용하십시오) .
rob

5

불량 섹터 리매핑 기사에 사용 된 알고리즘이 나와 있습니다.

하드 디스크에는 두 가지 결함 목록이 있습니다.

  • P- 목록은 제조 과정에서 발견되는 결함이며 1 차 결함이라고도합니다. 그들은 순차적으로 정상 섹터를 따릅니다. 불량 섹터는 shift-number를 사용하여 교체를 가리 킵니다 (먼저 +1, +2 등).
  • G-List는 드라이브를 정상적으로 사용할 때 발생하는 결함이며 Grown Defects라고합니다. 할당에는 제약이 없으며 P- 목록 결함을 순차적으로 따를 필요가 없습니다. 불량 섹터는 간단한 섹터 번호를 사용하여 교체를 가리 킵니다.

따라서 불량 섹터가 일반 마지막 섹터를 넘어 577121 섹터라는 사실이 P-리스트 결함이 아닌 한 불량 섹터가 577121임을 의미하지는 않습니다. G- 목록 결함은 어느 곳에 나 배치 할 수 있으므로, 예비 섹터 공간의 끝에 펌웨어가 할당했을 가능성이 있습니다.

wikipedia 알려진 ATA SMART 속성 :

재 할당 된 섹터 수

재 할당 된 섹터 수 하드 드라이브가 읽기 / 쓰기 / 확인 오류를 발견하면 해당 섹터를 "재 할당 됨"으로 표시하고 데이터를 특수 예약 영역 (예비 영역)으로 전송합니다. 이 프로세스를 리매핑이라고도하며 재 할당 된 섹터를 "리맵"이라고합니다. 원가는 일반적으로 발견되어 재 매핑 된 불량 섹터의 수를 나타냅니다.

현재 보류중인 섹터 수

"불안정한"섹터 수 (읽을 수없는 읽기 오류로 인해 재 매핑 대기 중) 이후에 불안정한 섹터를 성공적으로 읽으면 해당 섹터가 다시 매핑되고이 값이 줄어 듭니다. 섹터의 읽기 오류는 섹터를 즉시 다시 매핑하지 않습니다 (올바른 값을 읽을 수 없어 다시 매핑 할 값을 알 수 없으므로 나중에 읽을 수도 있음). 대신 드라이브 펌웨어는 섹터를 다시 매핑해야한다는 것을 기억하고 다음에 기록 할 때 다시 매핑합니다.

실제로, 재 맵핑하기 위해 원본 내용을 읽을 수 없을 정도로 오류가 발생하기 때문에 보류중인 오류는 재 맵핑되는 것보다 훨씬 나쁩니다. 실제로 해당 부문의 내용은 영원히 손실 될 수 있습니다.

MHDD 매우 낮은 수준의 하드 디스크 진단 도구 문서 는 오류 코드를 다음과 같이 설명합니다.

UNC : data is uncorrectable
ABRT : command was aborted

따라서 167095 섹터는 수정할 수 없으며 235018779에 대한 읽기 / 쓰기가 중단되었습니다.

두 부문에 모두 쓰는 것이 상태를 보류에서 재 매핑으로 바꾸지 않았기 때문에 대체 부문도 나쁘게 보입니다. 내 이론은 167095 섹터가 235018779 섹터로 다시 매핑되었지만 불행히도 후자는 나쁘고 펌웨어는 불량 스페어 섹터를 다시 매핑하는 방법을 알지 못한다는 것입니다. 결과는 수정할 수없는 불량 섹터입니다.


좋은 기사, 나는 확실히 새로운 것을 배웠습니다! 그러나 여전히 SMART 로그에보고 된 불량 섹터가 일반 사용 가능한 공간이 아닌 예비 섹터 영역에보고되는 이유와 보류중인 섹터 카운터가 여전히 1이고 할당 된 섹터 카운터가 0 인 이유는 설명하지 않습니다. 이 두 카운터는 값을 반전시켜야합니다.
Ivan Kovacevic

1
위의 편집 내용을 참조하십시오.
harrymc

감사! 좋은 정보! 이제 질문이 있습니다. 167095를 다시 매핑하지 않았으므로이 HDD를 사용하는 것이 좋습니다? HDD가 해당 섹터를 불량으로 표시했으며 앞으로는 사용하지 않을 것입니다. 기본적으로 결정해야합니다 : Linux를 진행하고 설치할 수 있습니까, 아니면이 HDD를 버리고 새 것을 구입하여 Linux를 설치해야합니까, 아니면 해당 섹터를 수동으로 불량으로 표시하고 Linux를 설치하기 위해 무언가를 수행 할 수 있습니까 (명령 실행) 좋아하는 옵션).
Ivan Kovacevic 18시 59 분

1
불량 섹터가 두 개 뿐인 큰 디스크는 정크가되지 않습니다. 불량 블록이 성공함에 따라 해당 섹터가 불량으로 표시되기를 바랍니다. Linux를 설치하려고 시도하지만 설치 중에 배포판에서 그렇게 할 수 있으면 전체 형식을 수행하십시오. 그러나 이것이 중요한 프로덕션 시스템을위한 것일 경우를 대비하여 디스크를 변경합니다.
harrymc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.