본문 바로가기

프로그래밍

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

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


또 한가지는, 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/