리눅스 ramdisk 만들기 리눅스에서 램디스크(RAM Disk)를 만드는 방법에 대해 설명드립니다. ramfs 또는 tmpfs를 마운트하여, 램 디스크를 구성하는 방법과 부팅 후에도 자동으로 마운트 되도록 함께 알려드리도록 하겠습니다.
여유 메모리 공간이 충분할 경우 RAM Disk를 만들어 사용할 수 있습니다. 하지만 이와 반대로 메모리 공간이 부족하여, Out-Of-Memory 또는 Cannot allocate memory 오류가 발 생할 경우는 아래의 글을 참고해 주시기 바랍니다.
램 디스크(RAM Disk)의 장단점
메모리 기반의 파일시스템인 램 디스크를 생성하는 이유에는 몇 가지 있을 것입니다.
램 디스크는 메모리를 기반으로 사용하기 때문에 SSD 또는 HDD 와 비교해 보면 속도에서 많은 차이가 있습니다.
따라서 아마도 램 디스크를 가장 많이 사용되는 주 목적은 caching 또는작업 디렉터리 용도로 사용될 것입니다.
램디스크 사용시 주의사항
RAM은 휘발성 메모리이기 때문에 이를 기반으로 한 램 디스크 또한 전원이 꺼지면 모든 데이터가 삭제되게 됩니다. 이점 사용에 주의해 주셔야 합니다.
하지만 이러한 문제에도 속도 측면에서는 기존 디스크 등 보조 기억장치와 크게 차이 나기 때문에 속도등의 성능을 중요한 환경에서는 많이 사용되고 있습니다.
일반 SSD와 램디스크의 성능이 얼마나 차이가 나는지, 아래의 글에서 테스트를 해보았습니다. 이와 관련해서는 아래의 글을 참고해 주시기 바랍니다.
램 디스크의 유형
리눅스를 기반으로 램 디스크를 구성하는 유형에는 아래와 같이 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
리눅스 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
명령어 실행 결과 사용하능한 메모리가 46G 정도 됩니다. 프로세스 등에서 추가적으로 사용될 수 있는 메모리 크기를 고려하여 램 디스크로 사용될 크기를 결정하시면 됩니다.
리눅스 ramdisk 설정
먼저 램 디스크로 사용될 위치를 아래의 명령어로 생성해 줍니다.
$ sudo mkdir /mnt/ramdisk
램 디스크를 마운트 하는 명령어는 아래와 같이 사용 가능합니다.
$ 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
위의 명령어 실행 후, df -h 명령어로 확인해 본 결과 RADM이 파일시스템으로 마운트 된 것을 알 수 있습니다.
fstab 설정
위에서 마운트 한 파일시스템의 데이터는 부팅 후에는 데이터가 모두 삭제 될 뿐만아니라, /mnt/ramdisk 마운트 또한 해제 됩니다.
전원을 끄기 전에 램 디스크에 있는 자료는 백업이 필요합니다. 그리고 부팅후에는 자동으로 램 디스크가 마운트 될 수 있도록 설정해 보도록 하겠습니다.
/etc/fstab 파일에 아래와 같은 내용을 추가하면, 부팅시에 자동으로 램 디스크가 마운트 되게 됩니다.
tmpfs /mnt/ramdisk tmpfs defaults,size=1G 0 0
( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)