[Linux] dd 명령어로 I/O 성능 테스트하기

◾️ dd

dd는 리눅스의 파일시스템에서 block 단위의 파일을 복사하거나 변환할 수 있는 강력한 기능을 가진 명령어이다.

dd는 ’data duplication’의 약어이기도 하고, 매우 강력한 명령어이기 때문에 디스크 파괴자(disk destroyer)라고도 불린다.

dd 커맨드는 서버의 디스크 I/O 속도를 측정할 때, 디스크가 가진 읽기/쓰기 성능을 측정할 때 자주 사용된다.


▪️ I/O 성능 측정

▪️ 쓰기(write) 속도 측정

dd if=/dev/zero of=write_test_file bs=1M count=1024 oflag=direct

위의 명령어에서 쓰인 옵션을 살펴보도록 하자.

  • if : 입력 파일, /dev/zero의 경우 리눅스 특수파일로 지정되어 있으며 파일 내용을 0x00로 채워줌.
  • of : 출력 파일, /dev/null의 경우 리눅스 특수파일로 지정되어 있으며 파일로 존재하고 있지만 실제로는 아무것도 없는, 주로 리다이렉션으로 어떤 출력 값을 버릴 때 자주 사용됨. 위 예제에서는 출력을 ‘write_test_file’ 라는 파일명으로 지정하였음.
  • bs : 한 번에 읽고 쓸 파일 크기. 위 예제에서는 1MB로 지정됨.
  • count : 입출력을 반복할 횟수. 위 예제에서는 1024번을 반복(1GB를 쓸 때까지)
  • oflag : cache를 사용하지 않고 직접 Read/Write

위 명령을 실행하면 잠깐의 시간이 지난 후 결과가 나타난다.
image
1GB 분량의 데이터를 전송하는데 걸린 시간으로 0.466814 secs가 걸린 것을 확인할 수 있다.


▪️ 읽기(read) 속도 측정

이번에는 위 예제 쓰기 테스트에서 쓰인 파일(write_test_file)을 읽기 테스트로 측정해보도록 하자.
파일의 내용을 /dev/null로 버리는 형태로 읽기 테스트가 진행된다.

dd if=write_test_file of=/dev/null bs=1024

image
1GB가 읽어졌고 605966893 bytes/sec의 속도가 측정되었다.

관련 글

지식 공유3분 읽기

[Linux] Ubuntu 24.04 -> Rocky 10 마이그레이션

개요 기존 홈서버에서 운영 중인 Ubuntu 24.04 서버의 모든 서비스( Docker , Gatsby , 데이터 등등)를 새로운 Rocky 서버로 누락 없이 이관하기 위한 과정을 기록해보려고 합니다. 사전 준비 작업 전에, 양쪽...

리눅스
지식 공유3분 읽기

[Linux] 테스트 서버 디스크 장애 이슈

개요 OS : Rocky 8.10 디스크 구성 /dev/sda : 메인 디스크 /dev/sdb : 백업 디스크 상황 평소에 서버 로그에 READ sda .... , swap 관련 메시지가 간간히 보였음. 어느 날 I/O 관련 로그가...

리눅스