샤브의 블로그 RSS 태그 관리 글쓰기 방명록
fsck (2)
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
2010-09-01 00:52:06

Name

    fsck– 파일 시스템을 점검하고 고친다.

Synopsis

    fsck [-F FSType] [-m] [-V] [-v] [special]...
    fsck [-F FSType] [-n | N | y | Y] [-V] [-v] 
         [-o FSType-specific-options] [special]...

Description

    fsck audits and interactively repairs inconsistent file system conditions. If the file system is inconsistent the default action for each correction is to wait for the user to respond yes or no. If the user does not have write permission fsck defaults to a no action. Some corrective actions will result in loss of data. The amount and severity of data loss can be determined from the diagnostic output.

    FSType-specific-options are options specified in a comma-separated (with no intervening spaces) list of options or keyword-attribute pairs for interpretation by the FSType-specific module of the command.

    special represents the character special device on which the file system resides, for example, /dev/rdsk/c1t0d0s7. Note: the character special device, not the block special device, should be used. fsck will not work if the block device is mounted.

    If no special device is specified fsck checks the file systems listed in /etc/vfstab. Those entries in /etc/vfstab which have a character special device entry in the fsckdev field and have a non-zero numeric entry in the fsckpass field will be checked. Specifying -F FSType limits the file systems to be checked to those of the type indicated.

    If special is specified, but -F is not, the file system type will be determined by looking for a matching entry in /etc/vfstab. If no entry is found, the default local file system type specified in /etc/default/fs will be used.

    If a file system type supports parallel checking, for example, ufs, some file systems eligible for checking may be checked in parallel. Consult the file system-specific man page (for example, fsck_ufs(1M)) for more information.

Options

    The following generic options are supported:

    -F FSType

    Specify the file system type on which to operate.

    -m

    Check but do not repair. This option checks that the file system is suitable for mounting, returning the appropriate exit status. If the file system is ready for mounting, fsck displays a message such as:


    ufs fsck: sanity check: /dev/rdsk/c0t3d0s1 okay
    -n | -N

    Assume a no response to all questions asked by fsck; do not open the file system for writing.

    -V

    Echo the expanded command line but do not execute the command. This option may be used to verify and to validate the command line.

    -v

    Enables verbose output. Might not be supported by all filesystem-specific fsck implementations.

    -y | Y

    Assume a yes response to all questions asked by fsck.

    -o specific-options

    These specific-options can be any combination of the following separated by commas (with no intervening spaces).

    b=n

    Use block n as the super block for the file system. Block 32 is always one of the alternate super blocks. Determine the location of other super blocks by running newfs(1M) with the -Nv options specified.

    c

    If the file system is in the old (static table) format, convert it to the new (dynamic table) format. If the file system is in the new format, convert it to the old format provided the old format can support the file system configuration. In interactive mode, fsck will list the direction the conversion is to be made and ask whether the conversion should be done. If a negative answer is given, no further operations are done on the file system. In preen mode, the direction of the conversion is listed and done if possible without user interaction. Conversion in preen mode is best used when all the file systems are being converted at once. The format of a file system can be determined from the first line of output from fstyp(1M). Note: the c option is seldom used and is included only for compatibility with pre-4.1 releases. There is no guarantee that this option will be included in future releases.

    f

    Force checking of file systems regardless of the state of their super block clean flag.

    p

    Check and fix the file system non-interactively (“preen”). Exit immediately if there is a problem requiring intervention. This option is required to enable parallel file system checking.

    w

    Check writable file systems only.

Exit Status

    0

    file system is unmounted and OK

    1

    erroneous parameters are specified

    32

    file system is unmounted and needs checking (fsck -m only)

    33

    file system is already mounted

    34

    cannot stat device

    35

    a filesystem that is mounted read/write was modified – reboot

    36

    uncorrectable errors detected - terminate normally

    37

    a signal was caught during processing

    39

    uncorrectable errors detected - terminate immediately

    40

    file system is mounted read-only and is OK

Usage

    The fsck command is large file aware for UFS file systems, per the largefile(5) man page.

Files

    /etc/default/fs

    default local file system type. Default values can be set for the following flags in /etc/default/fs. For example: LOCAL=ufs.

    LOCAL

    The default partition for a command if no FSType is specified.

    /etc/vfstab

    list of default parameters for each file system

Attributes

    See attributes(5) for descriptions of the following attributes:

    ATTRIBUTE TYPE 

    ATTRIBUTE VALUE 

    Availability 

    SUNWcsu 

    Interface Stability 

    Committed 

See Also

Warnings

    The operating system buffers file system data. Running fsck on a mounted file system can cause the operating system's buffers to become out of date with respect to the disk. For this reason, the file system should be unmounted when fsck is used. If this is not possible, care should be taken that the system is quiescent and that it is rebooted immediately after fsck is run. Quite often, however, this will not be sufficient. A panic will probably occur if running fsck on a file system modifies the file system.

Notes

    This command may not be supported for all FSTypes.

    Starting with Solaris 9, fsck manages extended attribute data on the disk. (See fsattr(5) for a description of extended file attributes.) A file system with extended attributes can be mounted on versions of Solaris that are not attribute-aware (versions prior to Solaris 9), but the attributes will not be accessible and fsck will strip them from the files and place them in lost+found. Once the attributes have been stripped, the file system is completely stable on versions of Solaris that are not attribute-aware, but would be considered corrupted on attribute-aware versions. In the latter circumstance, run the attribute-aware fsck to stabilize the file system before using it in an attribute-aware environment.


'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
fsck-spec  (0) 2010.09.01
svcs– report service status  (0) 2010.09.01