티스토리 뷰
출처 : http://sdnkorea.com/blog/549
이 글에서는 솔라리스에서의 /tmp
디렉토리와 램 디스크 에 대해 알아보도록 하겠습니다.
솔라리스에서 /tmp
디렉토리는 기본적으로 메모리 기반 파일 시스템으로 swap 에 마운트 되어 있습니다.
# df -k /tmp
Filesystem kbytes used avail capacity Mounted on
swap 1961928 504 1961424 1% /tmp
이러한 접근은 몇가지 장점이 있습니다.
/tmp
에 대한 접근이 빠름
- 솔라리스가 디스크를 read/write 모드로 마운트 할 수 없거나 읽기전용 NFS 에 의해부팅 되었을때에도 언제나 쓰기 가능한 디렉토리가 존재 함으로써 매우 유용함
- 재부팅 전 혹은 후에
/tmp
디렉토리를 정리할 필요가 없음
/tmp
를 위한 파일시스템을 생성할 필요가 없이 - 그냥 마운트 하고 사용하면 됨
이와는 반대로 /tmp
사용시에 주의해야할 사항들도 있습니다.
왜냐하면 /tmp
는 swap 에 마운트 되므로 재부팅 후에도 유지해야 하는 파일을 위해서는 사용하면 안됩니다. - 임시 파일들은
디스크 기반 디렉토리 혹은 /var/tmp 디렉토리를 사용하시기 바랍니다.
가장 중요한 한가지는
모든 유저는 /tmp
에 파일을 쓸 수 있다는 것입니다. 그리고 기본으로 /tmp 는 사이즈 제한이 없이 마운트 됩니다. 즉 모든 유저가 머신의 전체 가상 메모리를(물리 메모리와 스왑) 단지 /tmp
를 쓰레기 값으로 채움으로써 사용할 수 있다는 것입니다.
이러한 상황을 방지하기 위해 여러분은 /tmp
를 상위 사이즈 제한을 지정해서 사용해야 합니다. 예를 들어 아래와 같은 /etc/vfstab 라인을
swap - /tmp tmpfs - yes -
아래와 같이 변경합니다
swap - /tmp tmpfs - yes size=1g
(1g 는 여러분에 머신에 맞게 조절하시기 바랍니다)
한가지 기억해야할 것은 솔라리스가 운용중일때에는 /tmp
사이즈를 바꿀 수 없다는 것입니다.
# lockfs /tmp
/tmp: Inappropriate ioctl for device
# mount -o remount,size=512m swap /tmp
mount: Operation not supported
그러므로 변경사항을 적용하기 위해서는 반드시 머신을 재부팅 해야 합니다.
tmpfs
는 "일반적인" 솔라리스에서 일반적인 파일시스템이기 때문에 여러분은 항상 메모리 기반 파일 시스템을 추가할 수 있습니다. 예를 들어 새로운 tmpfs
를 즉석에서 생성하려면
[Mon Mar 17 21:53:19 root@sol9 /]
# mkdir /mytmp
[Mon Mar 17 22:05:44 root@sol9 /]
# mount -o size=100m -F tmpfs swap /mytmp
[Mon Mar 17 22:06:04 root@sol9 /]
# df -k /mytmp
Filesystem kbytes used avail capacity Mounted on
swap 102400 0 102400 0% /mytmp
이 새로운 파일시스템을 시스템이 부팅될때 마다 생성해 주려면 단순히 /etc/vfstab
에 새로운 라인을 추가해주면 됩니다.
swap - /mytmp tmpfs - yes size=1g
tmpfs 파일시스템에는 몇가지 제약사항이 있습니다.
- 실질적으로
/dev/dsk/c#t#d#s#
같은 파일 기반의 메모리 디바이스 혹은lofi
마운트를 위한/dev/lofi/#
같은 디바이스는 존재하지 않습니다. 특히 메모리 기반 파일 시스템은 raw 디바이스가 존재하지 않습니다.
tmpfs
에는 몇가지 제약사항이 존재합니다.(tmpfs(7FS)
를 참고하시기 바랍니다)
- 그리고
tmpfs
파일시스템은 오직 메모리 기반 파일 시스템에서만 사용 가능합니다. 예를 들어 ufs 혹은 vxfs 같은 종류의 파일 시스템으로는 사용할 수 없습니다.
그러나 솔라리스는 진짜 운영체제 이기 때문에 이러한 문제에 대한 솔루션도 존재 합니다.
메모리 기반 파일 시스템을 위해 tmpfs
를 사용하는 대신 ramdiskadm
을 사용합니다. ramdiskadm
는 솔라리스 9 버전 부터 솔라리스에 포함되어져 있습니다. ramdiskadm
는 SUNWcsu 패키지의 일부이고 그러므로 모든 솔라리스 머신에 (x86 과 SPARC 모두) 설치되어 있을 것입니다.
ramdiskadm
는 다른 디스크 디바이스를 만들때 사용되는 유틸리티 처럼 진짜 램디스크 디바이스를 만들때 사용 됩니다.
예를 들어
# create the ramdisk
#
[Mon Mar 17 22:15:03 root@sol9 /]
# ramdiskadm -a mydisk 40m
/dev/ramdisk/mydisk
# check the result
#
[Mon Mar 17 22:15:21 root@sol9 /]
# ls -l /dev/ramdisk/mydisk
lrwxrwxrwx 1 root root 40 Mar 17 22:15 /dev/ramdisk/mydisk -> ../../devices/pseudo/ramdisk@1024:mydisk
[Mon Mar 17 22:16:04 root@sol9 /]
# ls -l /dev/rramdisk/mydisk
lrwxrwxrwx 1 root root 44 Mar 17 22:15 /dev/rramdisk/mydisk -> ../../devices/pseudo/ramdisk@1024:mydisk,raw
# check the fstype
#
[Mon Mar 17 22:16:07 root@sol9 /]
# fstyp /dev/rramdisk/mydisk
unknown_fstyp (no matches)
# create a filesystem on the ramdisk
#
[Mon Mar 17 22:16:22 root@sol9 /]
# newfs /dev/rramdisk/mydisk
/dev/rramdisk/mydisk: Unable to find Media type. Proceeding with system determined parameters.
newfs: construct a new file system /dev/rramdisk/mydisk: (y/n)? y
/dev/rramdisk/mydisk: 81872 sectors in 136 cylinders of 1 tracks, 602 sectors
40.0MB in 9 cyl groups (16 c/g, 4.70MB/g, 2240 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 9664, 19296, 28928, 38560, 48192, 57824, 67456, 77088,
# mount the ramdisk
#
[Mon Mar 17 22:16:44 root@sol9 /]
# mkdir /myramdisk
[Mon Mar 17 22:16:51 root@sol9 /]
# mount /dev/ramdisk/mydisk /myramdisk
[Mon Mar 17 22:17:01 root@sol9 /]
# df -k /myramdisk
Filesystem kbytes used avail capacity Mounted on
/dev/ramdisk/mydisk 38255 1041 33389 4% /myramdisk
[Mon Mar 17 22:17:06 root@sol9 /]
이러한 램디스크들은 재부팅 후에는 사라짐을 기억하시기 바랍니다. 만약 계속해서 유지하고자 한다면 여러분은 init 스크립트나 SMF 서비스를 이용해서 머신이 재부팅 될때마다 새로 생성해야 합니다.
ramdiskadm
에 대한 좀 더 자세한 정보는 ramdiskadm(1m)
혹은 ramdisk(7d)
의 멘페이지를 참고하시기 바랍니다; ramdiskadm
의 멘페이지에는 루트가 아닌 사용자들이 램디스크를 생성하고 삭제할 수 있도록 하는 방법을 제공하고 ramdisk
의 멘페이지는 램디스크에서 얼마 만큼의 메모리를 사용할 수 있는지 설명해 줍니다.
그리고 여러분은 SVM 미러 용도로 ramdiskadm
으로 만든 램디스크를 사용할 수 있습니다. 이것은 어플리케이션이 주로 디스크에서 읽기 작업을 할 경우에 매우 유용합니다; 이러한 경우 여러분은 미러의 읽기 정책을 램디스크에서 먼저 읽어 오는 걸로 변경해줘야 합니다.
이와 관련된 설명은 다른 문서에서 설명합니다.
이 글의 영문 원본은
Talking about RAM disks in the Solaris OS
에서 보실 수 있습니다.
'Application > Linux' 카테고리의 다른 글
Ubuntu 7.04 Server 에 Zend Optimizer 3.2.8 설치하기! (1) | 2008.05.29 |
---|---|
윈도우 혹은 리눅스에서 솔라리스 파티션에 접근하기 (0) | 2008.05.21 |
스왑 공간이 시스템 퍼포먼스에 미치는 영향 (0) | 2008.04.23 |
adduser 명령어 기본사용법 (0) | 2008.04.18 |
지메일보다 편하다! 파이어폭스 플러그인 Xoopit (0) | 2008.04.04 |
- Total
- Today
- Yesterday
- 야마꼬툰
- 프리랜서로 살아남는 법
- Life News
- WDB
- wallpaper
- humor
- BadCode
- Tech News
- network
- medical
- 나비효과
- diary
- console
- 짤방 및 아이콘
- cartoon
- Network Inspector
- 막장로그
- win32
- Military
- 3D Engine
- Information Processor
- Assembly
- C#
- Reverse Engineering
- Battle
- USB Lecture
- Linux
- Embedded System
- Mabinogi
- Web Programming
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |