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

comments
comments rss (+댓글 쓰러가기)