우분투 badblocks 완벽 가이드: 디스크 불량 섹터 검사 옵션 총정리

개요

디스크 장애를 사전에 방지하고 데이터 손실을 막기 위해 badblocks 명령어로 불량 섹터(배드섹터)를 점검하는 방법을 살펴봅니다. 안전한 가상 실습 환경 구성부터 읽기 전용, 진행률 표시, 결과 파일 저장 및 비파괴 쓰기 모드까지 핵심 옵션을 단계별로 실습합니다.

1. 실습 환경 준비 및 기본 읽기 전용 검사 (-v)

badblocks 도구가 포함된 e2fsprogs 패키지를 최신 상태로 설치하거나 점검하기 위해 sudo apt-get update -qq && sudo apt-get install -y e2fsprogs 명령어를 실행합니다.

sudo apt-get update -qq && sudo apt-get install -y e2fsprogs

실제 하드 디스크 대신 안전하게 불량 섹터 검사를 실습할 50MB 크기의 가상 디스크 이미지를 생성하기 위해 dd if=/dev/zero of=/tmp/disk_test.img bs=1M count=50 status=none 명령어를 실행합니다.

dd if=/dev/zero of=/tmp/disk_test.img bs=1M count=50 status=none

생성한 가상 디스크 이미지 파일을 블록 디바이스처럼 인식시키기 위해 사용 가능한 루프 디바이스에 연결하는 sudo losetup -f /tmp/disk_test.img 명령어를 실행합니다.

sudo losetup -f /tmp/disk_test.img

연결된 루프 디바이스 경로를 환경 변수에 저장하고 정상적으로 할당되었는지 확인하기 위해 LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && echo "테스트 디바이스: $LOOP_DEV" 명령어를 실행합니다.

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && echo “테스트 디바이스: $LOOP_DEV”

badblocks 명령어는 저장 장치의 블록을 스캔하여 손상된 불량 섹터(배드 섹터)의 유무를 점검합니다.
데이터 손실 위험이 없는 기본 읽기 전용 모드에 진행 상황을 상세히 출력하는 -v 옵션을 추가하여 검사를 수행합니다.
검사 완료 후 출력되는 불량 블록 번호가 없다면 디스크 상태가 정상임을 의미합니다.
⚙️ [주요 옵션]

-v : 검사 진행률 및 결과를 상세한 메시지로 화면에 출력합니다.
-w : 디스크에 특정 패턴 데이터를 직접 쓰고 다시 읽어 검사하는 파괴적 쓰기 모드를 실행합니다(기존 데이터 삭제).
-n : 기존 데이터를 임시로 보존하면서 읽기/쓰기 테스트를 수행하는 비파괴 읽기-쓰기 모드를 실행합니다.
-s : 검사 진행 상황을 완료된 블록 수와 백분율(%) 형태로 실시간 표시합니다.
-b : 검사할 블록의 크기를 바이트 단위로 지정합니다(기본값은 1024바이트).
-o : 발견된 불량 블록 번호 목록을 화면 대신 지정한 텍스트 파일로 저장합니다.
-p : 지정한 횟수만큼 검사 과정을 반복 수행하여 간헐적인 오류까지 정밀하게 탐지합니다.

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -v $LOOP_DEV

2. 검사 진행률 표시 옵션 활용 (-s, -v)

가상 디스크 디바이스 경로를 확인하고 실시간 진행률을 확인하기 위해 -s 및 -v 옵션을 적용한 sudo badblocks -s -v $LOOP_DEV 명령어를 실행합니다.
-s 옵션은 검사 완료율(%)과 처리된 블록 수를 실시간으로 보여주며, -v 옵션은 상세한 검사 과정과 최종 결과를 화면에 출력합니다.
대용량 저장 장치를 검사할 때 작업 진행 상태를 직관적으로 파악할 수 있으며, 불량 블록 번호 없이 검사가 완료되면 디스크가 정상 상태임을 나타냅니다.

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -s -v $LOOP_DEV

3. 블록 크기 지정 및 검사 결과 파일 저장 (-b, -o)

가상 디스크 디바이스 경로를 가져와 현대 파일 시스템의 기본 단위인 4096바이트 크기로 검사하고, 결과를 텍스트 파일로 저장하기 위해 LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -b 4096 -v -o /tmp/badblocks_report.txt $LOOP_DEV 명령어를 실행합니다.
-b 4096 옵션을 지정하면 기본 블록 크기(1024바이트) 대신 파일 시스템에 맞춘 블록 단위로 정밀하게 스캔할 수 있습니다.
-o 옵션은 검사 중 발견된 불량 섹터 목록을 지정한 파일에 기록하여 추후 복구나 마킹 작업에 활용할 수 있도록 지원합니다.

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -b 4096 -v -o /tmp/badblocks_report.txt $LOOP_DEV

검사 결과가 저장된 리포트 파일의 내용을 확인하기 위해 cat /tmp/badblocks_report.txt 명령어를 실행합니다.
불량 섹터가 존재하지 않는 정상 디스크의 경우 파일 내에 기록된 블록 번호가 없어 빈 파일 형태로 표시됩니다.

cat /tmp/badblocks_report.txt

4. 비파괴 읽기/쓰기 모드 검사 및 실습 정리 (-n)

기존 데이터를 안전하게 유지하면서 읽기와 쓰기 테스트를 병행 검사하기 위해 -n 및 -v 옵션을 적용한 LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -n -v $LOOP_DEV 명령어를 실행합니다.
-n 옵션은 원본 데이터를 백업한 뒤 테스트 패턴을 기록하고 다시 원래 데이터로 복원하므로 데이터 손실 없이 정밀한 읽기/쓰기 검사가 가능합니다.
검사 과정이 상세하게 출력되며 손상된 블록 번호가 나타나지 않으면 디스크 상태가 정상임을 확인할 수 있습니다.

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -n -v $LOOP_DEV

실습에 사용했던 루프 디바이스 연결을 해제하고 임시 가상 디스크 이미지와 결과 파일을 삭제하기 위해 LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo losetup -d $LOOP_DEV && rm -f /tmp/disk_test.img /tmp/badblocks_report.txt 명령어를 실행합니다.

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo losetup -d $LOOP_DEV && rm -f /tmp/disk_test.img /tmp/badblocks_report.txt

지금까지 우분투에서 badblocks 명령어를 사용해 디스크 불량 섹터를 검사하는 핵심 옵션들을 자세히 살펴보았습니다.
소중한 데이터를 보호하기 위해 정기적으로 디스크 상태를 점검하고 드라이브 고장을 사전에 예방해 보시기 바랍니다.