◾️ 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
위 명령을 실행하면 잠깐의 시간이 지난 후 결과가 나타난다.
1GB 분량의 데이터를 전송하는데 걸린 시간으로 0.466814 secs가 걸린 것을 확인할 수 있다.
▪️ 읽기(read) 속도 측정
이번에는 위 예제 쓰기 테스트에서 쓰인 파일(write_test_file)을 읽기 테스트로 측정해보도록 하자.
파일의 내용을 /dev/null로 버리는 형태로 읽기 테스트가 진행된다.
dd if=write_test_file of=/dev/null bs=1024
1GB가 읽어졌고 605966893 bytes/sec의 속도가 측정되었다.