SMART 자체 테스트는 불량 블록과 어떤 관련이 있습니까?


15

smartctl 도구를 사용하면 긴 자체 테스트 ( smartctl -t long /dev/sda)를 시작할 수 있습니다 . 그러나 badblocks드라이브에서 실행할 수도 있습니다. 두 사람은 어떻게 관련되어 있습니까? 불량 블록이 불량 블록을 감지하면 드라이브가 자동으로 SMART 값을 업데이트합니까 (예 : 재배치 된 섹터 수를 업데이트하여)? 배드 블록이를 대체 할 수 있습니까 smartctl -t long?

답변:


5

voretaq7 에 동의하지 않아야합니다. SMART는 마법이 아닙니다. 드라이브가 있고 해당 섹터 중 하나가 잘못되면 더 이상 데이터를 읽을 수 없습니다. 따라서 최신 디스크 드라이브에 읽을 수없는 파일을 가질 수 있습니다. SMART는이 읽을 수없는 섹터를 장애 후 처음 액세스 할 때 "현재 보류 중"및 "오프라인 수정할 수 없음"으로 표시합니다.

그러나이 섹터를 다시 쓰면 다시 매핑 된 공간으로 다시 매핑되고 표시가 해제되고 "Reallocated_Sector_Ct"카운터가 증가합니다. 그러면 전체 드라이브를 다시 읽을 수 있습니다.

smartctl -t long테스트는 유용합니다. 읽을 수없는 섹터에 대해 전체 드라이브 공간을 테스트하고 실행시 처음 발생한 불량 섹터 인 "Current Pending"및 "Offline Uncorrectable"로 기록하고 표시합니다. 모든 드라이브에서 일주일에 한 번씩이 긴 테스트를 실행하도록 서버를 구성하고 있습니다. OS 요청은 항상 SMART 스캔보다 우선하므로 일반적인 드라이브 기능에는 큰 영향을 미치지 않습니다.

서버에서와 같이 항상 RAID1 미러에서 디스크를 실행하므로, 긴 테스트에서 불량 섹터를 발견하면 미러의 다른 드라이브의 데이터를 사용하여 내용을 다시 작성하여 재 할당 할 수 있습니다.

badblocks예를 들어 전체 드라이브를 테스트하고 첫 번째 오류가 발생하지 않는 경우도 있습니다. 단일 파티션 또는 드라이브의 다른 부분을 테스트 할 수 있습니다. 이를 사용하여 불량 블록이 재 할당되었는지 신속하게 확인할 수 있습니다.


11

다른 대답에서 지적했듯이 모든 현대식 하드 드라이브에는 사용 가능한 공간이 재 매핑되어 있습니다 (특히 오늘날의 디스크 밀도에서 드라이브 플래터가 완벽하지 않기 때문에 항상 브랜드 에서조차 드라이브가 다시 매핑해야 할 몇 가지 결함이 있음) -새로 사용하지 않은 조립품을 손에 넣은 드라이브).

이 때문에 이론적 badblocks으로 드라이브의 고지 (최종 사용자가 볼 수있는) 불량 섹터 와 같은 문제가 발생하기 전에 SMART 오류가보고되어야합니다 .
최신 하드 디스크에서 최종 사용자가 볼 수있는 불량 섹터 ( badblocksOS에 의해 보고 되거나 자동으로 감지 될 수 있음 )는 죽어가는 디스크의 마지막 숨 막힘 현상입니다.


궁극적으로 SMART는 badblocks서로 다르지만 관련이있는 두 가지를 테스트 하고 테스트합니다.

SMART는 자체 모니터링 도구입니다.

하드 드라이브는 작동 매개 변수에 대한 일부 정보를 알고 있으며 일부는 "정상", 다른 것은 "허용"에 대한 메타 지식을 가지고 있습니다.
드라이브가 특정 매개 변수가 "비정상적"또는 "허용 할 수없는"것으로 감지하면 사전 실패 조건을보고합니다. 즉, 드라이브가 여전히 작동하지만 곧 실패 할 수 있습니다.

예를 들어, 스핀들 모터는 일반적으로 0.10A를 소비하지만 이제 0.50A를 그립니다. 비정상적으로 높은 드로우는 샤프트가 구속력이 있거나 베어링의 영구 윤활제가 사라 졌음을 나타낼 수 있습니다. 결국 모터는 저항을 극복 할 수 없으며 드라이브는 압류됩니다.

또 다른 예 : 드라이브에는 불량 섹터를 처리하기 위해 1000 개의 "재 맵핑"블록이 있습니다. 이 드라이브는 750 개를 사용했으며 드라이브를 구축 한 엔지니어는 재 맵핑 횟수가 내부적으로 잘못된 것을 나타냅니다 (나쁜 플래터, 노후 고장, 손상된 헤드)-드라이브가 사전 고장 상태를보고하여 다시 매핑 공간이 부족하고 불량 섹터가 표시되기 전에 데이터가 사라집니다.

SMART는 불량 섹터 이상을 찾고 있습니다. 이는 드라이브 상태에 대한보다 포괄적 인 평가입니다. 불량 섹터가없고 읽기 / 쓰기 오류가없는 드라이브 (예 : 위에서 설명한 스핀들 모터 문제)에 SMART 사전 장애 경고가 표시 될 수 있습니다.


badblocks 특정 (오래된) 목적을 가진 도구입니다. 불량 섹터를 찾으십시오.

badblocksSMART 및 불량 섹터 리매핑 이전의 시간입니다. 당시에는 드라이브에 결함이 있음을 알고 있었지만 실수로 데이터를 저장하지 않도록 드라이브를 매핑하는 유일한 방법은 디스크 스트레스 테스트를 수행하고 오류를 일으킨 다음 다시 데이터를 저장하지 않는 것입니다.

내가 구식이라고 말한 이유는 현대 드라이브의 전자 장치가 이미 badblocks내부적으로 몇 천 배 빠른 속도로 작동하기 때문입니다. badblocks기본적으로 정교한 전자 장치가없는 고대 드라이브는 고장난 섹터를 다시 매핑 (또는 건너 뛰기) 할 수 있지만 최신 하드 드라이브는 이미 고장난 섹터를 감지하여 다시 매핑합니다.

이론적으로 당신이 사용할 수있는 badblocks운영 체제를 다시 매핑이 데이터를 (눈에 보이는) 고장이 현대 디스크가 고대 윈체스터 디스크했지만, 그 궁극적으로 역효과 것처럼 - 마찬가지로 나는 이전에 말했다 어떠한 불량 섹터가 검출 badblocks현대 드라이브는 폐기하는 원인 전체 드라이브에 결함이 있거나 결함이 있습니다.

보이는 불량 섹터는 드라이브의 리매핑 공간이 부족함을 나타냅니다. 이는 오래된 (기능 수명이 거의 끝나지 않았거나) 결함이있는 경우 (공장의 불량 플래터 / 헤드)가 아니라면 현대 디스크에서는 비교적 드 rare니다.


따라서 기본적으로 badblocks디스크를 프로덕션 환경에 배포하기 전에 디스크에서 실행 하면 기분이 나아지고 기분이 좋아 지지만, 금세기에 디스크가 제조되어 눈에 띄는 불량 섹터가 표시되면 휴지통에 넣거나 보증). 돈을 위해 SMART 상태와 심층 방어는 디스크를 수동으로 확인하는 것보다 내 시간을 더 잘 사용합니다.


1
SMART와 불량 블록의 차이점을 잘 설명합니다. 그러나 이것은 SMART 상태를 모니터링하는 것은 충분 것을 의미 않거나, 나는 않습니다 또한 내가 SMART 경고가 제대로 떨어져 가고 싶은 경우 가끔 긴 SMART 테스트를 실행해야? 즉 smartctl -t long /dev/sda, 가끔 한 번 실행해야합니까 , 아니면 smartd다른 것을 설정하지 않고도 "자동으로"임박한 문제를 경고 한다고 가정 할 수 있습니까?
Hongli Lai

그것은 당신이 할 수있는 결정이지만, SMART는 수동 개입을 요구하도록 설계되지 않았습니다. 당신이 당신의 하드웨어를 신뢰할 수 없다면 당신은 잘 포장하고 집에 갈 수 있기 때문에 당신의 하드웨어를 신뢰하십시오.
voretaq7

2
"현대 드라이브는 이미 불량 블록이 내부적으로 수 천 배 더 빠른 속도로 작동합니다." badblocks는 드라이브에서 모든 바이트를 읽고 임의 패턴으로 덮어 쓴 다음 원래 데이터를 다시 넣습니다. SMART 자체 테스트는이 작업을 수행하지 않습니다. 올바르게 이해하면 "보류중인"섹터를 지워야합니다.
endolith

4
@endolith 테스트는 직접적으로 동등한 것은 아니지만 테스트의 목적은 동일합니다 (불량 섹터의 발견 및 재 매핑 허용). 내 주요 요점은 마지막 단락이었습니다. 불량 블록을 디스크 연습기로 실행하려는 경우 (많은 불량 블록을 발견하여 SMART 오류를 유발할 수 있는지 확인하기 위해), 그러나 오늘 불량 블록을 실행하는 경우 불량 섹터를 사용하지 않기 위해 불량 차단 목록을로드하려는 의도 (석기 시대와 마찬가지로) 잘못하고 있음 : 불량 섹터가 표시되면 가장 가까운 휴지통에 드라이브를 장착해야한다는 의미입니다.
voretaq7

1
@Hashim 예 보류중인 섹터를 지우므로 불량 블록을 사용하는 것이 유용하다고 생각합니다.
endolith

5

이 질문에 대한 좋은 답변은

/superuser//a/693065

/superuser//a/693064

다른 답변과 달리 구식 블록은 구식이 아니라 매우 유용한 도구입니다. 새 하드 드라이브로 PC를 업그레이드하고 불안정하게 시작했습니다. 디스크 표면에 결함이 있다는 불량 블록 덕분에 시간이 많이 걸렸습니다. 그 이후로 나는 모든 새 하드 드라이브에 대해 전체 쓰기 모드 (파괴 가능!) 배드 블록을 실행하여 사용하기 시작했으며 다시는 문제가 발생하지 않았습니다. 나는 매우 좋습니다

시간 sudo 배드 블록 -swvo sdX.log / sev / sdX

모든 새로운 하드 드라이브. 쓰기와 읽기를 위해 디스크의 모든 단일 비트를 몇 번 테스트하므로 나중에 많은 문제를 피할 수 있습니다.

이 테스트 중에 드라이브에서 불량 블록을 매핑합니다. 따라서 "재 할당 된 섹터 수"는 테스트 전후에 기록해야하며 SMART 임계 값과 비교해야합니다. 이는 드라이브 상태에 대해 알려줍니다.


2
보증 기간 동안 새 드라이브에 대한 스트레스 테스트는 좋은 생각입니다.
endolith

2

badblocks는 예전의 유물이며 엄격하게 유용하지는 않습니다. 현재 읽을 수없는 섹터를 찾을 수 있지만 불량 섹터와 관련된 올바른 일은 백업에서 데이터를 복구하는 것입니다. 데이터가 중요하지 않은 경우 수행 할 수있는 작업은 관련 파일을 삭제하고 해당 위치에 아무 것도 쓰지 않는 것입니다. 이렇게하면 디스크가 섹터가 필요하다고 생각하고 작업을 계속할 경우 섹터를 재 할당 할 수 있습니다.

디스크 자체 테스트는 여러 가지 결함에 대해 전체 미디어를 테스트하고 테스트하며, 디스크가 약한 지점을 가지고 있고 공급 업체 논리를 기반으로 디스크가 약한 지점을 가지고 있는지 확인하기 위해 정상적인 작업에서 사용하는 것과 비교하여 더 낮은 임계 값을 사용해야합니다. 디스크의 수명이 다되어 테스트가 실패했다고 선언합니다. 이때 모든 데이터를 꺼내거나 백업에서 복구하고 디스크를 교체해야합니다.

디스크 조치 (불량 블록 또는 정상 조작에 의한)가 복구 불가능한 읽기 오류에 도달하면 디스크는 자동으로 재 할당 보류 카운터를 갱신하고 재 할당이 수행 될 때 재 할당 보류 및 재 할당 된 카운터를 갱신합니다. 간단한 dd도 그런 일이 일어날 것입니다.

디스크를 더 잘 분석 할 수 있으면 smartctl -t를 사용하십시오.

나는 또한 diskscan 유틸리티 https://github.com/baruch/diskscan 의 사용을 제안 할 수 있습니다 . 더 오래 읽을 수 있습니다. 이는 개발중인 미디어 문제를 나타내며 이후 버전에서는 디스크가이 문제를 해결하도록 자동으로 시도 할 수도 있습니다.


"또한 디스크 자체가 데이터를 재 할당하고 더 이상 파일 시스템 수준에서 불량 블록을 매핑 할 필요가 없기 때문에 현재와 시대에 불량 블록은 더 이상 사용되지 않습니다." 하지 않습니다 badblocksSMART 자체 테스트를하지 않는 방법으로 드라이브를 강조?
endolith

불량 블록은 디스크를 순차적으로 스캔합니다. dd보다 낫지 않으며 자체 테스트와 동일한 기능을 수행합니다.
Baruch 짝수

badblocks디스크에서 모든 바이트를 읽고 테스트 패턴으로 바꾼 다음 원래 데이터를 다시 씁니다. SMART 자체 테스트는 유사하게 읽기-쓰기 테스트입니까?
endolith 2012 년

1
불량 블록의 데이터 재 작성은 "보류 섹터"를 지우고 드라이브가 다시 양호로 표시하거나 재 할당하도록합니까?
endolith

1
예. 그런 경우에 원하는 것일 수도 있습니다.
Baruch 짝수
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.