웹호스팅 같은 서비스를 하기위해선 사용자의 디스크 사용량을 통제할수 있어야 한다.
그 대안이 Quota이고 이 문서는 그 설정을 다루고 있다.
쿼타를 설정하기 위해선 우선 커널이 쿼타를 사용할 수 있는 상태인지 먼저 조사해야 한다.
즉, 쿼타를 사용할수 있게 커널을 컴파일해야 한다는 말이다.
커널 컴파일 문서를 확인하라.
같은버전의 특정모듈만 컴파일할 경우
# make menuconfig // “M”으로 선택
# make dep
# make clean
# make modules
# make modules_install
이전 컴파일 환경을 사용하니까 make mrproper 명령은 빼줘도 상관없다.
그리고 이미지를 만드는게 아니고 모듈만 올리는거니까 make bzImage 명령도 필요없다.
같은버전의 특정부분을 커널이미지에 추가할 경우
# make mrproper
# make menuconfig
# make dep
# make bzImage
# make modules
# make modules_install
make clean과정이 빠져있다. 즉, 기존의 obj 파일이 다 남아있다. 그리고 선택해준 “Y”부분만 컴파일하게된다.
나머지는 똑같다.
본격적인 Quota 설정
일단 먼저 /etc/fstab 파일을 편집한다.
쿼터 설정하려는 부분의 파티션 4번째 부분에 usrquota(사용자쿼타), usrgroup(그룹쿼타)
만약 쿼터설정하려는 파티션이 /home이라 가정하면, /home 파티션에 quota.user 또는 quota.group 파일을 생성하고 퍼미션을 루트만 읽고 쓸수 있게 한다.
# touch /home/quota.{user,group}
# chmod 600 /home/quota.{user,group}
그리고 시스템 시작시 실행스크립트(/etc/rc.d/rc.local)에 다음을 추가해준다.
# quotaon을 하기전에 quotacheck로 체크를 한다.
if [ -x /sbin/quotacheck ]; then
echo “Checking quotas. This may take some time.”
/sbin/quotacheck –avug
echo “Done.”
fi
# quotacheck를 마치고나서 quotaon을 한다.
if [ -x /sbin/quotaon ]; then
echo “Turning on quota”
/sbin/quotaon –avug
fi
재부팅을 하면 부팅과 동시에 쿼터체크를 하고 쿼터를 작동시킨다.
위에쓰인 옵션
-u : 사용자 -g : 그룹 -v : 쿼터가 켜진 각 파일시스템을 위한 메시지출력
쿼터를 지정한다.(edquota)
# edquota –u mars
vi모드에서 쿼타설정(mars 유저) 편집이 가능하게 된다.
아이디대신 UID도 가능하다
만일 모든 사용자에게 동일한 용량을 지정하기 위해서는 …
일단 한명의 사용자에게 쿼터를 설정한다.(위에는 mars)
# edquota –p mars `awk –F: ‘$3 > 499 {print $1}’ /etc/passwd`
해석해보면 금방 답이 나온다.
유예기간(Grace period) 설정
먼저 soft limit 와 hard limit에 대해서..
soft limit:
소프트제한은 사용자가 쓸 용량을 넘어서면 제한이 가해진다(그러니까 넘을 수는 있다는 말이다)
hard limit:
grace period가 정해졌을 때 사용할 수있다.
디스크를 완전하게 제한하는것으로 하드제한에서 제한한 디스크양 외에는 사용자가 디스크를 절대 사용할 수없다
grace period:
디스크 사용을 초,분,시간,날,주,달 등으로 사용시간을 제한할 수 있다.
변경명령은 아래와 같다.
# edquota –t
마찬가지로 vi 모드에서 편집을 하고 저장하면 적용이 된다.
Quota 정리
멀티 운영체제에서 사용자의 디스크사용제한은 필수적인 것이다.
쿼터를 작동시키기 위해선 커널옵션의 File System->quota support 항목이 체크되어 있어야한다.
/etc/fstab 부분 편집하고 /etc/rc.d/rc.local 에서 쿼터부분 스크립트를 삽입한다.
실제 쿼터 편집은 edquota로 하고 repquota로 확인할 수있다.
사용자에게 파일갯수(inode), 블록(size) 제한을 가할 수있다. edquota –u 유저(id)
grace period를 조정하기 위해선 edquota –t 로 처리한다.
쿼타를 작동시키는 명령은 quotaon이고 반대는 quotaoff 이다.
쿼터 체크를 위해선 quotacheck 명령을 사용한다.

댓글을 달아 주세요