최신 디스크에서 "배드 블록"사용


21

불량 블록을 사용하여 HDD를 확인하고 작동에 대한 설명을 부탁드립니다.

누군가와 함께 사용할 수있는 가장 좋은 옵션 설명해 주시겠습니까 -b-c? 매뉴얼 페이지에서 정의를 포함했지만 더 큰 크기가 64MB RAM 및 4k 섹터가있는 최신 디스크에 도움이되는지 확실하지 않습니다.

-b block-size       Specify the size of blocks in bytes. The default is 1024. 
-c number of blocks the number of blocks which are tested at a time. The default is 64

둘째, 쓰기 모드 테스트가 비파괴 읽기 / 쓰기 모드보다 더 철저한 지 알고 싶습니다.

마지막으로 얼마나 많은 SMART 섹터 재 할당이 허용되고 / 재 할당 횟수가 0이 아닌 드라이브를 즉시 교체해야합니까?


3
두 번째 부분 : 불량 블록을보기 시작하면 문제가 발생했음을 의미합니다. 디스크를 전혀 읽기 전에 디스크를 교체해야한다는 신호일 것입니다. 그러나 모든 경우에 장애가 발생하기 전에 작업 사본 외에 항상 2 개의 중요한 데이터 백업 (로컬 1 개, 원격 1 개)이 있어야합니다. 내 답변에 대한 자세한 내용은 여기를 참조하십시오 : superuser.com/a/528181/174998
Olivier Dulac

4
블록 크기 : 사용 된 파일 시스템에 따라 OS가 해당 하드 드라이브에 데이터를 저장하는 데 사용한 실제 블록 크기를 반영해야합니다. 속도를 높이는 것이 아니라 블록을 "나쁜"것으로 표시하고, 해당 블록은 실제로 1 블록이며 1/2 또는 1/4 또는 2 (또는 그 이상) 블록이 아닙니다.
Olivier Dulac

답변:


21

질문 1:

-b옵션 과 관련하여 : 이것은 디스크에 따라 다릅니다. 최신 대형 디스크에는 4KB 블록이 있으며이 경우 설정해야합니다 -b 4096. 운영 체제에서 블록 크기 얻을 수 있으며 일반적으로 레이블에서 디스크 정보를 읽거나 디스크의 모델 번호를 검색하여 얻을 수 있습니다. 경우 -b귀하의 블록 크기보다 큰 값으로 설정되어,의 무결성 badblocks(당신이 거짓 네거티브를 얻을 수 있습니다 즉 : 그들은 여전히 존재하는 경우에는 불량 블록이 발견되지 않음) 결과가 손상 될 수 있습니다. 경우 -b드라이브의 블록 크기보다 작은 값으로 설정되면, 속도 badblocks실행이 손상 될 수 있습니다. 잘 모르겠지만 설정에 다른 문제가있을 수 있습니다-b전체 블록의 무결성을 확인하지 않기 때문에 블록 크기보다 작은 값으로 설정하면 너무 작게 설정하면 여전히 부정적 결과를 얻을 수 있습니다.

-c옵션은 한 번에 확인해야하는 블록 수에 해당합니다. 기본적으로 일괄 읽기 / 쓰기 이 옵션은 결과의 무결성에 영향을 미치지 않지만 badblocks실행 속도에 영향을줍니다 . badblocks에 의해 지정된대로 모든 N 블록에 대해 (선택적으로) 쓰기, 읽기, 버퍼링, 검사, 반복 -c합니다 경우 -c너무 낮게 설정되어,이는 것 badblocks실행이 대기하고 오버 헤드를 별도의 IO 요청 초래을 처리하는 등, 더 이상 일반보다 더 가지고 가고, 디스크도 요청 당 추가 오버 헤드를 부과 할 수 있습니다. -c너무 높게 설정 하면 badblocks메모리가 부족할 수 있습니다. 이 경우 badblocks시작 후 상당히 빨리 실패합니다. 여기에 추가 고려 사항에는 병렬 badblocks실행이 포함 됩니다.badblocks동일한 디스크의 여러 파티션 (나쁜 생각) 또는 동일한 IO 채널의 여러 디스크에 대해 병렬 실행이 IO 대역폭과 싸우지 않도록 -c사용 가능한 메모리를 감안할 때 상당히 높은 것으로 조정하고 싶을 것입니다 badblocks제정신으로 병렬화 할 수 있습니다.

질문 2 :

다른 답변이 나타내는 것과는 달리, 쓰기 모드 테스트는 어느 정도 신뢰할 수있는 비파괴 읽기 - 쓰기 시험보다이지만, 모든 데이터에 파괴되는 비용으로, 두 배 빠른 속도입니다. 이유를 설명하겠습니다.-w

비파괴 모드 badblocks에서 다음을 수행합니다.

  1. 기존 데이터를 읽고 체크섬 (필요한 경우 다시 읽음)하여 메모리에 저장하십시오.
  2. 미리 결정된 패턴 ( -p일반적으로 필요하지는 않지만 옵션으로 재정의 가능 )을 블록에 씁니다 .
  3. 읽은 데이터가 패턴과 동일한 지 확인하면서 블록을 다시 읽습니다.
  4. 원본 데이터를 디스크에 다시 씁니다.
    • 나는 이것에 대해 확신 할 수 없지만 아마도 원래 데이터가 성공적으로 쓰여졌으며 여전히 동일한 것에 체크섬이 있는지 다시 읽고 확인합니다.

파괴 ( -w) 모드에서는 badblocks위의 2 단계와 3 단계 만 수행합니다. 즉, 데이터 무결성을 확인하는 데 필요한 읽기 / 쓰기 작업 수가 절반으로 줄어 듭니다. 블록이 불량하면 데이터가 어느 모드에서나 잘못됩니다. 물론, 드라이브에 저장된 데이터에 관심이 있다면, -w모든 데이터를 없애고 badblocks대신 '패턴을 디스크에 기록하는 것처럼 비파괴 모드를 사용해야합니다 .

경고 : 블록이되면 가는 나쁜 있지만, 아직 완전히 사라되지 않으며, 일부 읽기 / 쓰기 검증 쌍 일 수 있으며, 일부는하지 않을 수 있습니다. 이 경우 비파괴 모드는 두 세트의 읽기 / 쓰기 확인을 수행하므로 블록의 "무시"를보다 안정적으로 표시 할 수 있습니다 (4 단계의 글 머리 기호 참조). 비파괴 모드가 이런 방식으로 더 안정적 이더라도 우연의 일치 만으로 더 안정적 입니다. 완전히 나쁘지는 않지만 여러 읽기 / 쓰기 작업을 유지할 수없는 블록을 확인하는 올바른 방법 badblocks-p옵션을 사용하여 동일한 데이터에 대해 여러 번 실행 하는 것입니다.

질문 3 :

SMART가 섹터를 재 할당하는 경우 드라이브를 최대한 빨리 교체하는 것이 좋습니다. 몇 개의 섹터를 잃어버린 드라이브가 항상 잃어버린 것은 아니지만 원인은 일반적으로 자주 사용되는 드라이브가 자기 적으로 흐릿 해 지거나 헤드 / 모터가 고장 나서 읽기 / 쓰기가 부정확하거나 실패하는 것입니다. 드라이브의 데이터 가치와 실행중인 시스템에서 필요한 안정성에 따라 최종 결정은 사용자에게 달려 있습니다. 파일 서버에서 수년간 SMART 경고와 함께 회전하는 알려진 불량 블록이있는 일부 드라이브가 있지만 많은 고통없이 전체 장애를 처리 할 수 ​​있도록 일정대로 백업됩니다.


4
어떤 아이디어가 -b기본값이 1024됩니까? 나에게는 좀 이상해 보인다. 왜 안돼 512?
Ryan J

6
@RyanJ 1024는의 최소 블록 크기입니다 ext2. badblocks는 e2fsprogs의 일부이며 원래 ext2 파일 시스템의 불량 블록 목록을 채우기 위해 사용되었습니다. mkfs.ext2에 올바른 형식으로 숫자를 얻으려면 FS와 동일한 블록 크기로 실행해야합니다. TL; DR : 걱정하지 않아도되는 역사적 이유.
sourcejedi

BUUUTT, @Zac B는 "-b가 블록 크기보다 큰 값으로 설정되면 불량 블록 결과의 무결성이 손상 될 수 있습니다"1024> 512라고 말했습니다. 그러나 "-b가 블록 크기보다 큰 것으로 설정되어 있고 여러 개가 아닌 경우 불량 블록 결과의 무결성이 손상 될 수 있습니다." 나보다 똑똑한 독창적 인 포스터는 무엇이라고 말합니까?
Billy C.

4

1) 최신 디스크가 512b 이외의 섹터 크기를 사용하는 경우 -b옵션 (예 :)으로 해당 크기를 설정해야합니다 -b 4096. 이 옵션을 사용하지 않으면 각 실제 섹터가 여러 번 (4k 섹터의 경우 8 배) 시도되므로 검사 속도가 훨씬 느려집니다. 또한 질문에 대한 언급에서 Olivier Dulac이 언급했듯이-block is indeed 1 block, and not 1/2 or 1/4th or even 2 (or more) blocks.

옵션 -c은 한 번에 몇 개의 섹터를 시도했는지 나타냅니다. 성능에 영향을 줄 수 있으며 해당 성능의 가치는 특정 디스크 모델에 따라 달라질 수 있습니다.

2) write-mode test-내 이해로는 하드 오류 또는 소프트 오류가 있는지 확인합니다 (일명 Silent Data Degradation, 비트 썩음, 저장 매체의 붕괴, UNC 섹터)

3) 현재 SMART 보고서를 신뢰하지 않습니다. 시간이 지남에 따라 값이 어떻게 변하는지가 더 중요합니다. 또한 여기 에 큰 디스크 드라이브 인구에 대한 Google Failure Trends의 조사 가 있으며 이에 대한 몇 가지 논의 가 있습니다. 다음은 연구에서 인용 한 것입니다.

이러한 높은 상관 관계에도 불구하고 SMART 매개 변수 만 기반으로하는 모델은 개별 드라이브 고장을 예측하는 데 유용하지 않을 것으로 판단됩니다.

디스크 교체에 대한 다른 사람들의 언급과 관련하여-하드 디스크 문제는 아니지만 자동 데이터 저하 (비트 썩음, 저장소 미디어의 붕괴, UNC 섹터)가 있습니다. 이 경우 디스크를 교체하는 것은 의미가 없지만 대신 동일한 데이터를 디스크에 다시 읽고 쓰는 것이 유용합니다. 당신은 볼 수 있었다 여기 가 해결 될 수있는 방법에 대해 설명합니다.

하드 오류가 발생하면 불량 영역이 파티션에서 벗어나는 방식으로 드라이브를 다시 파티션 할 수 있습니다. 나에게 그 접근 방식은 유용했고 그러한 나쁜 드라이브는 아무런 문제없이 오랫동안 사용되었습니다.


첫 번째 문장이 잘못 -b되었습니다. 기본값은 1024입니다. 디스크가 1024 이외의 섹터 크기를 사용하는 경우 ext2 파일 시스템 외부에서 일반적으로 사용되는 경우이를 지정해야합니다.
Hashim

1

특별한 이유가없는 한 -b와 -c를 기본값으로 두겠습니다. 디스크 크기가 4k 인 경우 -b를 4096으로 설정할 수 있습니다.

먼저 비파괴 rw 테스트로 불량 블록을 실행하는 것이 좋습니다. 불량 섹터가 발견되면 디스크가 고장 나서 교체해야합니다. 비파괴에서 불량 블록을 찾지 못했지만 여전히 불량 블록이 의심되는 경우 파괴 rw 테스트를 실행하십시오.

마지막으로 얼마나 많은 SMART 섹터 재 할당이 허용되고 / 재 할당 횟수가 0이 아닌 드라이브를 즉시 교체해야합니까?

섹터를 교체하자마자 드라이브를 교체하겠습니다.


2
섹터를 교체하자마자 드라이브를 교체하겠습니다. 정상적인 작동에서 블록이 나빠진다는 것을 어떻게 알 수 있습니까? 어떤 방법으로 신호를 얻습니까?
Alexis Wilke

5
SMART 로그를 모니터링해야합니다.
Ярослав Рахматуллин

1
변경해야 할 특별한 이유가없는 한 . 기본 1024와 다른 블록 크기를 갖는 것과 같이, 이것은 매우 일반적인 것입니까?
Carcamano

1

이러한 종류의 불량 블록 읽기 모드 (비파괴)와 쓰기 모드 (파괴)의 차이점이 있습니다.

드라이브는 쓰기가 실패 할 때 불량 섹터 만 재 할당합니다. 파일에 대한 읽기 오류는 파일을 다시 쓰려고 할 때 "수정"됩니다. 그렇지 않으면. 불량 블록은 파일을 복구 할 수 있다고 가정 할 때 파일의 일부로 남아 있습니다. 쓰기 모드에서 불량 블록을 실행하고 파티션을 다시 작성해야만 파티션 테이블의 읽기 오류를 "수정"할 수 있습니다.

따라서 읽기 모드는 불량 블록이 어디에 있는지 알려주지 만 아무것도 할 수는 없습니다. 쓰기 모드는 각 섹터의 상태를 테스트하여 디스크가 불량 블록을 다시 할당하지만 데이터가 손상 될 수 있습니다. 선택해라.


0

재 매핑 된 섹터에 대한 두 번째 질문에 답변하려면 해당 섹션이 다릅니다. 나는 때때로 이런 종류의 물건을 모니터하는 가정 사용자의 맥락에서 말하고 있습니다.

  • 드라이브에 저장된 데이터는 얼마나 중요합니까?
  • 드라이브가 갑자기 배가 올라가면 어떻게됩니까?
  • 데이터가 다른 곳에 백업되어 있습니까?
  • 드라이브 손실이 최소한의 영향을 미치는 드라이브가 RAID의 구성원입니까?
  • 재 매핑 된 섹터의 수가 증가하고 있습니까?

내가 직면 한 두 가지 상황이 있습니다. 6 200GB 드라이브의 RAID5가있었습니다. 정전으로 인해 깜박 거리는 표시등이 발생한 후 한 드라이브는 14 개의 리맵 된 섹터를 표시하고 여러 오류를 기록했습니다. 드라이브를보고 더 이상 오류가 기록되지 않았으며 다시 매핑 된 섹터 수가 안정적으로 유지되었습니다. 드라이브가 일시적으로 전력이 공급되어 고장이 나지 않았다고 결론지었습니다. 나는 수년간 그것을 계속 사용했다. 원래 RAID5는 폐기되었지만 몇 시간 동안 약 10 년 동안 전원이 공급되는 두 개의 드라이브가 있습니다. 그것들은 소수의 리 맵핑 된 섹터를 가지고 있습니다. 이중 백업을 사용하여 기본 백업의 증분 백업 덤프를 저장합니다. 이렇게하면 주 백업에서 (주로) 읽기 작업을보고 쓰기가 다른 장치로 진행됩니다. 이 고대 드라이브 중 하나에 오류가 발생하면 다른 드라이브는 계속 진행해야합니다. 둘 다 실패하면 다른 것으로 바꾸고 백업 스크립트를 다시 실행하십시오. 이 드라이브 중 하나에 오류가 발생해도 영향이 거의 없어서 다시 매핑 된 섹터에 대해 걱정하지 않아도됩니다.

나는 2TB HDD를 가지고 있는데, 이는 한 쌍의 미러 드라이브 중 하나이며 재 매핑 된 섹터를 늘리기 시작했습니다. 처음에는 수십, 수백, 수천이었습니다. 이것은 몇 년이 넘었습니다. 한 쌍의 다른 드라이브는 건강을 유지했으며 실제로 천천히 실패하는 파생 상품이 어레이에서 떨어지지 않았습니다. 결국 나는 두 개의 드라이브를 6TB 드라이브로 교체했으며 점점 더 많은 재 매핑 된 섹터 수가 문제가되지 않았습니다. 나는 여전히 드라이브를 가지고 있으며 약 4500 개의 리 맵핑 된 섹터에서도 여전히 "작동"합니다. 테스트 시스템 (RAID 멤버)에 이와 같은 드라이브를 넣어 실제로 죽을 때 어떤 일이 발생하는지 확인했습니다. 나는 이것과 함께 일할 기회가 두 번 있었고 모든 상황에서 교체가 드라마없이 진행되었습니다.

기본 백업 파일 서버에서 드라이브 장애가 발생했습니다. 고급 경고가 발생하지 않았으며 SATA 명령에 대한 응답이 중단되었습니다. ZFS RAIDZ2의 멤버였으며 드라마없이 교체했습니다. 실제로 테스트 서버에서 전원을 껐다 켜거나 서버를 재부팅하지 않고 고장난 드라이브를 교체했습니다.

다시 한 번 주목할 점은 모든 중요한 데이터의 온 사이트 및 오프 사이트 백업입니다. 하나의 시스템이 손실되면 다른 곳에 두 개의 데이터 사본이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.