문제

특정 블록을 읽을 때 I/O 읽기 오류를 생성하는 결함이있는 블록 장치에 대해 응용 프로그램을 테스트하는 더 쉬운 방법을 찾고 있습니다. 알려진 나쁜 블록이 알려진 물리적 하드 드라이브를 사용하는 것은 고통이며 소프트웨어 솔루션이 존재하는 경우 소프트웨어 솔루션을 찾고 싶습니다.

나는 그것을 찾았다 Linux 디스크 고장 시뮬레이션 드라이버 특정 범위의 블록을 읽을 때 오류를 생성하도록 구성 할 수있는 인터페이스를 생성 할 수 있지만 2.4 Linux 커널 용이며 2.6으로 업데이트되지 않았습니다.

완벽한 것은 주어진 블록 세트에서 읽을 때 읽기 오류를 반환하도록 구성 할 수있는 Losetup 및 루프 드라이버입니다.

도움이 되었습니까?

해결책

찾고있는 루프백 장치가 아니라 장치 매퍼입니다.

사용 dmsetup "오류"대상으로 뒷받침되는 장치를 작성합니다. 그것은 나타날 것입니다 /dev/mapper/<name>.

7 페이지 장치 매퍼 프레젠테이션 (PDF) 당신이 찾고있는 것을 정확히 가지고 있습니다.

dmsetup create bad_disk << EOF
  0 8       linear /dev/sdb1 0
  8 1       error
  9 204791 linear /dev/sdb1 9
EOF

또는 꺼내십시오 sdb1 "오류"대상의 부품 및 "오류"대상을 블록 0-8의 장치로 넣습니다 (대신 대신 sdb1) 순수한 오류 디스크를 만들기 위해.

또한보십시오 장치 매퍼 "RHEL 5 논리 볼륨 관리자 관리"의 부록.

다른 팁

Linux의 내장 결함 주입 기능이 사용하는 것이 좋습니다.

블로그 : http://blog.wpkg.org/2007/11/08/using-fault-injection/
참조: https://www.kernel.org/doc/documentation/fault-injection/fault-inject.txt

블록 장치와 함께 플레이하는 가장 쉬운 방법은 사용하는 것입니다. NBD.

사용자 지대 소스를 다운로드하십시오 git : //github.com/yoe/nbd.git 그리고 수정 nbd-server.c 실패하기를 원하는 영역을 읽거나 쓰는 데 실패하거나 통제 할 수있는 임의의 패턴 또는 기본적으로 원하는 모든 것을 실패하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top