쿼터를 설정하기전에 자신의 파일시스템이 어떻게 구성되었는지 알아야 합니다. 호스팅을 위한 대부분의 서버구성에서는 사용자의 홈디렉토리(/home)를 파티션을 따로 설정해두기 때문에 /home 에 대한 사용자별 용량 제한이 가능합니다.
쿼터(Quota)
파일시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것
쿼터 설치
CentOS 6.4 Minimal 버전에는 Quota 가 설치되어 있지 않다.
쿼터 설치 확인
rpm -qa quota
쿼터 설치
yum -y install quota
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
quota x86_64 1:3.17-18.el6 base 198 k
Installing for dependencies:
libnl x86_64 1.1-14.el6 base 121 k
tcp_wrappers x86_64 7.6-57.el6 base 61 k
Transaction Summary
================================================================================
Install 3 Package(s)
어디서 많이 들은 tcp_wrappers가 의존성 문제로 인해 같이 설치된다.
설치 확인
rpm -qa quota
quota-3.17-18.el6.x86_64
쿼터 설정
쿼터는 유저별 제한, 그룹별 제한이 가능하다.
1) 파일시스템에 제한여부 설정
vi /etc/fstab
UUID=216e88e1-ae53... /home ext4 defaults,usrquota 1 2
/home 을 찾아 유저별 제한을 위해 usrquota 를 추가했다. 그룹별 제한을 위해서는 grpquota 를 추가하면 된다. 아래는 /etc/fstab에 할당할 수 있는 옵션들이다.
옵션 | 적용대상 | 용도 |
---|---|---|
usrquota | 모든 유형 | 사용자 할당량 사용 |
usrjquota=filename | vfsv0 | 저널 사용자 할당량 사용(jqfmt 옵션의 스펙 및 할당량 데이터베이스 파일 이름(일반적으로 aquota.user)이 필요함) |
uquota | xfs | usrquota와 동등 |
grpquota | 모든 유형 | 그룹 할당량 사용 |
grpjquota=filename | vfsv0 | 저널 그룹 할당량 사용(jqfmt 옵션의 스펙 및 할당량 데이터베이스 파일 이름(일반적으로 aquota.group)이 필요함) |
gquota | xfs | grpquota와 동등 |
prjquota | xfs | 프로젝트 할당량 사용 |
pquota | xfs | prjquota와 동등 |
jqfmt=format | vfsv0 | usrjquota 또는 grpjquota가 지정될 때 사용된 할당량의 형식(현재는 vfsv0가 유일하게 지원되는 형식임) |
quota | vfsold, vfsv0 | usrquota와 동등 |
noquota | vfsold, vfsv0 | 할당량을 사용하지 않음 |
uqnoenforce | xfs | 사용자 할당량 계산을 사용하지만 적용하지는 않음 |
gqnoenforce | xfs | 그룹 할당량 계산을 사용하지만 적용하지는 않음 |
pqnoenforce | xfs | 프로젝트 할당량 계산을 사용하지만 적용하지는 않음 |
2) 설정 적용을 위해 재부팅하거나 다시 마운트한다.
mount -o remount /home
마운트 확인
mount
/dev/sda1 on /home type ext4 (rw,usrquota)
3) 쿼터 DB 생성
쿼터를 사용하기 위해서는 쿼터 DB가 필요한데 이를 위해 aquota.user(유저별 제한) 파일을 해당 파일시스템의 루트 디렉토리에 생성해야 한다. 그룹별 쿼터설정 파일은 aquota.group 이다.
cd /home && touch aquota.user
보안을 위해 소유자(root)외에는 접근하지 못하도록 한다.
chmod 600 aquota.user
쿼터의 적용을 위해 현재 상태를 체크한다.
quotacheck -avug
옵션은 아래와 같다.
- a : /etc/mtab에 있는 모든 마운트된 파일 시스템 검사(NFS 파일 시스템 제외)
- v : 상세 출력
- u : 사용자 할당량 검사(기본값 임)
- g : 그룹 할당량 검사
- c : 기존 할당량(ex.aquota.user) 파일 무시(새로운 스캔을 실행하여 결과를 디스크에 씀)
* 쿼터체크를 실행시 아래와 같은 에러 메세지가 나온다면 주의하자
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
에러 해결)
/dev/sda1에 있는 ext4 파일 시스템에 대해 /etc/fstab의 옵션을 defaults,usrquota에서 defaults,usrjquota=aquota.user,jqfmt=vfsv0로 변경하여 이를 수행한다.
그룹은 grpjquota=aquota.group로 추가
4) 쿼터 시작
quotaon -avug
/dev/sda1 [/home]: user quotas turned on
쿼터 종료
quotaoff -avug or guotaoff /home
5) 쿼터 현재 상황
repquota -a
*** Report for user quotas on device /dev/sda1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
nestgoer -- 40 0 0 10 0 0
- used : 현재 사용량
- soft : 현재 설정된 soft limit
- hard : 현재 설정된 hard limit
- grace : soft limit에 지정된 용량 초과시 남은 유예 기간 표시
아래와 같이 특정 시스템파일을 지정할 수 도 있다.
repquota /home
특정 사용자의 quota설정을 확인
quota -v nestgoer
Disk quotas for user nestgoer (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda1 40 0 0 10 0 0
quota(=soft), limit(=hard)
quota를 넘는 양의 용량을 사용하면 grace 에 남은 날짜를 표기하게 되며 quota를 넘어선 용량은 grace 기간동안만 사용할 수 있게 된다. 기간이 지나면 quota를 넘어선 용량은 자동 삭제된다.
6) 쿼터 설정
쿼터를 설정하는 명령어는 edquota 이다.
유예기간 설정
edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sda1 7days 7days
단위는 second, minutes, hours, days를 사용한다.
사용자의 용량 제한
edquota -u nestgoer
Disk quotas for user nestgoer (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 40 0 0 10 0 0
단위는 기본 kbytes 이다.
- Filesystem : quota를 적용할 파일 시스템
- blocks : 현재 유저의 총 사용량
- soft : blocks이 지정한 용량을 초과하면 경고 (0일때는 제한이 없다는 것)
- hard : blocks이 지정한 용량을 초과하면 쓰기 금지 (0일때는 제한이 없다는 것)
- inodes : 현재 유저의 파일의 갯수
- soft : inodes가 지정한 파일수를 초과하면 경고 (0일때는 제한이 없다는 것)
- hard : inodes가 지정한 파일수를 초과하면 쓰기 금지 (0일때는 제한이 없다는 것)
편집 방법은 vi를 사용하듯 사용하면 되고 10240kb(10mb)와 같은 값을 넣어주면 된다.
qroup에 quota를 설정하는 방법은 다음과 같이 한다.
edquota -g 그룹이름
* 웹호스팅시에 유저들을 매번 설정하기 힘드니 각 상황별 몇명의 기준이 되는 유저를 생성해서 quota를 설정해 두고
edquota -p nestgoer -u user10
위와 같은 명령어로 quota를 복사해 새로 추가하는 사용자들의 quota를 설정할 수 있다.
edquota -p nestgoer user1 user2 user3 ...
위와 같은 명령어는 여러명을 동시에 설정한다.
7) 시스템 재부팅시에 쿼터 체크
vi /etc/rc.d/rc.local
#quotaon을 하기전에 quotacheck로 체크를 합니다.
if [-x/usr/sbin/quotacheck]
then
echo "Checking quotas. This may take some time."
/usr/sbin/quotacheck-avug
echo "Done."
fi
#quotacheck를 마치고나서 quotaon을 합니다.
if [-x/usr/sbin/quotaon]
then
echo "Turning on quota."
/usr/sbin/quotaon-avug
fi
부팅 시 vfsv0 할당량 검사하기
quotacheck 및 quotaon 명령은 일반적으로 초기화 스크립트에 포함되어 있기 때문에 시스템을 다시 부팅할 때마다 할당량이 활성화된다. 저널 할당량을 사용하는 경우에는 부팅 시 quotacheck를 실행하지 않아도 된다.
8) cron 시스템 예약
우선 실행파일 하나를 하나 만든다.
vi /root/crons/quotachk.sh
#!/bin/bash
/sbin/quotaoff -auvg
/sbin/quotacheck -auvg
/sbin/quotaon -auvg
crontab에 등록한다.
crontab -e
# quota weekly check
0 5 * * 1 /root/crons/quotachk.sh
크론 등록 확인
crontab -l
9) 사용자에게 경고하기
warnquota 명령은 할당량을 초과하는 사용자에게 이메일 경고를 전송하는 데 시용된다. 그룹이 할당량을 초과하면 /etc/quotagrpadmins에 지정된 해당 그룹의 사용자에게 이메일이 전송된다. 이메일의 형식은 /etc/warnquota.conf 파일에 의해 제어된다. /etc/quotatab 파일은 /dev/sda1과 같은 이름을 "Shared EXT3 filesystem"과 같이 사용자에게 더 친숙한 설명에 맵핑하는 데 사용된다. 일반적으로 warnquota는 cron 작업으로 주기적으로 실행된다.
warnquota는 soft에 해당하는 제한사항을 넘어섰을때 작동한다.
vi /etc/warnquota.conf
'리눅스 > CentOS' 카테고리의 다른 글
[CentOS] mail - 리눅스서버 자체의 메일클라이언트 (1) | 2013.06.25 |
---|---|
[CentOS] Partition 1 does not end on cylinder boundary ( 파티션 1은 실린더 경계에서... (0) | 2013.06.20 |
[CentOS] sudo 를 이용한 특정 권한 부여하기 (1) | 2013.06.06 |
[CentOS] 시간 동기화 - rdate (0) | 2013.05.31 |
[CentOS] NTP 시간 동기화 (7) | 2013.05.30 |