리눅스 blockdev 완벽 가이드: 블록 디바이스 조회부터 튜닝까지

개요

리눅스 시스템에서 스토리지 장치를 효율적으로 다루기 위해 필수적인 blockdev 명령어의 핵심 기능을 살펴봅니다. 블록 디바이스의 섹터 크기 확인, 읽기 전용 모드 전환, Read-ahead 버퍼 튜닝 등 실무에서 즉시 활용 가능한 실습 예제를 단계별로 안내합니다.

실습용 루프백 블록 디바이스 생성 및 기초 정보 확인

실제 디스크 손상 없이 안전하게 실습을 진행할 수 있도록 fallocate -l 100M /tmp/test_disk.img 명령어로 100MB 크기의 가상 디스크 이미지 파일을 생성합니다.

fallocate -l 100M /tmp/test_disk.img

생성한 가상 디스크 이미지 파일을 시스템에서 블록 디바이스처럼 인식할 수 있도록 sudo losetup -fP /tmp/test_disk.img 명령어를 사용해 사용 가능한 루프백 디바이스에 연결합니다.

sudo losetup -fP /tmp/test_disk.img

연결된 루프백 디바이스의 경로를 확인하고 스크립트나 명령어에서 간편하게 참조할 수 있도록 LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1) 명령어로 환경 변수에 디바이스 경로를 저장합니다.

LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1)

blockdev 명령어는 블록 디바이스의 입출력 제어(ioctl) 파라미터를 조회하고 수정할 수 있는 도구입니다.
sudo blockdev --report ${LOOP_DEV} 명령어를 실행하면 읽기 전용 여부(RO), 미리 읽기 섹터 수(RA), 섹터 크기(SSZ), 블록 크기(BSZ), 전체 용량(Size) 등 디바이스의 주요 정보를 한눈에 리포트 형식으로 확인할 수 있습니다.
⚙️ [주요 옵션]

--report : 지정한 블록 디바이스의 주요 파라미터(RO, RA, SSZ, BSZ, StartSec, Size) 목록을 표 형태로 출력합니다.
--getro : 디바이스가 읽기 전용(Read-Only)인지 여부를 조회합니다(읽기 전용이면 1, 읽기/쓰기 가능이면 0 출력).
--setro : 지정한 디바이스를 읽기 전용 모드로 설정합니다.
--setrw : 읽기 전용으로 설정된 디바이스를 다시 읽기/쓰기 가능 모드로 전환합니다.
--getra : 현재 설정된 미리 읽기(Read-Ahead) 섹터 수를 확인합니다.
--setra [섹터수] : 디바이스의 미리 읽기(Read-Ahead) 섹터 수를 변경하여 I/O 성능을 튜닝합니다.
--getss : 디바이스의 논리적 섹터 크기(Logical Sector Size)를 바이트 단위로 출력합니다.
--getbsz : 디바이스의 블록 크기(Block Size)를 바이트 단위로 출력합니다.
--getsize64 : 디바이스의 전체 용량을 바이트(Byte) 단위로 정확하게 출력합니다.
--flushbufs : 버퍼 캐시를 디스크에 강제로 동기화하여 플러시합니다.

sudo blockdev –report ${LOOP_DEV}

디바이스 크기 및 섹터/블록 크기 상세 조회

실습에 사용할 루프백 디바이스 경로를 다시 확인하고 편리하게 제어하기 위해 LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1) 명령어로 환경 변수에 디바이스명을 저장합니다.

LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1)

sudo blockdev --getsize64 ${LOOP_DEV} 명령어를 실행하면 디바이스의 전체 저장 공간 크기를 바이트(Byte) 단위로 정확하게 확인합니다.
출력 결과인 104857600 바이트는 앞서 생성한 가상 디스크의 100MB 용량과 정확히 일치함을 나타냅니다.

sudo blockdev –getsize64 ${LOOP_DEV}

sudo blockdev --getss ${LOOP_DEV} 명령어는 운영체제와 파일 시스템이 데이터를 읽고 쓰는 기본 단위인 논리적 섹터 크기(Logical Sector Size)를 조회합니다.
출력 결과인 512는 논리적 섹터가 표준 크기인 512바이트로 설정되어 있음을 의미합니다.

sudo blockdev –getss ${LOOP_DEV}

sudo blockdev --getpbsz ${LOOP_DEV} 명령어는 스토리지 하드웨어의 실제 물리적 섹터 크기(Physical Sector Size)를 바이트 단위로 확인합니다.
출력 결과 512는 가상 디스크의 물리적 섹터 크기가 512바이트임을 나타내며, 논리적 섹터 크기와 일치하여 추가적인 정렬 오버헤드 없이 동작함을 보여줍니다.

sudo blockdev –getpbsz ${LOOP_DEV}

디스크 읽기 전용(Read-Only) 모드 설정 및 해제

실습에 사용할 루프백 디바이스 경로를 다시 확인하고 환경 변수에 할당하기 위해 LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1) 명령어를 실행합니다.

LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1)

sudo blockdev --setro ${LOOP_DEV} 명령어는 데이터의 무단 수정이나 삭제를 방지하기 위해 지정한 블록 디바이스를 읽기 전용(Read-Only) 모드로 전환합니다.

sudo blockdev –setro ${LOOP_DEV}

sudo blockdev --getro ${LOOP_DEV} 명령어를 실행하여 디바이스의 읽기 전용 상태가 올바르게 적용되었는지 확인합니다.
출력 결과 1은 디바이스가 성공적으로 읽기 전용 모드로 설정되어 있음을 나타냅니다.

sudo blockdev –getro ${LOOP_DEV}

sudo blockdev --setrw ${LOOP_DEV} 명령어를 실행하면 읽기 전용으로 잠겨 있던 디바이스를 정상적인 데이터 쓰기가 가능한 읽기/쓰기(Read-Write) 모드로 복구합니다.

sudo blockdev –setrw ${LOOP_DEV}

sudo blockdev --getro ${LOOP_DEV} 명령어로 디바이스 상태를 다시 조회합니다.
출력 결과 0은 디바이스의 읽기 전용 모드가 해제되어 쓰기 작업이 가능한 상태로 돌아왔음을 의미합니다.

sudo blockdev –getro ${LOOP_DEV}

I/O 성능 향상을 위한 Read-ahead 버퍼 설정 및 정리

실습에 사용할 루프백 디바이스 경로를 다시 확인하고 환경 변수에 할당하기 위해 LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1) 명령어를 실행합니다.

LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1)

sudo blockdev --getra ${LOOP_DEV} 명령어는 현재 디바이스에 설정된 미리 읽기(Read-Ahead) 섹터 수를 확인합니다.
출력 결과 256은 순차 읽기 작업 시 커널이 한 번에 256개 섹터(약 128KB)를 미리 캐시로 읽어 들임을 의미합니다.

sudo blockdev –getra ${LOOP_DEV}

sudo blockdev --setra 1024 ${LOOP_DEV} 명령어를 실행하여 대용량 파일의 순차 읽기 성능을 높이기 위해 미리 읽기 섹터 수를 1024(약 512KB)로 증가시킵니다.

sudo blockdev –setra 1024 ${LOOP_DEV}

sudo blockdev --getra ${LOOP_DEV} 명령어로 변경된 Read-Ahead 설정값을 다시 조회합니다.
출력 결과 1024는 미리 읽기 섹터 수 튜닝이 정상적으로 반영되었음을 나타냅니다.

sudo blockdev –getra ${LOOP_DEV}

실습이 완료된 후 시스템 자원을 정리하기 위해 sudo losetup -d ${LOOP_DEV} && rm -f /tmp/test_disk.img 명령어로 루프백 디바이스 연결을 해제하고 생성했던 가상 디스크 이미지 파일을 안전하게 삭제합니다.

sudo losetup -d ${LOOP_DEV} && rm -f /tmp/test_disk.img

지금까지 리눅스 blockdev 명령어를 활용해 블록 디바이스 정보 조회부터 성능 튜닝까지 간단하게 살펴보았습니다.
스토리지 작업은 시스템에 직접적인 영향을 주는 만큼, 충분한 테스트를 거쳐 안전하고 효율적으로 관리해 보시기 바랍니다.