badblocks
최근에 4TB 하드 드라이브를 구입했는데 사용하기 전에 읽기 및 쓰기 테스트를 하고 싶었습니다. 옵션 badblocks
으로 4TB를 실행하는 데 시간이 오래 걸리기 때문에 먼저 디스크에 패턴을 작성한 다음 옵션을 사용하여 패턴을 읽어서 며칠이 아닌 몇 시간 만에 완료하고 -w
싶습니다 .-t
badblocks
-t
문제는 이 옵션이 어떻게 작동하는지 이해할 수 없고 badblocks
with 옵션을 사용하는 예제를 온라인으로 검색해도 결과가 없다는 것입니다. 매뉴얼 페이지에서 테스트 모드는 0과 ULONG_MAX-1 사이의 숫자 값입니다(ULONG_MAX는 그럴 것으로 추측됩니다). 하지만 모드를 제공하는 방법(십진수, 16진수, 이진수, ASCII 문자열 길이)을 잘 모르겠습니다. < ?) . 패턴 크기는 블록 크기와 관련이 있습니까?badblocks
-t
2^32
2^(32/8)
문제의 또 다른 부분은 패턴으로 하드 드라이브를 채우는 스크립트를 작성하는 것입니다. 이를 위해 Ruby 스크립트를 작성할 수도 있지만 한 줄의 bash 명령을 파이핑하는 것이 pv
훨씬 더 좋습니다!
답변1
badblocks
패턴을 먼저 작성하는 것은 다른 방식으로 작성하는 것보다 느려서는 안 됩니다. 특히 작은 읽기/쓰기 작업을 수행하지 않도록 -b block-size
및 옵션을 사용하는 경우에는 더욱 그렇습니다 .-c blocks-at-once
이 예에서는 1MiB 블록의 "임의" 패턴으로 디스크를 덮어씁니다.
badblocks -v -w -t random -b 4096 -c 256 /dev/thedisk
속도에 문제가 있다면 다른 이유가 있을텐데...
답변2
하나의 도구를 사용하여 패턴을 작성하고 이를 사용하여 읽는 것이 badblocks
단일 패턴을 사용하여 불량 블록을 실행하는 것보다 훨씬 빠르지는 않을 것 같습니다.
모드는 16진수로 지정되어야 합니다. 적어도 제가 이해하는 방식은 다음과 같습니다.
badblocks -t 0x55 -w [...]
원천:https://github.com/autotest/ctcs/blob/master/runin/ Destructiveblocktstrnd
답변3
-t
그래서 더 많은 연구 끝에 불량 블록 옵션을 활용하는 방법을 알아냈습니다 .프로스트슈츠의 답변(나는 이 질문을 할 때 이 옵션을 알아채지 못했습니다 -c
).
42
전체 하드 드라이브 에 씁니다 .
yes 4 | tr '\n' 2 | pv -pterb -s 4000G > /dev/sdx
확인 통과badblocks
badblocks -vs -t 0x3432 /dev/sdx