비공개 공부방

Linux / Quota

navhawk 2005. 11. 23. 09:01
반응형
Quota mini-HOWTO


Ralf van Dooren


윤현호



v0.3, February 2005


고침과정
revision 0.3 - 2005-02-23 윤현호 (위키문서로 변환) 원본: http://wiki.kldp.org/wiki/DocbookSgml/Quota
revision 0.2 - 2002-01-23 윤현호 (번역 갱신)
revision 0.1 - 1999-09-30 이정균 (최초 번역)


이 문서는 Ralf van Dooren 에 의해 작성되었으며, 이 문서의 기본 텍스트와 설정은 Albert M.C. Tam에 의해 쓰여졌다. 이 mini-HOWTO의 초기 문서를 작성해준 그에게 깊은 감사를 느낀다. 초기 문서의 번역은 이정균님께서 하셨다. 이 문서는 GNU Free Documentation License를 따른다.



차례
Contents
1 Quota란 무엇인가?
2 리눅스에서 Quota 지원
3 리눅스에서 Quota를 사용하기 위한 요구 사항
3.1 Kernel
3.2 Quota 소프트웨어
4 리눅스에서 Quota 설정 - 1 장: 환경 설정
4.1 커널 재설정
4.2 Quota 소프트웨어 컴파일 및 설치
4.3 Quota를 검사하고 부트 시에 Quota를 작동시키기 위해 시스템 init 스크립트 수정
4.4 /etc/fstab 수정
4.5 Quota 기록 파일 "quota.user"와 "quota.group" 생성
4.6 Quota 시스템 활성화시키기
4.7 crontab에 quotacheck 추가
5 리눅스에서 Quota 설정 - 2 장: 사용자와 그룹에게 할당량 배정
5.1 특정 사용자에게 디스크 할당량 배정
5.2 특정 그룹에 디스크 할당량 배정
5.3 일련의 사용자들에게 같은 값으로 디스크 할당량 배정
5.4 Soft Limit
5.5 Hard Limit
5.6 Grace Period
6 기타 Quota 명령
6.1 Quotacheck
6.2 Repquota
6.3 Quotaon과 Quotaoff


이 문서는 비상업적인 목적으로 모든 복사본과 지원 문서에 저자와 편집자의 이름, 그리고 이 주의 사항을 포함된, 즉 문서가 수정되지 않은 상태로 사용, 복사, 배포할 수 있다. 이 문서가 유용한 글이 되기를 바라면서 배포되었으나, 표현되거나 함축된 말에 대해서 어떠한 보증은 할 수 없다. 이 문서내에 포함된 정보의 정확성을 보증하는데 모든 노력에도 불구하고, 이 문서내에 포함된 내용으로 인해 발생한 어떠한 오류나 손실에 대해 저자와 편집자 그리고 유지보수하는 사람은 어떠한 책임도 가지지 않는다.


이 문서는 리눅스 호스트의 화일시스템에서 quota를 사용하는 방법 - 사용자와 그룹에게 디스크 사용량을 부여하고, quota의 여러 명령어의 사용 방법 등 - 에 대해서 기술한다. 이 문서는 커널 2.x를 사용하는 사용자를 위한 것이다. 커널 2.4.xx의 Red Hat 7.2에서 테스트되었다. 이전 버전의 커널을 사용하는 사용자는 quota를 제대로 활용하기 위해서 업그레이드를 해야할 것이다. 에러를 발견하거나 어떤 정보가 빠져있으면 로 서슴치 말고 의견을 보내주기 바란다. 나는 감사히 여길 것이다. 한글 번역에 대한 오류가 있을 시에는 으로 의견을 보내주면 수정하겠다.



[edit]1 Quota란 무엇인가? #
Quota는 사용자나 혹은 그룹이 가질 수 있는 inode의 수, 혹은 사용자나 그룹에게 할당된 디스크 블럭의 수를 제한함으로써, 디스크 저장 장치의 사용을 제한할 수 있게 해준다. 즉, Quota는 사용자나 그룹의 디스크 사용량을 제한할 수 있는 방법을 제공해준다.


Quota의 기본 개념은 사용자가 그들에게 부여된 디스크의 제한 용량 이상으로 사용하지 못하게 하며, 시스템의 디스크 공간을 무제한적으로 사용하지 못하게 한다. Quota는 사용자 별, 파일 시스템 별로 동작된다. 한 사용자에 파일을 만들 수 있는 파일 시스템이 하나 이상이라면, 각각의 파일 시스템에 개별적으로 Quota를 설정해줘야 한다.


[edit]2 리눅스에서 Quota 지원 #
Quota 지원은 버전 1.3.8x에서부터 커널에 포함되었다. 지금은 리눅스 커널 2.0 릴리즈의 한 부분이다. 여러분의 시스템이 Quota를 지원하지 않는다면, 업그레이드하기 바란다.


현재 Quota는 ext2 화일 시스템에서만 동작한다.


[edit]3 리눅스에서 Quota를 사용하기 위한 요구 사항 #
[edit]3.1 Kernel #
커널 2.x 소스는 http://www.kernel.org 에서 구할 수 있다. 서버의 자원을 아끼기 위해 가능하면 여러분의 위치에서 가까운 곳의 미러 사이트를 이용하기 바란다. 한국의 미러 사이트는 http://www.kr.kernel.org 이다.


[edit]3.2 Quota 소프트웨어 #
여러분의 가지고 있는 리눅스 배포본에 따라, 시스템에 Quota 소프트웨어가 설치되어 있거나, 혹은 설치되어 있지 않을 수도 있다. 설치되어 있지 않다면, Quota 소프트웨어의 소스를 ftp://ftp.funet.fi/pub/Linux/tools/quota-1.31.tar.gz 에서 다운로드할 수 있다.


[edit]4 리눅스에서 Quota 설정 - 1 장: 환경 설정 #
[edit]4.1 커널 재설정 #
Quota를 지원할 수 있도록 다음과 같이 커널을 재설정한다.


Quota support (CONFIG_QUOTA) [n] y


[edit]4.2 Quota 소프트웨어 컴파일 및 설치 #
대부분의 리눅스 배포본에서는 Quota 소프트웨어가 설치되어 있거나, 쉽게 설치할 수 있다. 그렇지 않다거나, 어떻게 설치해야 하는지 모른다면, ftp://ftp.funet.fi/pub/Linux/tools/quota-1.31.tar.gz 에서 최신 버전의 Quota 소프트웨어를 다운로드할 수 있다.


Quota 소프트웨어를 컴파일하고 설치하라.


[edit]4.3 Quota를 검사하고 부트 시에 Quota를 작동시키기 위해 시스템 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


가장 좋은 방법은 /etc/fstab에 명시된 파일 시스템이 마운트된 후 항상 Quota를 켜놓는 것이다. 시스템 init 스크립트의 끝부분 또는 파일 시스템이 마운트되는 부분의 바로 뒷부분에 Quota를 켜놓는 것을 추천한다.


[edit]4.4 /etc/fstab 수정 #
일반적으로 Quota가 작동되기 전의 파티션 정보는 다음과 같다.


/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults 1 1


파일 시스템에 사용자 Quota 지원을 가능하게 하려면, "defaults" 단어 뒤, 즉 네번째 항에 "usrquota"를 추가한다. 더 자세한 정보는 fstab 매뉴얼 페이지('man fstab')를 참고하라.


/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,usrquota 1 1


파일 시스템에 그룹 Quota 기능이 필요하면, "usrquota" 대신 "grpquota"를 추가하라.


/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,grpquota 1 1


파일 시스템에 사용자 Quota와 그룹 Quota 둘다 필요하다면 다음과 같이 하면 된다.


/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1


[edit]4.5 Quota 기록 파일 "quota.user"와 "quota.group" 생성 #
quota.user와 quota.group, 이 두 Quota 기록 파일은 root 소유이어야 하고, root 이외에는 어느 누구도 읽기/쓰기 권한을 줘서는 안된다.


root로 로그인한 후, Quota를 활성화시킬 파티션의 루트 디렉토리로 이동하라. 그런 후 quota.user와 quota.group 파일을 다음과 같이 만든다.


$ touch /partition/quota.{user,group}
$ chmod 600 /partition/quota.{user,group}


[edit]4.6 Quota 시스템 활성화시키기 #
Quota 소프트웨어를 활성화시키기 위해, 여러분이 수정한 것이 영향을 미칠 수 있도록 시스템을 리부트한다.


더 좋은 방법은 여러분이 만든 시스템 init 스크립트를 실행시키는 것이다. 이것은 Quota 데이타베이스를 초기화시킬 것이다. 만약 'ls -la /partition/quota.*' 명령을 실행해보면 파일 크기가 더 이상 0 이 아니라는 것을 알게 될 것이다. 이것은 Quota가 동작하고 있다는 것을 말한다.


나중에 다른 파티션에도 Quota를 가능하게 하려면 4, 5, 6번 과정을 되풀이하면 된다.


[edit]4.7 crontab에 quotacheck 추가 #
Quotacheck는 주기적으로, 즉 일주일마다 실행되면 될 것이다. 다음 줄을 root의 crontab에 추가하라. ('crontab -e')


0 3 * * 0 /sbin/quotacheck -avug


[edit]5 리눅스에서 Quota 설정 - 2 장: 사용자와 그룹에게 할당량 배정 #
이것은 edquota 명령을 통해 행해진다. (자세한 것은 'man edquota'를 참고하기 바란다.)


[edit]5.1 특정 사용자에게 디스크 할당량 배정 #
여기 한가지 예가 있다. 만약 시스템에 로그인 아이디 bob이라는 사용자가 있고, 이 사용자의 디스크 할당량을 배정하기 위해 "edquota -u bob" 명령을 사용함으로써 vi 에디터(또는 &EDITOR 환경변수에 설정한 에디터)로 quota가 설치된 각 파티션의 bob이라는 사용자의 할당량을 수정할 수 있다.


Quotas for user bob:
/dev/hda2: blocks in use: 2594, limits (soft = 5000, hard = 6500)
inodes in use: 356, limits (soft = 1000, hard = 1500)


"blocks in use"는 한 파티션에서 사용자가 사용 중인 총 블럭(kilobyte 단위)을 의미한다.


"inodes in use"는 한 파티션에서 사용자가 사용 중인 파일의 총합이다.


[edit]5.2 특정 그룹에 디스크 할당량 배정 #
시스템에 games이라는 그룹이 있고, 이 그룹의 디스크 사용량을 제한하고 싶다면, "edquota -g games" 명령을 사용하면 된다. 그러면 vi 에디터를 이용해 games 그룹의 할당량을 수정할 수 있다.


Quotas for group games:
/dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)
inodes in use: 1454, limits (soft = 3000, hard = 4000)


[edit]5.3 일련의 사용자들에게 같은 값으로 디스크 할당량 배정 #
예를 들어 100명의 사용자의 할당량을 사용자 bob과 같은 값으로 빨리 설정하기 위해서는, 먼저 bob의 할당량 정보를 직접 수정한 후에 다음 명령을 수행하면 된다.


edquota -p bob `awk -F: '&3 > 499 {print &1}' /etc/passwd`


여기에서 csh을 사용하고 있다고 가정하며, 사용자의 UID가 500부터 시작한다고 가정하고 있다.


추가적으로 edquota에서는 Soft Limit, Hard Limit, 유예 기간(Grace Period)이라는 단어의 의미를 알아야 한다.


[edit]5.4 Soft Limit #
Soft limit는 한 파티션에서 사용자가 쓸 수 있는 최대 용량을 가리킨다. 그러나 유예 기간(grace period) 내에 있어서는 사용자는 사용 용량 초과에 대해서 경고를 받게 되는 경계선처럼 동작한다.


[edit]5.5 Hard Limit #
Hard limit는 유예 기간(grace period)이 설정되어 있을 때에만 동작한다. 이것은 디스크 사용에 있어서 절대적인 제한을 의미한다. 즉, 사용자는 hard limit 이상의 디스크 공간을 사용할 수 없다.


[edit]5.6 Grace Period #
유예 기간은 사용자의 사용 용량이 soft limit 용량을 넘은 후부터 적용되는 시간 제한이다. 시간은 sec(onds), min(utes), hour(s), day(s), week(s), month(s) 단위로 사용할 수 있다. "edquota -t" 명령을 실행하면 유예 기간을 보거나 수정할 수 있다.


Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda2: block grace period: 0 days, file grace period: 0 days


"0 days" 부분을 적당한 기간으로 바꿔준다. 개인적으로는 7일("7 days" 혹은 "1 week")로 설정해 주었다.


[edit]6 기타 Quota 명령 #
[edit]6.1 Quotacheck #
quotacheck는 파일 시스템의 디스크 사용 상태를 검색하거나 quota 기록 파일인 "quota.user" 파일을 최근의 상태로 갱신하기 위해 사용한다. quotacheck를 시스템을 부팅할 때나 정기적으로(예를 들어, 일주일에 한번) cronjob을 통해서 실행할 것을 권한다.


[edit]6.2 Repquota #
repquota는 파일 시스템의 quota를 정리해서 보여준다. 다음은 repquota가 출력하는 예제이다.


# repquota -a
Block limits File limits
User used soft hard grace used soft hard grace
root -- 175419 0 0 14679 0 0
bin -- 18000 0 0 735 0 0
uucp -- 729 0 0 23 0 0
man -- 57 0 0 10 0 0
user1 -- 13046 15360 19200 806 1500 2250
user2 -- 2838 5120 6400 377 1000 1500


[edit]6.3 Quotaon과 Quotaoff #
quotaon은 quota를 가동시킬 때 사용한다. 반대로 quotaoff는 중단시킬 때 사용한다. 실제로 이 두 화일은 비슷하다. 이것들은 시스템이 부팅되거나 중단될 때 수행된다.
반응형