답변:
voretaq7 에 동의하지 않아야합니다. SMART는 마법이 아닙니다. 드라이브가 있고 해당 섹터 중 하나가 잘못되면 더 이상 데이터를 읽을 수 없습니다. 따라서 최신 디스크 드라이브에 읽을 수없는 파일을 가질 수 있습니다. SMART는이 읽을 수없는 섹터를 장애 후 처음 액세스 할 때 "현재 보류 중"및 "오프라인 수정할 수 없음"으로 표시합니다.
그러나이 섹터를 다시 쓰면 다시 매핑 된 공간으로 다시 매핑되고 표시가 해제되고 "Reallocated_Sector_Ct"카운터가 증가합니다. 그러면 전체 드라이브를 다시 읽을 수 있습니다.
smartctl -t long
테스트는 유용합니다. 읽을 수없는 섹터에 대해 전체 드라이브 공간을 테스트하고 실행시 처음 발생한 불량 섹터 인 "Current Pending"및 "Offline Uncorrectable"로 기록하고 표시합니다. 모든 드라이브에서 일주일에 한 번씩이 긴 테스트를 실행하도록 서버를 구성하고 있습니다. OS 요청은 항상 SMART 스캔보다 우선하므로 일반적인 드라이브 기능에는 큰 영향을 미치지 않습니다.
서버에서와 같이 항상 RAID1 미러에서 디스크를 실행하므로, 긴 테스트에서 불량 섹터를 발견하면 미러의 다른 드라이브의 데이터를 사용하여 내용을 다시 작성하여 재 할당 할 수 있습니다.
badblocks
예를 들어 전체 드라이브를 테스트하고 첫 번째 오류가 발생하지 않는 경우도 있습니다. 단일 파티션 또는 드라이브의 다른 부분을 테스트 할 수 있습니다. 이를 사용하여 불량 블록이 재 할당되었는지 신속하게 확인할 수 있습니다.
다른 대답에서 지적했듯이 모든 현대식 하드 드라이브에는 사용 가능한 공간이 재 매핑되어 있습니다 (특히 오늘날의 디스크 밀도에서 드라이브 플래터가 완벽하지 않기 때문에 항상 브랜드 에서조차 드라이브가 다시 매핑해야 할 몇 가지 결함이 있음) -새로 사용하지 않은 조립품을 손에 넣은 드라이브).
이 때문에 이론적 badblocks
으로 드라이브의 고지 (최종 사용자가 볼 수있는) 불량 섹터 와 같은 문제가 발생하기 전에 SMART 오류가보고되어야합니다 .
최신 하드 디스크에서 최종 사용자가 볼 수있는 불량 섹터 ( badblocks
OS에 의해 보고 되거나 자동으로 감지 될 수 있음 )는 죽어가는 디스크의 마지막 숨 막힘 현상입니다.
궁극적으로 SMART는 badblocks
서로 다르지만 관련이있는 두 가지를 테스트 하고 테스트합니다.
하드 드라이브는 작동 매개 변수에 대한 일부 정보를 알고 있으며 일부는 "정상", 다른 것은 "허용"에 대한 메타 지식을 가지고 있습니다.
드라이브가 특정 매개 변수가 "비정상적"또는 "허용 할 수없는"것으로 감지하면 사전 실패 조건을보고합니다. 즉, 드라이브가 여전히 작동하지만 곧 실패 할 수 있습니다.
예를 들어, 스핀들 모터는 일반적으로 0.10A를 소비하지만 이제 0.50A를 그립니다. 비정상적으로 높은 드로우는 샤프트가 구속력이 있거나 베어링의 영구 윤활제가 사라 졌음을 나타낼 수 있습니다. 결국 모터는 저항을 극복 할 수 없으며 드라이브는 압류됩니다.
또 다른 예 : 드라이브에는 불량 섹터를 처리하기 위해 1000 개의 "재 맵핑"블록이 있습니다. 이 드라이브는 750 개를 사용했으며 드라이브를 구축 한 엔지니어는 재 맵핑 횟수가 내부적으로 잘못된 것을 나타냅니다 (나쁜 플래터, 노후 고장, 손상된 헤드)-드라이브가 사전 고장 상태를보고하여 다시 매핑 공간이 부족하고 불량 섹터가 표시되기 전에 데이터가 사라집니다.
SMART는 불량 섹터 이상을 찾고 있습니다. 이는 드라이브 상태에 대한보다 포괄적 인 평가입니다. 불량 섹터가없고 읽기 / 쓰기 오류가없는 드라이브 (예 : 위에서 설명한 스핀들 모터 문제)에 SMART 사전 장애 경고가 표시 될 수 있습니다.
badblocks
특정 (오래된) 목적을 가진 도구입니다. 불량 섹터를 찾으십시오.badblocks
SMART 및 불량 섹터 리매핑 이전의 시간입니다. 당시에는 드라이브에 결함이 있음을 알고 있었지만 실수로 데이터를 저장하지 않도록 드라이브를 매핑하는 유일한 방법은 디스크 스트레스 테스트를 수행하고 오류를 일으킨 다음 다시 데이터를 저장하지 않는 것입니다.
내가 구식이라고 말한 이유는 현대 드라이브의 전자 장치가 이미 badblocks
내부적으로 몇 천 배 빠른 속도로 작동하기 때문입니다. badblocks
기본적으로 정교한 전자 장치가없는 고대 드라이브는 고장난 섹터를 다시 매핑 (또는 건너 뛰기) 할 수 있지만 최신 하드 드라이브는 이미 고장난 섹터를 감지하여 다시 매핑합니다.
이론적으로 당신이 사용할 수있는 badblocks
운영 체제를 다시 매핑이 데이터를 (눈에 보이는) 고장이 현대 디스크가 고대 윈체스터 디스크했지만, 그 궁극적으로 역효과 것처럼 - 마찬가지로 나는 이전에 말했다 어떠한 불량 섹터가 검출 badblocks
현대 드라이브는 폐기하는 원인 전체 드라이브에 결함이 있거나 결함이 있습니다.
보이는 불량 섹터는 드라이브의 리매핑 공간이 부족함을 나타냅니다. 이는 오래된 (기능 수명이 거의 끝나지 않았거나) 결함이있는 경우 (공장의 불량 플래터 / 헤드)가 아니라면 현대 디스크에서는 비교적 드 rare니다.
따라서 기본적으로 badblocks
디스크를 프로덕션 환경에 배포하기 전에 디스크에서 실행 하면 기분이 나아지고 기분이 좋아 지지만, 금세기에 디스크가 제조되어 눈에 띄는 불량 섹터가 표시되면 휴지통에 넣거나 보증). 돈을 위해 SMART 상태와 심층 방어는 디스크를 수동으로 확인하는 것보다 내 시간을 더 잘 사용합니다.
badblocks
는 드라이브에서 모든 바이트를 읽고 임의 패턴으로 덮어 쓴 다음 원래 데이터를 다시 넣습니다. SMART 자체 테스트는이 작업을 수행하지 않습니다. 올바르게 이해하면 "보류중인"섹터를 지워야합니다.
이 질문에 대한 좋은 답변은
다른 답변과 달리 구식 블록은 구식이 아니라 매우 유용한 도구입니다. 새 하드 드라이브로 PC를 업그레이드하고 불안정하게 시작했습니다. 디스크 표면에 결함이 있다는 불량 블록 덕분에 시간이 많이 걸렸습니다. 그 이후로 나는 모든 새 하드 드라이브에 대해 전체 쓰기 모드 (파괴 가능!) 배드 블록을 실행하여 사용하기 시작했으며 다시는 문제가 발생하지 않았습니다. 나는 매우 좋습니다
시간 sudo 배드 블록 -swvo sdX.log / sev / sdX
모든 새로운 하드 드라이브. 쓰기와 읽기를 위해 디스크의 모든 단일 비트를 몇 번 테스트하므로 나중에 많은 문제를 피할 수 있습니다.
이 테스트 중에 드라이브에서 불량 블록을 매핑합니다. 따라서 "재 할당 된 섹터 수"는 테스트 전후에 기록해야하며 SMART 임계 값과 비교해야합니다. 이는 드라이브 상태에 대해 알려줍니다.
badblocks는 예전의 유물이며 엄격하게 유용하지는 않습니다. 현재 읽을 수없는 섹터를 찾을 수 있지만 불량 섹터와 관련된 올바른 일은 백업에서 데이터를 복구하는 것입니다. 데이터가 중요하지 않은 경우 수행 할 수있는 작업은 관련 파일을 삭제하고 해당 위치에 아무 것도 쓰지 않는 것입니다. 이렇게하면 디스크가 섹터가 필요하다고 생각하고 작업을 계속할 경우 섹터를 재 할당 할 수 있습니다.
디스크 자체 테스트는 여러 가지 결함에 대해 전체 미디어를 테스트하고 테스트하며, 디스크가 약한 지점을 가지고 있고 공급 업체 논리를 기반으로 디스크가 약한 지점을 가지고 있는지 확인하기 위해 정상적인 작업에서 사용하는 것과 비교하여 더 낮은 임계 값을 사용해야합니다. 디스크의 수명이 다되어 테스트가 실패했다고 선언합니다. 이때 모든 데이터를 꺼내거나 백업에서 복구하고 디스크를 교체해야합니다.
디스크 조치 (불량 블록 또는 정상 조작에 의한)가 복구 불가능한 읽기 오류에 도달하면 디스크는 자동으로 재 할당 보류 카운터를 갱신하고 재 할당이 수행 될 때 재 할당 보류 및 재 할당 된 카운터를 갱신합니다. 간단한 dd도 그런 일이 일어날 것입니다.
디스크를 더 잘 분석 할 수 있으면 smartctl -t를 사용하십시오.
나는 또한 diskscan 유틸리티 https://github.com/baruch/diskscan 의 사용을 제안 할 수 있습니다 . 더 오래 읽을 수 있습니다. 이는 개발중인 미디어 문제를 나타내며 이후 버전에서는 디스크가이 문제를 해결하도록 자동으로 시도 할 수도 있습니다.
badblocks
SMART 자체 테스트를하지 않는 방법으로 드라이브를 강조?
badblocks
디스크에서 모든 바이트를 읽고 테스트 패턴으로 바꾼 다음 원래 데이터를 다시 씁니다. SMART 자체 테스트는 유사하게 읽기-쓰기 테스트입니까?
smartctl -t long /dev/sda
, 가끔 한 번 실행해야합니까 , 아니면smartd
다른 것을 설정하지 않고도 "자동으로"임박한 문제를 경고 한다고 가정 할 수 있습니까?