* Incident
배드블록을 점검하는 badblocks 명령어에 대해서 안내한다.
badblocks 명령어는 기본적으로 읽기 테스트만 진행하며 특정 옵션을 사용하여 읽기/쓰기 테스트도 할 수 있다.
* Resolution
- 사용방법
badblocks [-b 블록크기] [-o 출력파일] [-v] [-w] 장치명
- 옵션
[-b 블록크기] : 블록의 크기를 바이트 단위로 나타낸다. (디스크 용량이 클 경우 블록의 크기를 증가해야 한다.)
[-c 블록 수] : 한번에 테스트할 블록의 갯수를 지정한다. (기본값 : 64블록)
[-n] : 안전한 read/write 모드로 점검한다. mount 되어 있는 경우에는 점검하지 않는다. (기본값 : read only 모드)
[-o 출력파일] : 배드블록의 목록을 파일에 저장한다. 이 옵션이 없으면 모니터에 출력한다.
[-v] : 상세한 내용을 출력한다.
[-w] : 쓰기모드를 테스트한다. 이 옵션을 선택하면 장치상의 모든 블록에 read/write 하여 내용을 비교함으로서 배드블록을 찾아낸다. 기존에 데이터가 있을 경우 모두 삭제되므로 주의가 필요한 옵션이다.
n 옵션과 함께 사용 불가능하며, n 옵션은 랜덤패턴을 사용하여 배드블록을 점검하지만
w 옵션은 특정패턴(0xaa, 0x55, 0xff, 0x00)을 사용하여 배드블록을 점검한다.
- 사용 예
[root@mooon]# badblocks -v /dev/xvdb1 /dev/xvdb1 파일시스템을 점검한다. |
[root@mooon]# badblocks -v -o badblocks.txt /dev/xvdb1 배드블럭이 발견 되었을 때 그 결과를 badblocks.txt 에 저장한다. 이경우 모니터에는 출력되지 않는다. |
[root@mooon]# badblocks -n -v /dev/xvdb1 read/write 모드로 배드블록을 점검한다. 자세한 점검을 할 때 추천하는 방법이나 umount 해야한다. 그리고 write 테스트를 하므로 read only 모드보다 점검시간이 오래 걸린다. |
[root@mooon]# badblocks -b 4096 -v /dev/xvdb1 디스크의 용량이 클 경우 "Value too large for defined data type invalid end block" 오류가 발생한다. 이 때 b 옵션을 사용하여 블록의 크기를 증가시키면 해결할 수 있다. |
* Reference
http://askubuntu.com/questions/548945/how-to-check-badsector-on-ext4-6tb