본문 바로가기

프로그래밍

Redhat/Ubuntu 리눅스에서 램디스크(RAM disk) 만들기

안녕하세요 asbear입니다. ^^ 10년간 변함없이 곰같은 블로그에 방문해 주셔서 늘 감사합니다!
[해외취업 첫걸음, 꿈이 현실로!]로 오셔서 그룹에 조인 하시면 저와 소통 하실 수 있습니다.
또한 제가 지난달부터 해외취업 전문 블로그 포쉬포우 in 런던(https://poshpaws.tistory.com) 을 함께 운영하고 있습니다. 개발자와 디자이너의 영국취업 스토리와 좀더 전문적인 칼럼 글도 연재 하고 있으며 진로상담과 전문 컨설팅도 제공합니다. 해외 취업에 관심이 있는 분들의 방문을 기다립니다!

소프트웨어 개발을 하다 보면, 다양한 디스크 상태에 따른 예외처리를 구현해야 할 때가 많다. 일일이 열거하기는 어렵지만, 예를들면 디스크 용량 부족에 대한 예외 처리가 있을 수 있겠다. 하지만 이런 상황을 만들어내기 위해서 하드디스크에 파일을 채울 수도 없는 노릇이 아닌가. 이럴때 작은 아주 작은 크기로 램디스크를 만들면 쉽게 재현 할 수 있다.


또 한가지는, profiling 등을 할 때, 디스크IO로 인한 부하 및 지연시간을 없애고 싶을 때가 있다. 이 때 파일 read/write를 램디스크로부터 하도록 함으로써 이를 해소 할 수도 있다. 램디스크는 비교할 수 없을만큼 access 시간이 짧기 때문에, 디스크 IO에 묻혀서 분간하기가 힘들었던 hot spot을 발견할 확률도 높일 수 있다.


Redhat 혹은 Ubuntu 리눅스에서 간단히 램디스크를 만드는 법은 간단하다.


디렉토리를 하나 고르거나 만든다.

mkdir --p /media/ramdisk


고른 디렉토리를 tmpfs 타입으로 마운트 한다. size 옵션은 기본적으로 byte이며, k, m, g를 붙이면 KB, MB, GB로 인식 된다.

mount -t tmpfs -o size=100m tmpfs /media/ramdisk/


생성된 마운트 제거하는 법은 다음과 같다.

umount /media/ramdisk/


램디스크 생성시에 tmpfs 이외에도 ramfs를 이용할 수 있다. ramfs는 용량이 지정한 것보다 증가하면 자동으로 스페이스를 늘린다는 점과 디스크 스왑을 사용하지 않는다는 점이 tmpfs와 다른점이고, 나머지는 동일하다고 봐도 무방하다.


다들 알겠지만, 램디스크에 저장한 내용은 시스템을 새로 시작하는 순간 모두 사라지므로 임시 용도로만 사용해야 한다.

참고: http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/