badblocks는 시작/끝 값으로 32비트 정수만 사용합니다.

badblocks는 시작/끝 값으로 32비트 정수만 사용합니다.

블록 크기가 4096바이트인 4TB 드라이브가 있습니다. 불량 섹터에 대해 블록 700,000,000 주변의 매우 구체적인 블록 세트를 확인하고 싶습니다.

하지만 중지 및 시작 블록 수만 지원되는 badblocks것 같습니다 int32. 즉, 이 블록 범위를 지정하는 것은 불가능합니다.

이 드라이브에서 불량 블록을 검색하는 다른 방법이 있습니까? 전체 드라이브를 테스트하기 위해 7시간을 기다리고 싶지 않습니다. 이는 어레이의 단일 드라이브이므로 mdadm사용 가능한 파일 시스템을 포함하지 않습니다.

답변1

더 큰 블록 크기를 사용 하도록 지시 badblocks하면 2TB 이상에서 작동합니다. 저는 이것을 WD 6TB 드라이브에 사용했습니다.

badblocks -b 4096 -v /dev/sda

답변2

불량 블록을 2^32로 제한하는 패치

이러한 특정 제한 사항을 추가하기 위해 불량 블록에 대한 패치가 있는 것 같습니다. 여기를 참조하세요.답변: [패치 04/25] libext2fs: 64비트 불량 블록 번호 거부.

From: "Darrick J. Wong" <darrick.wong <at> oracle.com>
Date: Wed, 23 Oct 2013 19:43:32 -0400
Subject: [PATCH] libext2fs: reject 64bit badblocks numbers

Don't accept block numbers larger than 2^32 for the badblocks list,
and don't run badblocks on them either.

Signed-off-by: Darrick J. Wong <darrick.wong <at> oracle.com>
Signed-off-by: Theodore Ts'o <tytso <at> mit.edu>

불량 블록에 대한 지원은 추가되지 않나요?

badblocks가까운 미래에도 이 기능을 사용할 수 없을 것 같습니다 .

발췌-답변: [패치 18/31] libext2fs: 불량 블록은 48비트 블록 번호를 올바르게 처리해야 합니다.

예, 현재로서는 불량 블록이 남아 있다고 생각하며 대규모 디스크 어레이의 경우 블록 교체는 LVM, 스토리지 어레이 또는 HDD 수준에서 거의 확실하게 수행됩니다. 따라서 64비트 블록 번호를 mke2fs에 전달하려고 하면 mke2fs에서 오류가 발생하도록 하는 것이 좋습니다.

                      - Ted

다른 방법이 있나요?

나는 그 파생물이나 대안을 헛되이 찾았 badblocks지만 아무것도 찾지 못했습니다. 유일한 옵션은 다음과 같은 상용 도구를 사용하는 것입니다.스핀레트또는 오픈 소스 도구HDAT2. HDD 제조업체에서 제공하는 다양한 DFT(Drive Fitness Tools) 중 하나를 사용할 수도 있습니다. 아마도 이들 중 하나를 사용하면 2^32 장벽을 깨뜨릴 수 있을 것입니다.

무엇을 해야 할까요?

표에 있는 옵션 중에서 HDAT2 및 SpinRite를 사용하여 큰 성공을 거두었으므로 아마도 700M 범위의 블록 영역을 스캔하기 위해 사용할 것입니다.

관련 정보