사용자 디스크 제한 [ 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 지정을 마친다.