Embedded/RaspberryPI

리눅스(Raspberry Pi)에서 램 디스크(RAMdisk) 장단점 확인 및 램 디스크 테스트 하기

변화의 물결1 2025. 1. 9. 01:25

 

 

 

안녕하세요.

 

기존 HDD에서 처리하다 보면 시간이 오래 걸리기 때문에 RAM에 필요한 코드 부분을 올려놓고 사용하는데요. 원하는 임의의 디스크를 만들어서 HDD에서 하는 것처럼 작동시켜 얼마나 빨리 처리되는지 확인해 보겠습니다.

 


 

1. Ramdisk란

 

 시스템의 RAM(주기억장치)을 디스크 드라이브처럼 사용하는 가상 저장 장치를 의미합니다. 쉽게 말해, 메모리(RAM)를 파일 시스템처럼 활용하는 기술입니다. 이 디스크는 실제 물리적 디스크(HDD, SSD)가 아닌 메모리의 일부를 할당해 동작합니다.

 

 운영 체제에서는 이를 임시 파일 시스템으로 다루며, Linux에서는 tmpfs나 ramfs 명령어로  파일 시스템이 RAMDisk로 구현하는 데 사용합니다.

 

 

2. 작동 방식

 

  할당 : 시스템 메모리(RAM) 중 일부를 특정 크기만큼 할당해 가상의 디스크 드라이브로 만듦

  마운트 : 할당된 메모리를 파일 시스템에 마운트 하여 디렉터리로 접근 가능

  사용 : 일반 파일 시스템처럼 파일을 생성하고 읽고 쓰기 가능

  해제 : 시스템 종료 또는 마운트 해제 시 데이터는 자동으로 삭제 (비휘발성 아님)

 

 

3. Ramdisk 장단점

 

1) 장 점

 

(1) 속도 향상

 RAMDisk는 디스크 I/O보다 훨씬 빠르다. 디스크는 기계적 동작이 필요하지만, RAM은 메모리에서 직접 데이터에 접근하므로 매우 빠르다. 따라서 임시 파일이나 캐시를 저장할 때 유용하다.

 

(2) 디스크 수명 연장

 SSD나 HDD는 지속적인 쓰기 작업으로 인해 수명이 줄어든다. 반면 RAMDisk는 메모리에 데이터를 저장하므로 디스크의 쓰기 작업을 줄일 수 있어 디스크의 수명을 연장시킬 수 있다.

 

(3) 자동 데이터 정리

 시스템이 재부팅되면 메모리에 있는 파일이 모두 사라진다. 따라서 임시 데이터를 저장하기에 적합하며, 수동으로 정리할 필요가 없다.

 

(4) 효율적인 메모리 관리

 동적으로 크기를 조절할 수 있어, 필요한 만큼만 메모리를 사용한다. 사용되지 않은 메모리는 시스템에 반환된다.

 

 

2) 단 점

 

 (1) 데이터 휘발성

  RAM에 저장된 데이터는 전원이 꺼지면 사라진다. 중요한 데이터는 적합하지 않다.

 

 (2) 메모리 사용

  사용된 RAMDisk는 시스템 메모리를 차지하기 때문에 메모리가 부족할 경우 성능 저하를 초래할 수 있다.

  

 

4. 실제 사용 사례

 

로그 파일 : 임시 로그를 저장해 분석 후 삭제.

컴파일 속도 향상 : 소스 코드의 중간 파일을 RAMDisk에 저장해 컴파일 속도를 높임.

웹 서버 캐시 : 웹 서버에서 정적 파일 캐싱으로 속도를 향상.

Docker 컨테이너 : 컨테이너의 임시 데이터 저장소로 사용.

 

 

5. Ramdisk 실험해 보기

 

 위의 이론적이 이야기 말고 실제로 동작을 확인해 보겠습니다.

우선 가지고 있는 PC 혹은 Raspberry Pi에 남아 있는 메모리 공간을 확인합니다.

  

$ free --mega

 

약 1.1GB 남은 것을 알 수 있습니다.

 

 

 

Ramdisk를 실험할 디렉터리를 먼저 만듭니다.

$ mkdir /home/pi/ramdisk

 

 

mount 명령어를 사용해서 ramdisk를 만들기 전에 형식을 먼저 확인해 보겠습니다.

 

$ sudo mount -t [TYPE] -o size=[SIZE] [FSTYPE] [MOUNTPOINT]

 

TYPE는 ramfs와 tmpfs 가 있으면 여기서는 tmpfs 형식을 사용합니다.

 

SIZE는 디스크 크기를 지정하는 것이며 GB 단위는 G, MB 단위는 M으로 표시합니다. 단, 1.5G로 표기해도 되지만, 일부 시스템에서는 인식이 안될 수도 있으므로 소수점보다는 MB 단위 (예, 1536M)로 변환해 사용하는 것이 안전합니다.

 

FSTYPE는 포맷 형식으로 NTFS, FAT32, ext4 등을 지정할 수 있습니다.

 

MOUNTPOINT는 램디스크를 마운트 할 대상 디렉터리를 지정합니다.

 

위의 형식에 맞게 1G 램 디스크를 생성해서 /home/pi/ramdisk 디렉터리에 마운트 하는 명령을 입력합니다.

$ sudo mount -t tmpfs -o size=1G tmpfs /home/pi/ramdisk

 

 

그렇다면 잘 생성되었는지 확인을 합니다.

 

$ df -h

 

혹은

 

mount | grep tmpfs

 

 

 

6. Ramdisk 성능 테스트

 

속도 확인을 위해 sysbench 프로그램을 설치합니다.

 

 

 

여러 개의 파일을 1 GiB 용량까지 생성하는데 얼마나 걸리는지 차이를 확인해 보겠습니다.

 

$ sysbench --test=fileio --file-total-size=1G prepare

 

 

 

Rasbperry Pi SDcard의 ext4에서는 약 34초가 걸렸습니다.

 

 

  

mount 한 ramdisk 디렉터리로 이동해서 sysbench 테스트를 동일하게 진행합니다.

 

$ sysbench --test=fileio --file-total-size=1G prepare

 

 

 

Rasbperry Pi에서 생성한 Ramdisk에서는 약 약 1초 만에 파일을 생성한 것을 볼 수 있습니다.

 

 

 

 재부팅하면 마운트 된 디렉터리는 자동으로 해제되어 Ramdisk에 저장되어 있던 파일이 사라지지만, 수동으로 해제하려면 umount를 실행하면 됩니다. 단, ramdisk 디렉터리에서 실행하지 말고 상위 디렉터리로 이동한 후 umount를 실행해야 합니다.

 

$ sudo umount /home/pi/ramdisk

 

 

7. Ramdisk를 자동으로 부팅 시 마운트 되도록 설정

 

fstab 파일에 디스크 생성 정보를 추가해 줍니다.

 

$ sudo vim /etc/fstab

 

아래와 같이 입력하고 저장한 후 재부팅합니다. 그리고 df -h 혹은 mount | grep tmpfs

확인하면 자동으로 램디스크가 생성된 것을 확인할 수 있습니다.

 

tmpfs /home/pi/ramdisk tmpfs defaults,size=1G 0 0

 

 

 

감사합니다.

 

 

<참고 자료>

1. [도서] 임베디드 소프트웨어 베이직, 6.2 램 디스크 만들어 보기

 

 

반응형