샤브의 블로그 RSS 태그 관리 글쓰기 방명록
2010-09-01 15:14:51
출처 서른.. 그 즈음에... | 쏭알
원문 http://blog.naver.com/0164624348/40004694146
디스크 사용관리...

여기서는 정상적인 파일시스템을 유지하기 위한 방법을 알아보도록 하지여...

시스템이 정상적으로 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 사용 가능
==========================================================================================================================

'Device & Language > Solaris 10' 카테고리의 다른 글

Hardware Diagnostics for Sun Systems  (0) 2010.09.01
manpages section 1M: System Administration Commands  (0) 2010.09.01
솔10 svcadm  (0) 2010.09.01
svcs– report service status  (0) 2010.09.01
fsck– check and repair file systems  (0) 2010.09.01