Superkkt Blog

tmpfs

2009/08/24 00:27

tmpfs는 가상 메모리 파일시스템이다. tmpfs에 저장되는 파일들은 모두 가상 메모리(물리 메모리 또는 스왑)에 저장이 되고, 휘발성이기 때문에 전원이 나가는 순간 모두 사라진다. tmpfs의 파일시스템 크기는 tmpfs에 저장된 데이터의 크기에 따라 동적으로 변한다.

ramdisk도 tmpfs와 비슷하지만 가장 큰 차이점은 스왑의 사용여부이다. ramdisk는 고정된 크기를 가지고 스왑도 사용하지 않는 단순한 블럭 디바이스이지만, tmpfs는 동적인 크기를 가지면서 low-memory 상황에서는 데이터를 스왑 영역으로 이동시키는 파일시스템 구조이다.

솔라리스는 오래 전 부터 /tmp 디렉토리를 tmpfs로 사용해왔다. 그리고 리눅스에서는 커널 2.4에서부터 tmpfs가 추가되었다고 한다. 아래는 리눅스에서 tmpfs를 사용하는 방법이다.

# mount tmpfs /mnt -t tmpfs

그리고 솔라리스처럼 /tmp 디렉토리를 tmpfs로 사용하고 하는 경우에는 아래와 같이 간단히 마운트만 하면 된다.

# mount tmpfs /tmp -t tmpfs

리눅스 커널 2.2 까지는 이미 마운트된 포인트에 다른 파일시스템을 또 마운트 하는 경우 에러가 발생했지만, 이제는 스택처럼 여러 번 마운트를 할 수 있다. 그리고 새로 마운트가 되는 순간 기존의 /tmp 디렉토리는 접근이 불가능 하지만, 이미 기존 /tmp 디렉토리에 파일을 오픈하고 있는 프로세스들은 여전히 접근이 가능하다. 이는 프로세스가 파일을 오픈하고 바로 unlink 하는 경우, 다른 프로세스들은 해당 파일을 볼 수 없지만 파일을 오픈했던 프로세스는 계속 접근이 가능한 것과 같은 것이다.


<참고 자료>
http://en.wikipedia.org/wiki/TMPFS
http://www.ibm.com/developerworks/kr/library/l-fs3.html
2009/08/24 00:27 2009/08/24 00:27

trackbacks

trackbacks rss

이 글에는 트랙백을 보낼 수 없습니다

Leave a Comment