[파일] 리눅스 RAM DISK 사용하기

램디스크는 하드에서 자주 읽어들일경우에 하드보다 램이기 때문에 빠르고,

터미널같은데서 다운로드를 하는데 하드에 용량이 없고,

터미널이라 램이 충분히 확보되어있는 경우라면,

램을 하드디스크처럼 일부를 잡아 쓰는것을 말한다.

대부분은 첫번째 이유에서 많이 램디스크를 쓸것이라 생각된다.

램디스크는 다음과 같이 잡는다.

1. 램디스크 마운트할 곳 방만든다.

mkdir -p /mnt/ramdisk0

2. 램디스크를 포멧한다.(약 4메가)

mkfs -t ext2 /dev/ram0

3. 램디스크를 마운트 한다.

mount /dev/ram0 /mnt/ramdisk0

——————————————————————————

용량을 바꾸는 법이나, 웹서버에서의 활용등으로 더 자세히 알고싶다면 아래(Linux Gazette)

를 참고하시기 바랍니다.

                                

주> 이 문서의 수정된 내용은

http://www.tcuinc.com/mark/articles/Ramdisk.html

에 올려질 것이다.

이 글은 RedHat 6.0 에서 램디스크를 사용하는 방법이다.

다른 배포본도 거의 대동소이하다.

램디스크(RamDisk)란 파티션으로 사용하는 메모리의 일부분이다.다른 말로 말하면

당신은 메모리를 빼내어 하드디스크인 양 행세하여 그 안에 파일을 저장하는것이다.

1. 왜 램디스크를 사용하려하는가?

왜 램디스크를 사용하느냐고요? 어떤 파일이 계속해서 사용되고 있다면 그 파일을 메모리에

넣는게 컴퓨터의 속도를 빨리 해줄 것이다. 메모리는 하드디스크보다 속도가 빠르기 때문이다.

많은 데이터를 갖고 있는 웹서버 경우에 이 방법으로 속도를 높일수 있다. 만약 당신이

조금 이상한 사람이어서 펜티엄-II 550Mhz 피시에 1기가의 메모리와 500메가의 구형 하드를

장착하고 있다면 당신은 메모리를 하드디스크 용량을 올리는데 쓸 수 있을 것이다.  

혹은 거의  디스크 없는 시스템을 만들겠다면 그렇게 틀린 생각도 아니다.

여기 다른 참고 자료이다.

1. http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html  

2. http://metalab.unc.edu/LDP/HOWTO/mini/LILO.html  

3. /usr/src/linux/Documentation/ramdisk.txt

2. 램디스크 사용법(How to use RamDisk)

램디스크를 사용하는건 쉽다. 레드햇의 기본 설치에는 램디스크 지원이 들어있다.

해야할 일은 오직 램디스크를 포맷해서 어느 디렉토리에 마운트해주는 것이다.

▶ 역자 주

레드햇을 설치하는 경우에 램디스크가 사용된다. 레드햇 6.0 CD에 들어있는 커널에는  

램디스크 지원이 들어 있다. 그러나 커널 소스를 새로 다운 받아 컴파일하는 경우

램디스크 지원은 기본 선택 사항에 들어있지 않다.

당신이 사용 가능한 램디스크를 찾으려면  “ls -al /dev/ram*” 명령을 주라.

이 명령은 기설치된 사용 가능 램디스크를 알려준다. 이 램디스크들은 그러나 당신이

어떤 형태로든 사용하기 전에는(예를 들면 포맷) 메모리를 잡아 먹지 않는다.

여기에 램디스크를 사용하는 간단한 방법이 있다.

mkdir -p /tmp/ramdisk0

mkfs -t ext2 /dev/ram0

mount /dev/ram0 /tmp/ramdisk0

위의 세 명령은 램디스크가 위치할 디렉토리를 만들고, 램디스크를 포맷하고(약 4메가) ,

램디스크를 “/tmp/ramdisk0”에 마운트한다.

이제 당신은 그 디렉토리를 파티션인 것처럼 쓸 수 있다.

그것을 다른 디렉토리나 파티션 처럼 사용하라.

3. 주의할 점이 무엇인가?

컴퓨터가 리부팅하면 그 내용은 사라진다. 중요한 데이터라면 다른 곳에 복사되어

있지 않은 데이터를 그곳에 넣지 마라.

당신이 그 디렉토리를 변경하고 그 변경을 지속시킬 필요가 있다면 그것을

백업하는 방도를 강구하라.

4. 램디스크 크기 변경

어떻게 램디스크의 크기를 바꿀 수 있는가?

개인적으로 나는 오직 두 가지 변경 방법만을 안다. 둘 중 어느것도 컴퓨터가

부팅 후에는 램디스크의 크기를 바꾸지 못한다.

아래는  첫번째의  어려운 방법이다. 아래 파일을 보라.

/usr/src/linux/drivers/block/rd.c

이 파일을 편집해서 아래의 라인을 바꾸라.

int rd_size = 4096; /*Size of the ramdisks */

위의 size를 원하는 크기로 바꾸어(kbyte 단위) 커널을 컴파일하고 설치 후에 리부팅하라.

▶ 역자 주

커널 옵션 중 Block devices  —>  RAM disk support를 선택해야 한다.

다음은 쉬운 방법이다.

lilo.conf 파일에 아래 라인을 추가하라.

ramdisk=10000

이제 lilo 명령을 주고 리부팅하면 10메가의 램디스크를 사용 가능하다.

아래는 나의 lilo.donf이다.

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

timeout=50

image=/boot/vmlinuz-2.2.5-15

label=linux

        root=/dev/hda2

        read-only

        ramdisk=10000

실제 사용 가능 용량은 9메가가 약간 넘는다.

5. 웹서버에 램디스크를 사용하는 예

여기 웹서버에 3개의 램디스크를 사용하는 예이다. 단 당신의 레드햇 6.0 아파치

웹서버가 cgi-scripts, html, 그리고 아이콘(icons)에 9메가 이상을 사용하지

않는다는 확신이 서야한다.

우선 웹서버 홈디렉토리(/home/httpd) 내용을 다른 곳으로 옮겨라. 그리고서

그 디렉토리에 램 디스크 들을 올려라.

mv /home/httpd/ /home/httpd_real

mkdir /home/httpd

mkdir /home/httpd/cgi-bin

mkdir /home/httpd/html

mkdir /home/httpd/icons

다음에 /etc/rc.d/rc.local 파일에 아래  라인을 추가하라.

# 램디스크 파티션 만듦

/sbin/mkfs -t ext2 /dev/ram0

/sbin/mkfs -t ext2 /dev/ram1

/sbin/mkfs -t ext2 /dev/ram2

# 램디스크 마운트

mount /dev/ram0 /home/httpd/cgi-bin

mount /dev/ram1 /home/httpd/icons

mount /dev/ram2 /home/httpd/html

# 원래의 데이터를 램디스크에 옮김

tar -C /home/httpd_real -c . | tar -C /home/httpd -x

#  웹서버 재 가동

/etc/rc.d/init.d/httpd restart  

이제 rc.local 파일의 수정 효력이 나타나도록 컴퓨터를 리부팅하라.

▶ 주

1. 한 가지를 명심하라. 만약 당신이 램디스크의 파일을 변경하였고, 그 파일이

필요하다면 반드시 백업하라. 그렇지 않으면 컴퓨터가 리부팅하면 그 파일은

사라진다. cron을 사용해서 할 수 있다. 매 5분마다 체크하게 해서 파일이 변했으면

변한 파일을 백업하라. 더 좋은 방법도 있으나 더 이상 들어가지는 않겠다.

다른 또 하나의 방법은 실제의 디렉토리(램디스크가 아닌 하드디스크의 디렉토리)의

파일을 변경하고 이를 램디스크에 복사하는 방법이다. 이것이 보다 안전하다.

2. 한가지 유념할 점은 피시의 몇몇 마더보드는 256메가나 128메가 이하의 메모리만

캐싱한다는 것이다. 많은 램을 사용한다면 조심해야한다.

3. 램디스크를 사용하는 괜찮은 방법 중의 하나는  1기가의 메모리를 갖는 컴푸터에서

256메가를 /tmp 디렉토리에 할당하는것이다.

만약 많은 프로세스가

/tmp 를 사용한다면 이는 시스템 속도를 향상시켜 준다. 또한 /tmp의 모든 파일은

리부팅시 사라지므로 적당하다.

4.  처음에는 나는 램디스크 들의 크기를  lilo.conf에서 지정하려고 했었다. 그러나 여의치 않았다.

Rob Funk가 내게 왜 어려운 방법(커널 재 컴파일 등)으로 하느냐고 지적했을 때

다시 시도해 보았는데 성공했다. 왜 처음에는 안되었는지 알 수가 없다.

Rob에게 감사드린다.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.