4일차
----------------------------------------------
sun memory
avail.
cache area : file cache <-------fix해서 쓰지말고 자동체제로 사용하자.
=========
Peseudo File System Managemnet
INDEX
______________
1. swapfs
2. tmpfs
3. fdfs
4. cachefs
5. procfs
6. mntfs
______________
썬에서 지원하는 파일시스템(Sun Support Filesystem)
- Disk-based Filsystem : UFS, pcfs, hsfs, udfs
- Ram-based Filesystem : swapfs, tmpfs, fdfs, ...
- Distributed Filesystem : NFS
0. SWAP Overview
SWAP
- 물리적 디스크내에 존재 하는 가상 메모리 공간
- 물리적 메모리의 연장 공간
스왑은 메모리 내의 데이터 페이지 또는 세그먼트를 교체하는 것이다. 스왑핑은 컴퓨터가
주기억장치보다 더 큰 프로그램이나 데이터 파일을 다룰 수 있게 하는 유용한 테크닉이다.
운영체계는 주기억장치 내에 가능한 한 많은 데이터를 복사해 넣고, 나머지는 디스크 상에
남겨둔다. 운영체계가 디스크에 있는 데이터를 필요로할 때, 주기억장치 내의 데이터 일부
를 디스크 상의 데이터와 교체한다. DOS는 스왑핑을 수행하지 않지만, OS/2, 윈도우, 유닉
스 등을 포함한 많은 운영체계들이 스왑핑을 수행한다. 스왑핑은 때로, 페이징이라고 불리
기도 한다.
유닉스 시스템에서, 스왑핑은 전체 프로세스들을 주기억장치의 안이나 또는 밖으로 옮기는
것을 말한다.
(1). SWAP Issue?
* 서버에 physical한 메모리가 부족하게 된 경우에는 메모리 증설에 대한 이슈 사항전에
잠시동안 SWAP 공간을 느림으로 해서 임시 방편적인 대처를 할 수 있다.
* 일반적으로 서버에서 SWAP 공간을 많이 쓴다는 것은 서버의 Physical한 메모리가 부족
하게 된것을 의미 한다. 하지만 이 부분의 대한 것은 서비스의 사용에 의한 Memory Leak
일 경우도 존재 한다.
* 솔라리스에서 SWAP은 반드시 Physical Memory와 같기는 해야 한다. 일반적으로 SWAP은
Physical Memory에 2배 정도가 적당하다. 그 이상이 된다면 SWP을 관리하기 위한 운영
체제의 노력이 많이 들기 때문에 적당하지 않다.
(2). Virtual Memory?
(2-1). Physical RAM
+---------------+ --------
| | A
| SWAP Files | |
| | |
+---------------+ |
| | |
| SWAP Slice | | SWAP Space
| | |
+---------------+ |
| | |
| | V
| RAM | --------
| |
| |
+---------------+
[그림] SWAP Space
1. SWAP 설정
스왑(SWAP)을 추가하는 방법은 2가지 형태가 있다. (a) 스왑파일을 추가하는 경우와
(b) 스왑파티션을 추가하는 방법이다. 또한 (a) 부팅시에 스왑을 적용하는 방법과
(b) 현재 스왑을 추가하는 방법이 있다.
- SWAP File (예: /swap/swapfile)
- SWAP Slice (예: /dev/rdsk/c0t0d0s1)
- 부팅시에 스왑추가(/etc/vfstab 파일사용)
- 현재 스왑추가 (swap 명령어 사용)
(1). 현재 SWAP 파일 추가
■ SWAP 파일 설정/해제 과정
- 큰파일 생성 (예: /swap/swapfile)
- SWAP ON (예: swap -a /swap/swapfile)
- SWAP OFF (예: swap -d /swap/swapfile)
- 큰파일 삭제 (예: rm /swap/swapfile)
(1-1) 현재 SWAP 확인
# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 136,1 16 1049312 1049312
# swap -s
total: 91824k bytes allocated + 12312k reserved = 104136k used, 813800k available
[참고] total = used ( allocated + reserved ) + available
(1-2) 스왑 파일 추가
# mkdir /swap
# cd /swap
# mkfile 50m swapfile
# ls -l
-rw------T 1 root other 50M 2월 13 11:53 swapfile
# swap -a /swap/swapfile
# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0d0s1 102,1 8 1048936 1048936
/swap/swapfile - 8 102392 102392
# swap -s
total: 28420k bytes allocated + 13224k reserved = 41644k used, 851828k available
[참고] mkfile CMD
# mkfile 10[m | k | g | b] filename
# man mkfile
(1-3) SWAP 파일 OFF 및 파일 삭제
SWAP File Delete
# swap -d /swap/swapfile
# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0d0s1 102,1 8 1048936 1048936
# swap -s
total: 28420k bytes allocated + 13224k reserved = 41644k used, 800632k available
# rm /swap/swapfile
(2) 부팅시에 SWAP 파일 추가
SWAP Add at Boot
# vi /etc/vfstab
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
.....
/dev/dsk/c0t0d0s1 - - swap - no -
.....
/swap/swapfile - - swap - no -
.....
(3). 현재 SWAP 파티션 추가
■ 스왑파티션 추가/해제 과정
- SWAP 파티션 추가 (예: format)
- SWAP ON (예: swap -a /dev/dsk/c0t1d0s0)
- SWAP OFF (예: swap -d /dev/dsk/c0t1d0s0)
- SWAP 파티션 삭제 (예: newfs /dev/rdsk/c0t1d0s0)
(3-1) 현재 스왑파티션 추가
SWAP slice Add
* Device Reconfiguration
* format(select slice)-/dev/dsk/c0t1d0s0
# swap -a /dev/dsk/c0t1d0s0
# swap -l
# swap -s
(3-2) 현재 스왑파티션 삭제/해제
SWAP Slice Delete
# swap -d /dev/dsk/c0t1d0s0
[EX] 스왑 파티션 추가(SWAP slice)
# df -k (/dev/dsk/c0t0d0s3, /data1)
# umount /data1
# swap -a /dev/dsk/c0t0d0s3
# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0d0s1 102,1 8 1048936 1048936
/dev/dsk/c0d0s3 102,3 8 1024368 1024368
# swap -s
total: 27688k bytes allocated + 13148k reserved = 40836k used, 1365016k available
# swap -d /dev/dsk/c0t0d0s3
# newfs /dev/rdsk/c0t0d0s3
# mount /data1
(4) 부팅시에 SWAP 파티션 추가
SWAP Slice Add at Boot
# vi /etc/vfstab
/dev/dsk/c0t1d0s1 - - swap - no -
[정리] SWAP Administration
■ Swap File
a) 현재 Swap On/Off
# mkfile 50m /swap/swapfile
# swap -a /swap/swapfile
# swap -d /swap/swapfile
# rm /swap/swapfile
b) 부팅시에 적용
# mkfile 50m /swap/swapfile
# vi /etc/vfstab(추가, 삭제)
# rm /swap/swapfile
■ Swap Device(Swap Slice, Swap Partition)
a) 현재적용
# format
# swap -a /dev/rdsk/c0d1s1
# swap -d /dev/rdsk/c0d1s1
# newfs /dev/rdsk/c0d1s1
b) 부팅시에 적용
# format
# vi /etc/vfstab(추가, 삭제)
# newfs /dev/rdsk/c0d1s1
[참고] 메모리 구조(Memory Structure)
■ IBM/HP/SUN Memory
■ File cache
■ Memory Leak
<IBM Memory>
=====================
Non-Computation Area
=====================
Computation Area
=====================
<HP Memory>
=====================
Availiable
File Cache
=====================
Used
=====================
<Sun Memory>
=====================
Avail.
Cache Area
=====================
Used
=====================
[참고] UNIX 메모리 확인(시스템/프로세스)
(IBM) # topas, nmon
(HP) # glance, top
(SUN) # prstat, sdtprocess
[참고] 유닉스 성능 점검 툴
- sar system activity reporter
- vmstat report virtual memory statistics
- iostat report I/O statistics
- netstat show network status
- mpstat report per-processor or per-processor-set statistics
[참고] swap CMD
2. tmpfs(Temporrary File System)
■ /tmp 디렉토리
//tmp 디렉토리 관리하는 파일 시스템 ( temporary filesystem)
# df –h 사용량
Filesystem size used avail capacity Mounted on
/dev/dsk/c0d0s0 4.8G 2.9G 1.9G 61% /
/proc 0K 0K 0K 0% /proc
mnttab 0K 0K 0K 0% /etc/mnttab
fd 0K 0K 0K 0% /dev/fd
swap 785M 88K 785M 1% /var/run
/dev/dsk/c0d0s4 469M 1.0M 421M 1% /data2
/dev/dsk/c0d0s5 469M 1.0M 421M 1% /data3
swap 785M 12K 785M 1% /tmp <----- 정보 확인 //자동관리
/dev/dsk/c0d0s6 469M 1.0M 421M 1% /data4
/dev/dsk/c0d0s7 634M 1.0M 627M 1% /export/home
# modinfo | grep tmpfs
101 feae4b18 d97c 11 1 tmpfs (filesystem for tmpfs)
* /tmp
* /var/tmp
3. fdfs(File Descriptor Filesystem) // 파일 기술자.(파일을 구별할때스는 번호)
■ /dev/fd/#(0,1,2) -- fd밑의 번호들을 관리한다.
# cd /dev/fd
# ls -l | sort -n | more
crw-rw-rw- 1 root root 191, 0 2월 14 19:06 0
crw-rw-rw- 1 root root 191, 1 2월 14 19:06 1
crw-rw-rw- 1 root root 191, 2 2월 14 19:06 2
crw-rw-rw- 1 root root 191, 3 2월 14 19:06 3
crw-rw-rw- 1 root root 191, 4 2월 14 19:06 4
crw-rw-rw- 1 root root 191, 5 2월 14 19:06 5
.....
# modinfo | grep fdfs
98 feadef25 dac 12 1 fdfs (filesystem for fd)
----------------------------
fd 설명
----------------------------
0 표준 입력
1 표준 출력
2 표준 에러
----------------------------
4. cachefs(Cache Filesystem)
■ cachefs(Cache Filesystem)
[참고] /root/docs/SystemAdminII/6_cachefs.txt
* Local Cache
* Remote Cache
5. procfs(Process Filesystem)
■ /proc 디렉토리
# admintool &
# ps
admintool's PID => 450
# ls -ld /proc/450
admintool Termination
# ls -ld /proc/450
[참고] /root/docs/Reference/Process_CMD.txt
# modinfo | grep procfs
38 fe9b0bc4 11195 5 1 procfs (filesystem for proc)
6. mntfs(Mount Filesystem)
■ /etc/mnttab : 마운트 테이블.
# cat /etc/mnttab
# mount
# df -k
# grep export /etc/mnttab :: 현재마운트 정보
# umount /export/home
# grep export /etc/mnttab
# mount /export/home
# grep export /etc/mnttab
# modinfo | grep mntfs
96 feaddea6 11d3 15 1 mntfs (mount information file system)
[참고] 원격 SWAP 마운트(Remote SWAP Usages)
1. NFS Server
■ Add the following line to /etc/dfs/dfstab:
# vi /etc/dfs/dfstab
share -F nfs -o rw=ClientA,root=ClientA /swap/swapfile
■ Run shareall(1M).
# shareall
2. NFS Client
■ Have the client add the following lines to /etc/vfstab:
# vi /etc/vfstab
ServerA:/swap/swapfile - /swap/swapfile nfs - - -
/swap/swapfile - - swap - - -
■ Have the client run mount:
# mount /swap/swapfile
■ The client can then run swap -a to add the swap space:
# swap -a /swap/swapfile
[참고] 대표적인 예
SunRay Client
Diskless Client
System Crash & Process Crash Administration
INDEX
________________
1. dumpadm CMD
2. coreadm CMD
________________
1. dumpadm CMD
솔라리스 운영체제에서 시스템 클래쉬(System Crash)가 발생하면 메모리상의 커널 영역을
파일로(Dump File 이라고 함) 저장한다. 이 파일의 분석을 통해 운영체제의 이상을 확인
하기 위해 사용될수 있다.
system crash란? 메모리들이 오동작을 해서 운영체제의 패닉상태 ex>windows의 블루스크린
메모리에 이상이생김(오동작) -> swap으로 전달 -> swap slice를 사용해서 -> disk,file로 만들어놓는다.(system crash dump)
swamp >= ram :: swap공간은 물리적공간(ram)보다 같거나 커야한다.(권장사항,기본체계)
========= HOSTA ==========
System Crash --+--> SWAP(예: /dev/dsk/c0t0d0s1)
|
+--> /var/crash/`hostname`/unix.X (X : 숫자)
/var/crash/`hostname`/vmcore.X (X : 숫자)
이어지는 내용