quota 설치

quota 설정은 사용자의 디스크용량을 제한하기 위해 사용하는 기능으로 사용자의 불필요한 디스크사용량이나 무리한 서버사용을 줄일 수 있는 효과가 있습니다. quota 는 리눅스 설치시 기본적으로 설치가 되며 quota 설정을 적용시키기 위해 재부팅이 필요합니다. 혹시 모르니 패키지가 설치되어있는지 다음과 같은 명령어로 확인을 해봅니다.

# rpm -qa | grep quota

설치가 필요하다면 다음의 명령어로 설치할 수 있습니다.

 # yum -y install quota
 또는...
 # rpm -Uvh quota-version.i386.rpm

quota 설정을 추가하기 위해 /etc/fstab 파일에 아래 내용을 추가해 줍니다.

/dev/hda6 /home ext2 defaults,usrquota 1 2

/dev/hda6 은 파일시스템경로이고, /home 은 사용자의 데이터가 저장되는 홈디렉토리의 예입니다. defaulits 만 기재되는 파티션 정보란에 usrquota 라는 설정정보가 포함되어 있지만 사용자가 아닌 그룹으로 하려면 grpquota 로 설정하면 됩니다.

파티션에 설정에 관한 내용을 기재하였으므로 이제 설정을 마무리하기 위해 최상위 디렉토리 /home 디렉토리에 quota.user 파일을 생성하여야 합니다. 다음과 같은 명령어로 파일을 생성합니다.

 [root@admin] cd /home

 [root@admin /home] touch quota.user
 [root@admin /home] chmod 600 quota.user

 [root@admin /home] ls -l

처음 quota 파일은 아무 내용이 없으며 실행권한은 600 으로 하고, root 사용자만 자료 변경권한을 주도록 합니다. test 는 사용자 아이디입니다. 이제 설정을 완료하였으므로 서버를 재부팅시켜 줍니다.


quota 설정

설정기능은 3가지 명령어로 설정작업을 할 수 있는데, 내용은 다음과 같습니다.

  • edquota : 사용자별 디스크 사용공간을 제한하는 기능
  • quotacheck : 실제 설정의 내용을 반영시키기위한 명령어
  • repquota : 실제 사용자에게 디스크사용제한이 어떻게 제한되고 있는지를 확인하는 명령어

edquote 명령어로 디스크공간을 제한되도록 디스크공간을 설정하여 줍니다. 처음 한 계정에 대한 설정을 등록해주면 다른 계정에 동일한 설정값을 쉽게 설정해 줄 수 있습니다.

 # edquota -u test1

다음 그림은 명령 수행후 사용자 용량 설정 그림입니다. soft 는 실제 디스크 용량의 제한을 나타내는 크기이고, 이 용량을 넘을 경우 일정 기간동안 경고 메시지를 출력합니다. 또한 기간이 경과하면 자료의 손실이 발생하므로 이전에 자료를 정리할 필요가 있습니다.

hard 는 시간제한사항이 설정되면 적용되는 제한사항으로 디스크 최대용량이 표시됩니다. 단위는 kb 이므로 2048은 2mb 가 됩니다.

 Quotas for user test1:
 /dev/hda6: blocks in use: 20, limits (soft = 2048, hard = 4096)
 inodes in use: 1887, limits (soft = 100, hard = 200)
 ~
 ~
 "/tmp/EdP.aDI2bkQ" 3 lines, 139 characters written


 blocks in use: 20                     현재사용 디스크량(Kbyte)

 soft = 0 soft limit(block)            최대 디스크용량

 hard = 50000 hard limit(block)   최대 디스크용량의 절대치

 inodes in use: 1887                 현재 inode 사용량

 soft = 0 soft limit(inode)            최대 파일(디렉토리)수

 hard = 0 hard limit(inode)         파일(디렉토리)의 절대치

다음 quota -t 옵션은 시간제한 설정을 할 수 있으며 soft, hard 제한을 구분하여 적용 가능하도록 이용됩니다.

설정은 sec(onds), min(utes), hour(s), week(s), month 단위로 표기하여 초, 분 시, 주, 달을 나타냅니다. 시간에 대한 설정 및 변경은 다음의 명령어를 사용할 수 있으며 초기 설정은 7days 입니다.

 # edquota –t
 Grace period before enforcing soft limits for users:
 /dev/hda6:  Block grace period:  7days,  file grace period:  7days

quotacheck 명령어는 설정을 반영하는 명령어입니다. 옵션은 다음과 같습니다.

  • -a 옵션: 파일 시스템 사용자의 디스크사용정보를 추가하는 옵션
  • -v 옵션: 정보를 표시
  • -u 옵션: 사용자정보를 바탕으로 파일 및 디렉토리를 찾는 옵션
  • -g 옵션: 그룹정보를 바탕으로 파일 및 디렉토리를 찾는 옵션

quotacheck -avug 옵션을 많이 사용하는데, 이 옵션으로 다음의 결과를 얻을 수 있습니다.

 # quotacheck -avug

 Scanning /home [/home] done

 Checked 6 directories and 17files

 Using quotafile /home/quota.user

 Updating in-core user quotas

위 명령어는 주기적으로 변화하는 사용자의 디스크사용량을 체크하도록 하는 명령어로 디스크정보를 반영하기 위해서는 cron 데몬에 추가하여, 주기적으로 실행하도록 하여야 합니다. 다음은 repquota -a 명령어입니다.

 # repquota -a
 *** Report for user quotas on device /dev/hda6  
 Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
 User            used    soft    hard  grace    used  soft  hard  grace
 ----------------------------------------------------------------------
 root      -- 2126544       0       0           6538     0     0       
 daemon    --  182004       0       0            248     0     0       
 nobody    --  767976       0       0           1496     0     0       
 #200      --  962324       0       0           6831     0     0       
 #502      -- 109895212     0       0         796706     0     0       
 #503      --  277896       0       0            661     0     0       
 #504      --  747108       0       0           4597     0     0       
 #505      --   73168       0       0            383     0     0       
 #506      --   46352       0       0           1255     0     0

실제 사용자에게 디스크 사용제한이 어떻게 제한되고 있는지를 보여주는 것이며 혹 동일한 조건의 용량제한을 할 경우 계속적 반복작업을 하는 것은 번거로운 것이므로 edquota -p test1 test2 test3 test4 와 같은 형식의 명령어을 사용하면 편리합니다.

 # edquota -p test1 test2 test3 test4
 # repquota -a

  *** Report for user quotas on device /dev/hda6  
 Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
 User        used       soft        hard      grace    used        soft          hard      grace
 -----------------------------------------------------------------------------------------------
 test1    --    16         0           0                  3          0             0       
 test2    --    10     10000       10240                  7      10000         10240       
 test3    --     9     10000       10240                  6      10000         10240

다음은 quota 에 v 옵션의 결과입니다.

 # quota -v test1
 Disk quotas for user test1 (uid 502): 
 Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
 /dev/hda6 109895212      0       0          796706       0       0

0 댓글