| |
제 목 : FreeBSD에서 ramdisk 사용
작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2007.3.19(월)
FreeBSD에서 리눅스의 tmpfs 파일시스템, ramdisk처럼 메모리를 파일시스템으로 사용하는 방법을 설명한다. ramdisk는 메모리를 사용하므로 서버가 부팅시 깨끗하게 지워지며, 디스크 액세스가 빈번하게 일어나는 경우에 효과를 볼 수 있다. FreeBSD 5.x, 6.x 기준 ramdisk 사용하는 방법을 설명한다.
1. mdconfig 명령 이용
| | # mdconfig -a -t swap -s 512M -u 1
# newfs -U /dev/md1
# mount /dev/md1 /var/tmp
| |
mdconfig은 메모리 디스크(md)를 설정하고 enable하는 명령이다.
-a : 메모리 디스크를 attach한다. -d는 반대로 detach한다.
-t : 메모리 디스크의 유형을 선택한다.
-s : 메모리 디스크의 크기를 설정한다. 숫자뒤에 b(Byte), k(KByte), m(MByte), g(GByte), t(terabyte) 단위 설정 가능
-u : md(memory disk) device의 unit 번호를 지정한다. 지정하지 않으면 자동으로 할당한다.
메모리 디스크 유형에는 swap과 malloc 2가지가 있다. 보통 swap 유형을 사용하며, 여기서 swap은 메모리가 부족한 경우에 disk로 swap될 수 있는 메모리 영역을 할당한다는 것을 의미하는 것이지, 기본적으로 disk로 swap됨을 의미하는 것이 아니다. malloc 유형은 malloc() function 으로 할당하는 경우로, 메모리가 부족할 때 시스템 패닉이 생길 수 있다.
newfs의 -U는 soft-updates를 enable하는 옵션으로 디스크의 쓰기 속도를 향상시킨다. 메모리 디스크를 attach했다면 md device 목록을 확인해보자. (mount여부와 무관하게 attach했다면 목록에서 볼 수 있음)
메모리는 실제 사용을 할 시점에 할당이 된다. mount를 했지만 메모리 디스크에 파일이 없을 때의 메모리 상태이다.

100MBytes 파일을 하나 만들어보자.
| | # dd if=/dev/zero of=foobar.img bs=1024k count=100 | |
free 메모리가 줄어들었음을 확인할 수 있다. 파일을 삭제하면 다시 메모리는 반환된다.

메모리 디스크가 더 이상 필요가 없다면 detach를 한다.
| | # umount /var/tmp
# mdconfig -d -u 1
| |
2. mdmfs 명령을 사용하여 한방에
mdmfs는 mdconfig, newfs, mount 명령을 한방에 처리해주는 명령이다. 기본으로 soft-updates가 enable된 상태의 swap기반(swap-based) 디스크를 사용한다. swap backing대신 malloc backing 디스크를 원하면 -M 옵션을 사용하면 된다.
| | # /sbin/mdmfs -s 512M md1 /var/tmp
# mount
... 생략 ...
/dev/md1 on /var/tmp (ufs, local, soft-updates)
| |
3. /etc/fstab 설정
| |
/dev/md1 /var/tmp mfs rw,-s512M 2 0
| |
4. 참고자료
* RAMdisks, creating under FreeBSD 5.x
http://freebsdwiki.net/index.php/RAMdisks,_creating_under_FreeBSD_5.x
* FreeBSD Handbook (Chapter 17 Storage)
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/disks-virtual.html
|