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


※ 주의 ※

이 글은 작성자가 저장을 하지 않은 상태로 날린 후에 재작성한 글이라 작성자의 멘붕이 부분적으로 반영되어있을 수 있습니다.


Hello Node.js!


왜 이놈은 Django는 첫포스팅 후 아무것도 안써놓고, 다른 언어 포스팅을 시작하지? 라고 생각 하실수도 있는데, 어쩌다 보니 그렇게 되었네요 허허허 회사 팀에서 스터디를 하는 바람에... 아무튼! 이번에는 일전에 포스팅 하였던 Django와는 약간 다른, Node.js에 대해서 공부를 시작하게 되어서 이렇게 새로운 포스팅을 하기로 되었습니다. 아쉽게도 Django는 조금 미뤄둘 것 같네요 ㅠㅠ 그래도 Node.js와 Django는 올해안에 끝내는 것이 오늘의 목표입니다 :)


그럼 Django를 뒤로 미루고버리고 Node.js를 택한 이유는 무엇인고 하니, 위에 살짝 언급한대로 회사 팀 내에서 스터디를 진행하게 되었습니다. 여기에 추가로 개인적으로 "시각적"으로 보여 줄 수 있는 산출물을 만들 수 있는 언어를 배워보고 싶었던 욕망이 조금 있었습니다. 회사에서 다루는 언어는 C, Python, Shell Script 이렇게 3개 언어가 다고, 시각적으로는 로그 이외에는 볼 수 없는 CLI 환경에서 개발하다 보니, 시각적 산출물에 대한 니드가 개인적으로 생겼습니다. 해커톤이나 경진대회, 공모전 등에도 어플이나 웹을 짤 수 없으면 거의 참가가 힘들 것 같더라고요. 그래서 조금씩 회사에서 쓰는 커널레벨이 아닌 유저레벨 단에서의 무언가도 좀 해보려고 이번에 Node.js를 배워보게 되었습니다.


Node,js를 배우기 위한 주 교제는 책으로 진행을 할 예정이고, 조금씩 추가자료가 필요하면 인터넷으로 검색 할 예정입니다. 책은 팀 스터디에서 아래의 책을 선정하여 챕터별로 개인 조사 후 발표를 스터디 운영방법으로 정해서, 제 개인 공부도 저 책을 주로 공부 할 예정입니다.


< Node.js 프로그래밍 :: 모던 웹을 위한, Node.js LTS 버전으로 배우는 웹 애플리케이션 서버 프로그래밍 >

Link : http://book.naver.com/bookdb/book_detail.nhn?bid=10756354



About Node.js!


Node.js는 도대체 뭣하는 녀석일까요? 사실 저도 잘 몰라요. 왜냐고요? 저도 Node.js책을 연지 아직 한시간이 안되었기 때문이죠... 사실 책을 펴기 전까지는 그냥 자바스크립트를 쓰는 것..? 웹사이트 만들 수 있는 것? 이런 언어의 한 종류로만 알고 있었습니다. 이걸로 무엇을 만들 수 있는지, 혹은 어떤 문법을 쓰는지, 내부동작은 어떻게 되는지 모두 몰랐던 상태였습니다. 책을 보니까, 특별히 강조 할 만한 내용은 "Node.js는 "스레드를 사용한 동기방식이 아닌, 이벤트를 사용하는 비동기 방식" 이라는 것을 알고가면 좋을 것 같네요. 그 외에는 아무 Node.js 책 1장을 보시면 나와있을 것이라고 생각됩니다 :)



Node.js로 개발하기!


Node.js 개발환경도 저는 [Django] Django 배워보기 #1에서 했던 방법과 비슷하게 진행 할 예정입니다. AWS에 있는 개인 개발환경에서 개발을 하고, AWS에 있는 배포환경에 배포를 할 예정입니다. 배포환경은 앞으로 http://node-test.dry8r3ad.com 에 할 것 같습니다, 개발/배포를 위한 AWS 환경 세팅을 자세하진 않지만 간략하게 보고싶으신 분들은 [Django] Django 배워보기 #1 포스트를 확인해주세요. 제가 산 책에서도 별도 이야기가 없는 것으로 보아, Node,js는 Python의 PyCharm같은 언어에 최적화된 에디터/IDE가 없는 것 같네요. SSH로 붙어서 VIM 에디터로 개발을 하겠습니다!


기술 블로그?


요즘.. 이라고 할 만큼 자주 보지는 않지만, 가끔 시간이 날때 회사에서 일하기 싫어서 딴짓할 때 하는 것이 바로 다른 IT관련 회사들과 스타트업들의 기술 블로그를 보는 것 입니다. 


기술 블로그는 그 회사의 IT 개발/연구 인원들이 작성하고 관리하는 블로그로, 주로 IT 기술과 관련된 글이 올라오는 블로그입니다. 회사에서 공개한 오픈소스 프로젝트나, 개발 팀/부서 등의 조직에서 채용하고 사용하는 개발 방법론 등을 주로 한 블로그 포스트가 올라오는데요, 생각보다 좋은 기술지식을 쉽게 접하고, 제가 지금 진행하는 개인 프로젝트나 회사 업무에 적용을 할 수 있다는 이점이 있습니다. 회사마다 명칭은 다르지만, 생각보다 이런 블로그를 운영하는 회사는 많습니다.


특히 스타트업들의 기술 블로그를 보면 신기술의 트렌드, 어떤 기술이 유행하고 다루기 쉬운지, 또는 어떤 개발 방법론이 요즘은 유행을 하는지 쉽게 알 수 있습니다. 개발자라는 직업이 아무래도 평생 공부해야하는 직업이다보니, 이런 트렌드? 같은 내용도 Follow-Up 하는 것도 좋을 것 같다는 생각에 요즘 자주 들여다봅니다. 일단 제가 아는 분야의 내용의 글들이라 재미도 있고, 저 개인한테도 지식을 공부 할 수 있는 기회가 되기도하고요.



국내 회사(단체)별 기술 블로그


각 회사(단체)의 기술 블로그는 찾을 때마다 개인 기록용으로 계속 업데이트를 할 것이고, 설명도 조금씩 추가 할 계획이다.


1. VCNC의 엔지니어링 블로그 (http://engineering.vcnc.co.kr)



2. 카카오의 Tech 블로그 (http://tech.kakao.com)



3. Spoqa의 기술 블로그 (https://spoqa.github.io)



4. SK Planet의 기술 블로그 (http://readme.skplanet.com)



5. 에드투페이퍼의 엔지니어링 블로그 (http://add2paper.github.io)



6. GDG Korea의 블로그 (http://googledevkr.blogspot.kr)



7. Naver D2의 블로그 (http://d2.naver.com/home)




해외 회사(단체)별 기술 블로그


영어로 되어있지만, 읽을 수만 있다면 꽤 좋은 정보를 얻을 수 있는 블로그들이다. 


1. Facebook (https://www.facebook.com/Engineering)

2. Twitter (https://engineering.twitter.com)

3. Instagram (http://instagram-engineering.tumblr.com)

4. Tumblr (https://engineering.tumblr.com)

5. Evernote (http://blog.evernote.com/tech/)

'Development > Etc' 카테고리의 다른 글

[Node.js] Node.js 배워보기 #1  (1) 2016.07.17

+ Recent posts