쿼터는 운영체제가 지원하는 선택적인 특성으로서, 한 명의 사용자 또는 한 사용자 모임(group)이 사용할 수 있는 디스크 공간의 양이나 파일의 수에 제한을 두는 것입니다. 이것은 사용자나 사용자 모임이 사용할 수 있는 자원량에 제한을 두고자하는 대부분의 시분할 시스템에서 사용됩니다. 이 방법으로 한 사용자가 디스크 공간을 모두 사용해 버리는 것을 막을 수 있습니다.
디스크 쿼터를 사용하기 전에 커널에 쿼터 사용 옵션이 설정되어 있는지 확인해야 합니다. 커널 설정 파일에 다음과 같은 줄을 추가해야 합니다.
options QUOTA
기본 GENERIC 커널은 이 옵션이 설정되어있지 않으므로 디스크 쿼터를 사용하기 위해서는 커널을 새로 빌드해야 합니다. 커널 설정에 관한 더 많은 정보를 원하시면 FreeBSD 커널 설정을 참고하시기 바랍니다.
그 다음에는 /etc/rc.conf 파일에서 디스크 쿼터를 사용가능하게 해야 합니다. 다음과 같은 줄을 추가합니다.
enable_quotas="YES"좀더 나은 관리를 위해서 사용할 수 있는 변수들이 더 있습니다. 보통 부트과정에서 quotacheck프로그램이 각 파일 시스템이 쿼터의 제한을 제대로 지키고 있는지 검사합니다. quotacheck 프로그램은 쿼터 데이터베이스에 있는 정보가 실제 파일 시스템의 정보를 올바르게 반영하고 있음을 보장합니다. 이것은 꽤 많은 시간을 소모하는 일이므로 시스템 부팅시간을 느리게 할 것입니다. 이 과정을 건너뛰고 싶다면 다음과 같은 설정을 추가합니다.
check_quotas="NO"3.2-릴리즈보다 이전 버전의 FreeBSD를 사용한다면 설정은 더 쉬워서, 단지 하나의 변수로만 구성됩니다. 여러분의 /etc/rc.conf 파일에 다음을 추가하십시오.
check_quotas="YES"마지막으로 /etc/fstab파일을 편집해야 합니다. 이 파일에서 유저쿼터만 적용하거나 그룹쿼터만 적용할 지 아니면 둘 모두 적용할 지 결정할 수 있습니다.
각 사용자에 대한 쿼터를 적용시키려면 /etc/fstab 파일에서 원하는 파일 시스템의 옵션 필드에 userquota 옵션을 추가하십시오. 예를 들자면 다음과 같습니다.
/dev/da1s2g /home ufs rw,userquota 1 2
그룹 쿼터를 적용시키려면 앞에서와 비슷하게 groupquota 옵션을 사용하면 됩니다. 유저쿼터와 그룹쿼터를 모두 적용하려면 /etc/fstab에 다음과 같이 쓰면 됩니다.
/dev/da1s2g /home ufs rw,userquota,groupquota 1 2
기본으로 디스크 쿼터에 관련된 파일은 루트 디렉토리에 quota.user와 quota.group로 저장됩니다. 두 파일은 각각 유저쿼터와 그룹쿼터에 대한 파일입니다. 더 많은 정보를 원하면 man fstab을 참고하십시오. 비록 매뉴얼 페이지에는 이 파일들을 저장하는 위치를 다르게 지정해 줄 수 있다는 말이 있더라도, 쿼터 파일들을 다른 곳에 저장하는 것은 좋지 않습니다. 쿼터 유틸리티 중에는 쿼터 파일이 루트 디렉토리에 저장되어 있지 않으면 제대로 작동하지 않는 것도 있기 때문입니다.
이제는 시스템을 새 커널로 부팅하십시오. /etc/rc 는 /etc/fstab 파일을 읽고 쿼터 파일을 만들기 위한 적절한 명령을 자동으로 실행합니다.
보통은 quotacheck, quotaon, quotaoff 같은 명령들을 수동으로 실행시킬 필요는 없습니다. 그러나 쿼터 시스템과 좀더 친숙해 지기 위해서는 이 명령들의 매뉴얼 페이지를 읽어보는 것이 좋을지도 모릅니다.
시스템에 쿼터를 설정한 다음에, 정말로 디스크 쿼터가 적용되었는지 확인하는 간단한 방법은 다음 명령을 실행하는 것입니다.
# quota -v
각각의 디스크 사용량과 현재 설정된 디스크 쿼터 제한사항(limits) 을 볼 수 있을 것입니다.
이제 여러분은 edquota 명령으로 쿼터 제한사항을 편집할 준비가 끝났습니다.
사용자나 사용자 그룹이 사용할 수 있는 디스크 사용량에 제한(block quotas)을 두거나 만들 수 있는 파일 개수에 제한(inode quotas)을 둘 수 있는 여러가지 옵션이 있습니다. 혹은 두 가지를 혼합해서 제한을 둘 수도 있습니다. 이런 각각의 제한 사항들은 엄격한 제한(hard limits)과 덜 엄격한 제한(soft limits)으로 다시 나누어집니다.
엄격한 제한은 제한사항을 넘는 것을 허용하지 않은 것입니다. 제한에 걸린 사용자는 파일 시스템에서 새로운 공간을 사용할 수 없을 것입니다. 예를 들어 사용자에게 500블럭의 엄격한 제한이 걸려 있고, 현재 사용중인 블럭이 490개라면 더 사용할 수 있는 블럭은 10개 뿐입니다. 11개의 블럭을 사용하려고 하면 실패할 것입니다.
반면에 덜 엄격한 제한을 걸어 놓으면 일정한 시간동안은 제한사항을 넘을 수 있습니다. 그 시간을 grace period라고 하며, 기본적으로 일주일로 되어 있습니다. 사용자가 제한사항을 넘긴 상태로 주어진 grace period를 넘기면, 더 이상 새로운 공간을 사용할 수 없습니다. 그러다가 제한사항 이하로 다시 돌아가면 grace peroid는 리셋됩니다.
아래에 보이는 것은 edquota 명령을 실행한 예제 입니다. edquota 명령을 실행하면 환경변수 EDITOR에 설정된 에디터(설정되지 않았을 경우는 vi) 로 쿼터 제한사항을 편집할 수 있습니다.
# edquota -u test
Quotas for user test:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)보통 쿼터가 활성화된 파일 시스템 마다 두 줄씩 보일 것입니다. 한 줄은 블럭 제한에 대한 것이고, 한 줄은 아이노드 제한에 대한 것입니다. 간단히 원하는 값을 바꾸기만 하면 쿼터 제한을 바꿀 수 있습니다. 예를들어, 이 사용자의 블럭 제한을 soft 50, hard 75에서 soft 500, hard 600으로 바꾼 것입니다. change:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
to:
/usr: blocks in use: 65, limits (soft = 500, hard = 600)
새로운 쿼터 제한은 에디터를 종료한 후에 적용됩니다.
때때로 쿼터 제한을 uid의 범위로 지정하고 싶을 때가 있을 수 있습니다. 이때는 edquota 명령을 -p 옵션과 함께 사용하면 됩니다. 일단은, 원하는 제한사항을 한 사용자에게 건 다음에, edquota -p protouser startuid-enduid 명령을 실행합니다. 예를 들어, test라는 사용자에게 설정된 제한 사항을 uid 10,000부터 19,999까지의 사용자에게 똑같이 설정하고 싶다면 다음과 같습니다.
# edquota -p test 10000-19999
더 자세한 정보를 원하시면 man edquota를 참조하십시오.
쿼터 제한과 디스크 사용량을 체크하기 위해서 quota나 repquota 명령을 사용할 수 있습니다. quota 명령은 개별적인 사용자나 그룹에 대한 정보를 체크하는데 사용될 수 있습니다. 오직 수퍼유저만 다른 사용자나 자신이 소속되지 않은 그룹의 정보를 볼 수 있습니다. repquota 명령은 쿼터가 활성화된 모든 파일 시스템의 모든 쿼터 제한과 디스크 사용량을 요약해서 보여줍니다.
아래 내용은 두 파일 시스템에 쿼터 제한을 가진 사용자의 quota -v 명령의 출력 샘플입니다.
Disk quotas for user test (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75 0 50 60위 예제에서 이 사용자는 /usr 파일 시스템에 soft limit인 50블럭보다 15블럭을 더 사용하고 있는데, grace period는 5일 남아있습니다. 별표(*)는 사용자가 쿼터 제한을 넘었다는 것을 나타냅니다.
파일 시스템에 쿼터가 활성화되어 있더라도, 전혀 사용되지 않은 파일 시스템은 quota명령에서 보이지 않습니다. -v 옵션을 주면 위의 예에서 /usr/var 처럼 사용되지 않은 파일 시스템도 보여줍니다.
쿼터는 NFS 서버에 있는 쿼터 서브시스템에 의해서 실행됩니다. rpc.rquotad(8) 데몬이 NFS 클라이언트의 quota(1) 명령과 허가된 사용자들에게 쿼터 정보를 사용가능하게 합니다.
다음과 같이 /etc/inetd.conf 파일에서 rpc.rquotad를 활성화 시킵니다.
rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad
이제 inetd를 다시 시작합니다:
# kill -HUP `cat /var/run/inetd.pid`