레이블이 램디스크 설정인 게시물을 표시합니다. 모든 게시물 표시
레이블이 램디스크 설정인 게시물을 표시합니다. 모든 게시물 표시

2008년 7월 12일 토요일

리눅스와 맥OS X에서 램디스크 만들기 (How to create ramdisk in Mac OS X and Linux)

리눅스 커널 2.4 이후 버젼의 리눅스를 사용하고 있으면 이미 램디스크 지원이 내장되어 있다. 확인하고 싶으면 다음의 명령어를 사용하면 된다.

$ dmesg | grep RAMDISK
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize

CentOS나 RHEL인 경우 위와 같은 출력이 나오고 다른 리눅스 배포판인 경우도 유사한 결과가 나온다. 아래 명령어로 만들어 져 있는 램 디스크를 볼 수 있다.

$ ls -l /dev/ram*
lrwxrwxrwx 1 root root 4 Apr 24 12:05 /dev/ram -> ram1
brw-rw---- 1 root disk 1, 0 Apr 24 12:05 /dev/ram0
brw-rw---- 1 root disk 1, 1 Apr 24 12:05 /dev/ram1
brw-rw---- 1 root disk 1, 10 Apr 24 12:05 /dev/ram10
brw-rw---- 1 root disk 1, 11 Apr 24 12:05 /dev/ram11
brw-rw---- 1 root disk 1, 12 Apr 24 12:05 /dev/ram12
brw-rw---- 1 root disk 1, 13 Apr 24 12:05 /dev/ram13
brw-rw---- 1 root disk 1, 14 Apr 24 12:05 /dev/ram14
brw-rw---- 1 root disk 1, 15 Apr 24 12:05 /dev/ram15
brw-rw---- 1 root disk 1, 2 Apr 24 12:05 /dev/ram2
brw-rw---- 1 root disk 1, 3 Apr 24 12:05 /dev/ram3
brw-rw---- 1 root disk 1, 4 Apr 24 12:05 /dev/ram4
brw-rw---- 1 root disk 1, 5 Apr 24 12:05 /dev/ram5
brw-rw---- 1 root disk 1, 6 Apr 24 12:05 /dev/ram6
brw-rw---- 1 root disk 1, 7 Apr 24 12:05 /dev/ram7
brw-rw---- 1 root disk 1, 8 Apr 24 12:05 /dev/ram8
brw-rw---- 1 root disk 1, 9 Apr 24 12:05 /dev/ram9
lrwxrwxrwx 1 root root 4 Apr 24 12:05 /dev/ramdisk -> ram0

결과에 나온 모든 램 디스크 크기는 동일하다. 위의 예제에서는 모두 16MB이다. 이걸 128MB까지 사용할 수 있게 변경해 보겠다. 단 여기서는 사용할 수 있게 해 주는거지 실제로 128B를 할당해주는게 아니다. 후에 드라이브중 하나를 포맷해 줌으로서 실제 영역을 할당해주게 된다. 램디스크 용량은 1024의 배수로 지정해 줘야 하기 때문에 128MB인 경우 131072K가 된다.

에디터를 사용해 /etc/grub.conf 파일을 열어보면 아래와 같은 라인을 찾을 수 있을 것이다.

kernel /vmlinuz-2.6.9-42.0.10.EL ro root=/dev/VolGroup00/LogVol00

이 라인의 뒤쪽 부분에 ramdisk_size=131072를 추가해주면 된다.

kernel /vmlinuz-2.6.9-42.0.10.EL ro root=/dev/VolGroup00/LogVol00 ramdisk_size=131072

변경된 파일을 저장하고 에디터를 종료한다. 이 시점에서 램디스크 용량을 변경했지만 변경된 내용을 적용하려면 시스템을 리부트 시켜줘야 한다. 시스템이 리부트되고 나서 나머지 설정을 해 주면 된다.

$ mke2fs -m 0 /dev/ram0

위의 명령을 사용해서 ram0 램디스크를 사용할 수 있게 포맷 해 준다. 이 과정에서 커널이 메모리에 램디스크를 위한 용량을 할당해주게 된다. 포맷이 끝나면 램디스크를 마운트 시켜주면 된다.

$ mkdir /mnt/rd
$ mount /dev/ram0 /mnt/rd

이제 램디스크를 사용할 수 있다. 이렇게 만들어 진 램디스크를 특정 사용자가 사용할 수 있게 해 주려면 chown 명령을 사용해서 오너를 변경해주면 된다.

$ chown testuser.testuser /mnt/rd

mount명령을 사용하면 램디스크가 /mnt/rd에 마운트 된 걸 볼 수 있다.

$ mount
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda2 on /home type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/ram0 on /mnt/rd type ext2 (rw)

주의할것은 램디스크이기 때문에 여기에 저장된 내용은 시스템을 리부팅하면 모두 지워지게 된다는 것이다. 단 램디스크를 언마운트 했다가 다시 마운트 하는 경우에는 램디스크 내용이 그대로 살아있다.

시스템이 부팅할 때 마다 자동으로 램디스크를 만들도록 설정하고 싶으면 아래의 내용을 /etc/rc.local 파일에 추가해주면 된다.

mke2fs -m 0 /dev/ram0
mount /dev/ram0 /mnt/rd
chown testuser.testuser /mnt/rd

---
Mac OS X에서는 아래의 명령으로 50MB 크기의 램디스크를 만들어 줄 수 있다. 여기서 램디스크의 용량은 바이트로 지정해 줘야 한다. (예: 50MB인 경우 50*1024*1024 = 52428800)

$ hdid -nomount ram://52428800
$ newfs_hfs /dev/disk1
$ mkdir /tmp/ramdisk1
$ mount -t hfs /dev/disk1 /tmp/ramdisk1

만들어 진 램디스크를 언마운트 하려면 다음의 명령을 사용하면 된다.
$ hdiutil detach /dev/disk1

또한 이런 명령어를 직접 사용하지 않고 쉽게 램디스크를 만들어 줄 수 있는 GUI 유틸리티도 있다.

사용자 삽입 이미지
MakeRAMDisk : http://boredzo.org/make-ram-disk/

소스코드까지 공개되어 있는 무료 유틸리티로 OS X 10.4 이상에서 동작한다.
이 프로그램을 실행시키면 자동으로 64MB의 램디스크가 만들어진다. 사이즈를 변경하고 싶으면 프로그램을 실행할 때 Option키를 누른 상태에서 실행하면 위의 화면이 나와서 크기를 변경해 줄 수 있다.
만들어 진 램디스크를 없애려면 CD를 추출하는것과 마찮가지로 램디스크 아이콘을 휴지통에 버려주면 된다.