디스크 사용관리...
여기서는 정상적인 파일시스템을 유지하기 위한 방법을 알아보도록 하지여...
시스템이 정상적으로 shutdown되지 않으면 파이시스템은 손상을 입을 수도 있고...
머...암튼 여러가지 원인으로 파일시스템이 손상될수 있음니다...
이때 사용되는 유틸리티가 fsck 입니다...
fsck 유틸리티는 다음과 같은 검사를 합니다..탭키로 구분해 놓은 것은 하위 검사 목록입니다..
super block
file system size
inode number
free block count
free inode count
inode
format and type
일반파일
디렉토리
block special
character special
심볼릭 링크
FIFO(name pipe)
socket
link count
duplicate block
bad block number
inode size
indirect block
블록이 다른 inode에 의해 이미 점유되어 있는 것
블록수가 파일 시스템 범위에 어긋난 것
data block
평범한 data block
심벌릭 링크 data block
디렉토리 data block
이렇게 4가지를 검사합니다...
super block은 파일시스템의 모든 요약 정보를 포함하고 있습니다...
이것은 가장 일반적인 파일시스템의 문제를 일으키는 요인입니다..
주의할 점은 fsck는 마운트 되어 있는 파일 시스템은 작동하지 않습니다...
fsck는 두가지 모드가 있습니다...
non_interactive
interactive
시스템이 정상적 부팅시에 non-interactive 모드로 fsck가 운영되고, 문제 발생시에는 시스템 관리자의
개입없이 repair할 수 있는 문제는 해결하고, 해결못한 문제일 경우는 fsck를 종료후, single user mode로
시스템을 올린뒤 관리자에게 interactive fsck 유틸리티를 실행하도록 요구합니다..
다음은 fsck 유틸의 사용법과 옵션입니다...
fsck [-F FSType][-V][-m][special]
fsck [-F FSType][-V][-n|Ny|Y][-o specific_options][special]
-F : 검사할 파일 시스템의 유형을 지정한다.
-Y|y : fsck 실행중 묻게 되는 모든 질문에 yes라고 한다. 이 결과로 어떤 데이타가 삭제 될 수 있다.
-N|n : fsck 실행중 묻게 되는 모든 질문에 no라고 한다.
-V : fsck가 실행되지 않고 실행 명령어를 자세히 보여준다.
-m : 파일 시스템을 검사하여 시스템의 상태값을 반환한다.
special : block 또는 caracter device를 나타낸다.
-o specific_options : b=n n번째 블록을 파일 시스템의 superblock으로 사용한다. block 32는 항상 예비 superblock이다. 다른 superblock위치는
newfs -F 로 지정해 줄 수 있다.
p : 파일 시스템에 문제를 해결하기 위한 작업을 수행하나 관리자의 개입이 요구되는 문제가 발생하면 자동으로 fsck가 종료된다.
f : force option. 파일 시스템이 clean flag상태여도 강제로 검사
여기서는 소개만 하겠슴다....머..이런 부분은 시스템 관리자의 몫으로 돌리겠슴다...
=======================================================================================================================
# fsck -V /export/home
fsck -F ufs /dev/rdsk/c0d0s7
==========================================================================================================================
이제부터 이번 단원의 주제인 디스크 사용관리를 살펴봅시다..
머....어케보면 명령어 사용법 익히는 거 같습니다만...어쩔 수 없지여...
명령어를 익혀야...머를 하던지 하니까여..
먼저...df명령어 입니다...
df명령어는 각 파일 시스템의 디스크 스페이스에 대한 정보를 보여주는 명령어 입니다..
다음은 옵션입니다..
-F : 파일시스템의 유형을 정의, 명시하지 않으면 /etc/vgstab파일로 부터 찾아 정보를 얻는다.
-a : /etc/mnttab 파일에 정의된 모든 파일 시스템을 보여준다.
-b : 사용 가능한 디스크 용량을 KB단위로 보여준다.
-e : 사용 가능한 파일의 number만 보여준다.
-k : KB단위로 파일 시스템의 정보를 보여준다.
-l : 로컬 파일 시스템의 마운트된 정보를 보여준다.
-n : 파일 시스템의 유형을 보여준다.
-o : specific_options
-i : 시스템에 마운트된 파일 시스템의 inode 사용 내역 및 정보를 보여준다.
==========================================================================================================================
# df
/ (/dev/dsk/c0d0s0 ): 1159550 블록 326014 파일
/boot (/dev/dsk/c0d0p0:boot): 17631 블록 -1 파일
/proc (/proc ): 0 블록 9920 파일
/dev/fd (fd ): 0 블록 0 파일
/etc/mnttab (mnttab ): 0 블록 0 파일
/var/run (swap ): 875856 블록 20265 파일
/tmp (swap ): 875856 블록 20265 파일
/export/home (/dev/dsk/c0d0s7 ): 4156934 블록 425930 파일
# df -b
파일시스템 가용
/dev/dsk/c0d0s0 579775
/dev/dsk/c0d0p0:boot 8815
/proc 0
fd 0
mnttab 0
swap 437928
swap 437928
/dev/dsk/c0d0s7 2078467
# df -k
파일시스템 K바이트 사용 가용 용량 설치지점
/dev/dsk/c0d0s0 1491822 912047 520103 64% /
/dev/dsk/c0d0p0:boot 10484 1669 8815 16% /boot
/proc 0 0 0 0% /proc
fd 0 0 0 0% /dev/fd
mnttab 0 0 0 0% /etc/mnttab
swap 437932 4 437928 1% /var/run
swap 441072 3144 437928 1% /tmp
/dev/dsk/c0d0s7 3723974 1645507 2041228 45% /export/home
# df -n
/ : ufs
/boot : pcfs
/proc : proc
/dev/fd : fd
/etc/mnttab : mntfs
/var/run : tmpfs
/tmp : tmpfs
/export/home : ufs
# df -F ufs -o i
파일 시스템 iused ifree %iused 마운트 위치
/dev/dsk/c0d0s0 48770 326014 13% /
/dev/dsk/c0d0s7 47414 425930 10% /export/home
==========================================================================================================================
다음은 디렉토리와 파일에서 사용하고 있는 디스크 공간을 512byte단위로 보여주는 df명령어에 대해서 살펴보겠슴다...
옵션은 다음과 같습니다..
-a : 모든 파일과 디렉토리에 의해 사용되고 있는 블록의 수를 보여준다.
-s : 디스크 사용량을 요약해서 보여준다.
-k : KB 단위로 정보를 보여준다.
==========================================================================================================================
# cd /export/home/yasi
# du
30 .
# du -k
15 .
# du -ak
1 ./.profile
1 ./sh_script
1 ./.cshrc
1 ./sample
1 ./script.csh
1 ./if1.csh
1 ./if2.csh
1 ./while.csh
1 ./foreach.csh
1 ./repeat.csh
1 ./switch.csh
1 ./ex.csh
1 ./sample.c
1 ./file2
15 .
# du -s
30 .
==========================================================================================================================
다음에 살펴볼 명령어는 ff명령어 입니다..
ff명령어는 파일 시스템의 파일들에 대한 inode number와 path name 을 제공해 줍니다..
옵션은 다음과 같습니다..
-F : 파일시스템의 유형을 명시
-V : ff 명령어를 실행하지 않고 명령어의 사용법을 보여준다.
-s : 파일의 path name 뒤에 파일의 사이즈를 바이트단위로 보여준다.
-u : 파일의 path name 뒤에 파일의 소슈자 명를 보여준다.
ff명령어의 사용예를 생략하겠습니다..
다음은 quot 명령어로 파일시스템에서 각 사용자에 의해 사용된 디스크의 사용량을 1024바이트 단위로 보여줍니다..
옵션은..
-a : 마운트된 모든 파일 시스템의 디스크 사용량을 보여준다.
-f : 파일 시스템에서 각 사용자에 의해서 사용된 디스크의 사용량과 함께 파일의 수를 보여준다.
==========================================================================================================================
# quot -a
/dev/rdsk/c0d0s0 (/):
574238 root
307878 bin
21837 daemon
3482 #100
3347 oracle
765 uucp
290 adm
167 lp
37 #101
4 #5001
2 nobody
/dev/rdsk/c0d0s7 (/export/home):
1643985 oracle
1485 root
23 yasi
13 #101
1 #100
==========================================================================================================================
우리가 보통 메일을 보내고 받고 하는 서비를 받는데...
여기서 모든 사이트는 용량제한을 해놓았습니다....
이런 식으로 솔라리스에서도 사용자에 대한 디스크 사용공간을 제한할 수 있습니다..
그 명령어는 quota입니다..
이 명령은 당연히 root 이어야 겠죠...
다음의 단계대로 하면 됩니다..
==========================================================================================================================
# vi /etc/vfstab
파일시스템 K바이트 사용 가용 용량 설치지점
/dev/dsk/c0d0s0 1491822 912047 520103 64% /
/dev/dsk/c0d0p0:boot 10484 1669 8815 16% /boot
/proc 0 0 0 0% /proc
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
#/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr ufs 1 yes -
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c0d0s1 - - swap - no -
/dev/dsk/c0d0s0 /dev/rdsk/c0d0s0 / ufs 1 no -
/dev/dsk/c0d0p0:boot - /boot pcfs - no -
/dev/dsk/c0d0s7 /dev/rdsk/c0d0s7 /export/home ufs 2 yes rq <--- 마지막 옵션에 rq(reuest quota)입력
swap - /tmp tmpfs - yes -
~
~
~
~
~
~
~
~
~
~
~
:wq
# touch /export/home/quotas -- quota를 설정할 파일 시스템에 quotas 파일을 만든다.
# chmod 600 /export/home/quotas -- root만의 읽기전용 파일을 만든다.
# quotaon -v /export/home -- quotaon 명령을 이용해서 디스크 사용 제한할 파일 시스템을 quota turn on한다.
/export/home: quotas turned on
# edquota yasi -- edquota명령을 이용해서 각 사용자의 디스크 사용량을 할당(vi 편집기 열림)
fs /export/home blocks (soft = 50, hard = 60) inodes (soft = 90, hard = 100)
~
~
~
~
~
~
:wq
# quotacheck -av -- quotacheck 명령을 이용해서 quota설정을 적용한다.
*** Checking quotas for /dev/rdsk/c0d0s7 (/export/home)
# quota -v yasi -- 설정된 quota 확인
Disk quotas for yasi (uid 1002):
Filesystem usage quota limit timeleft files quota limit timeleft
/export/home 0 50 60 0 90 100
==========================================================================================================================
다음은 edquota 명령을 했을때 나오는 각 필드의 의미이다..
fs /export/home blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0)
fs : 제한할 파일 시스템 명시
blocks : 사용을 제한할 블록수를 정의
soft = n : 블록수가 n에 도달하면 사용자에게 경고 메세지 보낸다.
hard = n : 블록수가 n에 도달하면 더 이상 사용자의 디스크 사용을 금지한다.
inode : 사용자에게 제한한 inode수
soft = n : inode수가 n 에 도달하면 경고 메세지
hard = n : Inode수가 n에 도락하면 더이상 디스크의 사용을 금지한다.
다음은 swap에 대해서 알아봅시다...
swap 은 가상메모리 공간을 의미합니다...
swap 슬라이스는 현재 프로세스를 다루기에 실제 메모리가 충분치 않을때 사용하는 가상 메모리 영역입니다..
메모리 사용에 대한 야그는 생략하고...스왑영역을 추가하고 삭제하는 방법을 알아보겠습니다..
스왑 영역의 추가/삭제/조회등은 swap 유틸리티를 사용합니다...
옵션은 다음과 같습니다..
a : 추가
d : 삭제
l : 조회
s : 요약정보
이제..스왑을 추가하고...조회하고...제거하는 것을 직접 실습해 봅시다..
스왑의 추가
==========================================================================================================================
yasicom% su -- root 유저로 로긴
Password:
# mkdir /files -- 스왑파일이 속할 디렉토리 생성
# mkfile 24m /files/swapfile -- mkfile 명령으로 스와 파일 생성(절대 경로명 적어준다... mkfile size[k|b|m] filename
# swap -a /files/swapfile -- 반드시 절대 경로명을 적어주어야 한다..
# vi /etc/vfstab
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
#/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr ufs 1 yes -
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c0d0s1 - - swap - no -
/dev/dsk/c0d0s0 /dev/rdsk/c0d0s0 / ufs 1 no -
/dev/dsk/c0d0p0:boot - /boot pcfs - no -
/dev/dsk/c0d0s7 /dev/rdsk/c0d0s7 /export/home ufs 2 yes rq
swap - /tmp tmpfs - yes -
/files/swapfile - - swap - no - <----------------------------- /etc/vfstab 화일에 지금 만든 파일을 swap이라고 명시하고 관련된 내용을 적어준다.
~
~
~
~
~
:wq
# swap -l -- 스왑에 대한 조회
swapfile dev swaplo 블록 사용 가능
/dev/dsk/c0d0s1 102,1 8 1049320 887584
/files/swapfile - 8 49144 49144
# swap -s
총: 96352k 바이트 할당 + 54380k 예약 = 150732k 사용, 461380k 사용 가능
==========================================================================================================================
스왑의 제거
==========================================================================================================================
yasicom% su -- root 유저로 로긴
Password:
# swap -d /files/swapfile
# vi /etc/vfstab
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
#/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr ufs 1 yes -
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c0d0s1 - - swap - no -
/dev/dsk/c0d0s0 /dev/rdsk/c0d0s0 / ufs 1 no -
/dev/dsk/c0d0p0:boot - /boot pcfs - no -
/dev/dsk/c0d0s7 /dev/rdsk/c0d0s7 /export/home ufs 2 yes rq
swap - /tmp tmpfs - yes -
/files/swapfile - - swap - no - <----------------------------- /etc/vfstab 화일에서 추가한 엔트리 제거
~
~
~
~
~
:wq
# rm /files/swapfile -- 스왑으로 쓰던 파일 제거
# swap -l
swapfile dev swaplo 블록 사용 가능
/dev/dsk/c0d0s1 102,1 8 1049320 887584
# swap -s
총: 96344k 바이트 할당 + 54388k 예약 = 150732k 사용, 436808k 사용 가능
==========================================================================================================================