사용자 디스크 제한 [ quota ] – kernel 2.2.x(아랑)

다중다중 사용자 시스템이서 디스크 공간은 부족해지지 쉬운 자원이다. 한 사용자의

디스크  사용량이 너무 많아서 다른 사용자들이 원할한 사용을 못할때 관리자는

각 사용자 별로 Disk 사용 제한을 할 필요가 있다. 대표적인 경우로 웹호스팅

업체를 들수 있다.

이런 사용자별로 디스크 사용량 제한 하는 방법으론 quota 를 뽑을수 있다.

quota 를 사용하기 위해서 몇가기 갖추어야 할 조건이 있다.

먼저 quota 라는 프로그램이 서버에 설치 되어져 있어야 하고. 커널에서 지원을

해야 한다. 그런뒤 /etc/fstab 파일에 quota 의 제한을 받는 파티션을 정의 하고

난뒤에서야 원할한 디스크 사용 제한을 할수가 있다.

먼저 프로그램을 설치되어져 있는지 확인 하자.

[root@zzang911 /root]# rpm -q quota

quota-2.00pre3-2

위와 같이 나오면 이미 설치가 되어져 있는 상태다. 아무런 결과값이 없다면…

rpm 으로 설치하길 바란다.

그런뒤….menuconfig 를 통해 커널 설정에서 Filesystems 부분에 들어가면

Quota 에 관련된 항목이 있다. 체크가 되어져 있음 바로 설정만 하면

된다…체크가 안된 상황이면 체크하시고 커널을 컴파일 한다.

이제 quota 를 설정한다.

# vi /etc/fstab

/dev/hdb1       /       ext2    defaults        1 1

/dev/hdb5       /data1  ext2    nosuid          1 2

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

/dev/cdrom      /mnt/cdrom      iso9660         noauto,owner,   ro 0 0

대충 이런 식의 형식으로 되어져 있다.

만일 /dev/hdb2 파티션에 quota 를 걸고 쉽다면 위의 설정처럼 defaults

뒤에 ,usrquota 라는 설정을 추가 한다.

저장하고 나온뒤 /home 디렉토리에 quota.user 파일을 만든다.

# touch /home/quota.user

# chmod 600 /home/quota.user

이로써..설정은 끝났다…이제 전체 사용자의 qoutacheck를 한다.

/sbin/quotacheck -avug

이제 quota 를 실행 시킨다.

/sbin/quotaon -avug

이로써 quota 기능이 가동된다.  

시스템 부팅시 quota를 검사하고 작동시키기 위해 system init 스크립트

를 수정한다.

# Check quota and then turn quota on.

  if [ -x /usr/sbin/quotacheck ]

  then

      echo “Checking quotas. This may take some time.”

      /usr/sbin/quotacheck -avug

      echo ” Done.”

  fi

      if [ -x /usr/sbin/quotaon ]

  then

      echo “Turning on quota.”

      /usr/sbin/quotaon -avug

  fi

이후 시스템을 리부팅 한다. 이제 쿼터가 적용된 시스템을 볼수 있다.

사용자에게 디스크 활당하기

edquota -u 사용자계정

[root@zzang911 /root]# edquota -u alang

———————————————————-

Quotas for user alang:

/dev/hdb2: blocks in use: 1419020, limits (soft = 0, hard = 0)

inodes in use: 10691, limits (soft = 0, hard = 0)

———————————————————-

/dev/hdb2: blocks in use: 1419020, limits (soft = 0, hard = 0)

이부분의 soft 와 hard 부분을 byte 단위로 활당할 용량만큼 지정한다.

초기값이 0 으로 되어져 있는데 이는 무제한을 뜻한다.

이로서 alang 이란 사용자는 hard limit 이상의 디스크를 사용하지 못한다.

사용자의 디스크 사용량 모니터링 하기

quota -u 사용자계정

을 실행하면 quota 설정이 되어져 있으면 그 값이 출력된다.

동일한 쿼터를 여러명에서 적용시킬때는 다음과 같이 하면 간편하다.

먼저 대표적인 쿼터적용된 사용자를 하나 만든다. 그런후 다음과 같이 한다.

edquota -p quota200 -u alang muchun coza

이와 같이 하면 alang,muchun,coza 란 사용자에게 quota200 사용자와

동일한 쿼터가 적용되게 된다.

이밖에 유용한 명령어로는 repquota 가 있다. 이는 전체 사용자의 쿼터 내용을

한눈에 볼수 있다.

# repquota -a

*** Report for user quotas on device /dev/hdb2 (/home)

Block grace time: 7 days; Inode grace time: 7 days

User            used    soft    hard  grace    used  soft  hard  grace

———————————————————————-

root      —   49108       0       0            236     0     0

nobody    —    1632       0       0            272     0     0

alang     — 1531864       0       0           7493     0     0

zzang     — 1194588       0       0          21252     0     0

design    +-   42852   25000   26000  03:42     645   700   710

redhap    —  116168       0       0           7361     0     0

muchun    —   17448       0       0           2009     0     0

같이 리포팅 된다. 여기서 +- 표식가 되어져 있는것이 quota 를 넘어선 것이다.

이는 quotacheck -avug 를 해 주고 난뒤 만들어지는 quota.user DB 파일을 참조

하여 출력하는것이므로 체크전에 quotacheck 를 해주어야 정확한 정보를 얻을수

있다. 이는 cron 에 등록하고 일주일에 한번 정도 관리자가 점검하면 된다.

이로써 quota 지정을 마친다.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.