Linux 환경에서 Dummy File 생성 방법과 성능 비교
회사에서 하는 업무가 업무인지라 주로 리눅스 환경에서 개발/테스트를 하는데, 이 때 테스트 파일을 특정 용량별로 생성해야 하는 경우가 있습니다. 해서 매번 dummy file 생성 방법에 대해서 구글에 검색해서 만들고는 했는데, 오늘 문득 '과연 어떤 명령어가 가장 빠르게 dummy file을 생성할까?' 라는 생각이 들었습니다. 하여 오늘은 리눅스 환경에서 dummy file을 만드는 방법들을 소개하고, 어떤 명령어가 가장 빠르게 파일을 만들어 주는지에 대한 비교 글을 적어볼 생각입니다.
생성 속도와 성능 측정 방법
- 테스트 머신 : 제 개인 개발머신 (가상머신; 1 가상코어, 500M 램)
- time 명렁어를 이용한 속도/성능 측정
- 1024byte, 100K, 100M, 1G 파일을 2개씩 생성 (총 8개)
- 테스트 스크립트 :
- dd : test.sh
- truncate : test_truncate.sh
- falocate : test_fallocate.sh
Linux 환경에서 Dummy File 생성하기 - "dd" 명령어
사실 개인적으로 전 dd를 별로 좋아하지 않습니다. 이유는 그냥 느린 것 같다는 기분이 들어서... 헌데 블로그들을 찾아보면 dd를 가장 많이 사용하시는 것 같습니다. dd 명령어는 테스트용 더미파일을 만드는 것 외에도 iso를 USB에 넣어서 부팅 USB를 만들때도 사용하는 등, 리눅스 환경에서 개발을 하거나 서버를 운용한다면 굉장이 많이 쓰는 명령어입니다.
사용법 : root@dev# dd if=/dev/zero of=파일위치 bs=1 count=0 seek=크기
예시 : root@dev# dd if=/dev/zero of=./1G bs=1 count=0 seek=1G
파일 위치는 그냥 생성할 더미파일의 위치와 파일명을 적어주시면 되고, 크기는 G/M/K 단위도 입력이 가능하며 단위 없이 숫자만 적을 경우 자동으로 byte로 인식합니다.
성능 측정 결과
Linux 환경에서 Dummy File 생성하기 - "fallocate" 명령어
fallocate 명령어는 dd 명령어에 비해서는 굉장히 외우기도 쉽고 사용하기도 간편합니다.
사용법 : root@dev# fallocate -l 크기 파일명
예시 : root@dev# fallocate -l 1G 1G-test.file
dd 명령어와 동일하게 크기는 G/M/K 단위도 입력이 가능하며 단위 없이 숫자만 적을 경우 자동으로 byte로 인식합니다. 파일명은 원하시는 더미파일 경로와 이름을 적어주시면 됩니다.
성능 측정 결과
Linux 환경에서 Dummy File 생성하기 - "truncate" 명령어
마지막으로 제가 자주 사용하는 truncate 명령어입니다.
사용법 : root@dev# truncate -s 크기 파일명
예시 : root@dev# truncate -s 1G 1G-test.file
fallocate 명령어 사용법은 완벽하게 동일합니다.
성능 측정 결과
결론...?
CPU 사용률은 정확하지 않으니 실행 시간으로만 보았을 때, dd와 truncate가 비슷하였고, fallocate 명령어만 유난히 시간이 오래 걸린 것을 확인 할 수 있습니다. 일단 생각보다 dd가 느리지 않다는 것이 제일 충격이네요. 저는 쓰던대로 truncate 쓰면 될 것 같습니다 :)
이 테스트 결과는 측정 환경이 완전 무결하지 않고, 개인 서버에서 임의로 테스트 해 본 결과이므로, 참고만 하시고 진지하게 받아들이시기보다는 가볍게 보시는걸 추천드립니다!
Reference
https://zetawiki.com/wiki/리눅스_대용량_파일_생성
https://stackoverflow.com/questions/257844/quickly-create-a-large-file-on-a-linux-system
'Development' 카테고리의 다른 글
[문제 해결] Mac OS X 업데이트 후 git이 되지 않는 현상 (0) | 2016.11.07 |
---|---|
[문제 해결] 맥에서 '한국정보화진흥원 인터넷 품질측정 프로그램'이 계속 생기는 현상 (1) | 2016.02.08 |