리눅스 ramdisk 만들기


리눅스 ramdisk 만들기 리눅스에서 램디스크(RAM Disk)를 만드는 방법에 대해 설명드립니다. ramfs 또는 tmpfs를 마운트하여, 램 디스크를 구성하는 방법과 부팅 후에도 자동으로 마운트 되도록 함께 알려드리도록 하겠습니다.

여유 메모리 공간이 충분할 경우 RAM Disk를 만들어 사용할 수 있습니다. 하지만 이와 반대로 메모리 공간이 부족하여, Out-Of-Memory 또는 Cannot allocate memory 오류가 발 생할 경우는 아래의 글을 참고해 주시기 바랍니다.

리눅스 메모리 부족 문제 해결 방법

리눅스 ramdisk 만들기

램 디스크(RAM Disk)의 장단점

메모리 기반의 파일시스템인 램 디스크를 생성하는 이유에는 몇 가지 있을 것입니다.

램 디스크는 메모리를 기반으로 사용하기 때문에 SSD 또는 HDD 와 비교해 보면 속도에서 많은 차이가 있습니다.
따라서 아마도 램 디스크를 가장 많이 사용되는 주 목적은 caching 또는작업 디렉터리 용도로 사용될 것입니다.

램디스크 사용시 주의사항

RAM은 휘발성 메모리이기 때문에 이를 기반으로 한 램 디스크 또한 전원이 꺼지면 모든 데이터가 삭제되게 됩니다. 이점 사용에 주의해 주셔야 합니다.

하지만 이러한 문제에도 속도 측면에서는 기존 디스크 등 보조 기억장치와 크게 차이 나기 때문에 속도등의 성능을 중요한 환경에서는 많이 사용되고 있습니다.

일반 SSD와 램디스크의 성능이 얼마나 차이가 나는지, 아래의 글에서 테스트를 해보았습니다. 이와 관련해서는 아래의 글을 참고해 주시기 바랍니다.

리눅스 성능 측정 sysbench 사용법

램 디스크의 유형

리눅스를 기반으로 램 디스크를 구성하는 유형에는 아래와 같이 2가지 방법이 있습니다.

  • ramfs
  • tmpfs

ramfs

각각의 파일 시스템의 장단점이 있습니다. 먼저 ramfs는 오래된 파일시스템 유형으로 최근들어 대부분 tmpfs 으로 대체되고 있습니다. ramfs는 사이즈를 지정하여 할당하기가 어렵습니다.

tmpfs

tmpfs 파일 시스템은 ramfs 와 달리 램 디스크를 마운트 할 때에 디스크 크기를 지정할 수 있습니다. 지정된 tmpfs 파일 시스템의 크기를 초과하게 되면 ‘disk full’에러를 발생하게 됩니다.

아래와 같이 df 라는 명령어를 실행하면 tmpfs가 램 디스크로 활용되고 있음을 알 수 있습니다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             24G     0   24G   0% /dev
tmpfs           4.8G  1.1M  4.8G   1% /run
/dev/vda3       208G   44G  154G  23% /
tmpfs            24G     0   24G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            24G     0   24G   0% /sys/fs/cgroup
/dev/loop0       91M   91M     0 100% /snap/core/6350
/dev/loop1       89M   89M     0 100% /snap/core/6964
/dev/loop2      298M  298M     0 100% /snap/pycharm-community/128
/dev/loop3       90M   90M     0 100% /snap/core/6818
/dev/vdb1       458G  361G   74G  84% /data
tmpfs           4.8G     0  4.8G   0% /run/user/1000
df

리눅스 ramdisk 만들기

메모리 크기 확인

리눅스 ramdisk 만들기 위해서 가장 먼저 해야 될 것이 현재 사용가능한 메모리 크기를 확인 하는 것입니다.

아래의 명령어로 여유 메모리 크기를 확인 합니다.

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            47G        354M         46G        1.1M        433M         46G
Swap:          4.0G          0B        4.0G
free

명령어 실행 결과 사용하능한 메모리가 46G 정도 됩니다. 프로세스 등에서 추가적으로 사용될 수 있는 메모리 크기를 고려하여 램 디스크로 사용될 크기를 결정하시면 됩니다.

리눅스 ramdisk 설정

먼저 램 디스크로 사용될 위치를 아래의 명령어로 생성해 줍니다.

$ sudo mkdir /mnt/ramdisk
mkdir

램 디스크를 마운트 하는 명령어는 아래와 같이 사용 가능합니다.

$ sudo mount -t [TYPE] -o size=[SIZE] [FSTYPE] [MOUNTPOINT]
  • [TYPE] : 어떠한 유형을 사용할지 선택 하는 것으로 tmpfs, ramfs 중에서 선택하면 됩니다.
  • [SIZE] : 파일 시스템의 크기입니다. ramfs은 물리 메모리 크기를 넘어서면 됩니다. tmpfs 또한 물리 메모리 크기를 넘어서는건 권장되지 않습니다.
  • [FSTYPE] : 램 디스크를 사용할 유형입니다. tmpfs, ramfs, ext4 등이 됩니다.

아래의 명령어는 1G으로 램 디스크를 마운트 하는 예제 명령어 입니다. 환경에 따라 원하시는 크기로 지정해서 사용하시면 됩니다.

$ sudo mount -t tmpfs -o size=1G tmpfs /mnt/ramdisk
리눅스 ramdisk 만들기

위의 명령어 실행 후, df -h 명령어로 확인해 본 결과 RADM이 파일시스템으로 마운트 된 것을 알 수 있습니다.

fstab 설정

위에서 마운트 한 파일시스템의 데이터는 부팅 후에는 데이터가 모두 삭제 될 뿐만아니라, /mnt/ramdisk 마운트 또한 해제 됩니다.
전원을 끄기 전에 램 디스크에 있는 자료는 백업이 필요합니다. 그리고 부팅후에는 자동으로 램 디스크가 마운트 될 수 있도록 설정해 보도록 하겠습니다.

/etc/fstab 파일에 아래와 같은 내용을 추가하면, 부팅시에 자동으로 램 디스크가 마운트 되게 됩니다.

tmpfs /mnt/ramdisk tmpfs defaults,size=1G 0 0

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)