from digix.new21.net
http://linux.nim.to

1. quota란 무엇인가?

"Quota"는 "몫"이나 "할당"의 뜻을 가졌다.
그 뜻만 봐도 무엇을 하는 프로그램인가는 대강 알 수 있을 것이다.
천리안이나 다른 호스트에게서 웹서비스나 ftp서비스를 받고 있다면
자신이 호스트의 디스크에 얼마나 사용할 수 있을것인지 잘 알고
있을 것이다.
한 마디로 정의 한다면 "사용자의 디스크 사용량을 제한한다"고 말할
수 있다.
이 기능은 대형서버를 관리할 때는 반드시 필요할 것이다.

2.리눅스에서 quota 설정

현재 엑셀 리눅스와 다른 배포본(커널 2.X이상)에서는 기본적으로
quota가 깔려져 있다.
부팅시 "Turning on user and group quotas for local filesystems"
라는 메세지를 볼 수 있을 것이다. 만약 이런 메세지가 나오지 않거나
quota가 깔려 있지 않다면 kldp나 Howto문서를 보고 설치 하길 바란다.

먼저 quota가 작동하는 파티션을 결정해야 한다.
/etc/fstab 파일을 수정한다.

quota가 작동되기 전의 fstab 파일
--------------------------------------------------------------
/dev/hda5 / ext2 defaults 1 1
/dev/hda6 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
/dev/hda1 /mnt/win vfat defaults 0 0
--------------------------------------------------------------

quota를 작동시키고 싶은 파티션에 다음과 같이 "usrquota"를 추가한다.

--------------------------------------------------------------
/dev/hda5 / ext2 defaults,usrquota 1 1
/dev/hda6 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
/dev/hda1 /mnt/win vfat defaults 0 0
--------------------------------------------------------------

위의 파티션은 사용자 각각 다 틀릴것이다. 쉽게 생각해서 quota를 주고
싶은 파티션의 "defaults" 옆에 "usrquota"만 적으면 된다. 그러나
여기서 알아 두어야 할점은 quota는 ext2파일 시스템에서만 동작한다.

두번째로 해야 할 것은 quota 기록파일인 "quota.user를 만드는 것이다.
vi로 내용없이 파일을 만들거나 touch를 사용해서 만든다.

touch /quota.user

여기서 중요한 점은 quota를 주려는 파티션의 최상위 디렉토리에 quota.user
파일을 만들어야한다. 이것도 간단히 생각한다면 fstab의 마운트 포인터
에 이 파일을 만들면 된다.
그리고 root이외에 누구도 읽거나 기록할 수 없도록 하기위해 모드를
바꾼다.

chmod 600 /quota.user

이제 /etc/fstab에서 usrquota가 있는 파티션 체크를 하면 기본 설정은
다 되었다.

quotacheck -avug

Scanning /dev/hda5 [/] done

Checked 3972 directories and 74569 files
Using quotafile /quota.user

이제 위의 설정을 반영시키기 위해 quota를 재시동 한다.

quotaoff -avug
quotaon -avug

여기서 -avug라는 옵션은 /etc/fstab 에 있는 모든 파일 시스템을 일반
유저와 그룹유저 들의 quota를 말하는 것이다.(보통 모든 옵을 다쓴다.)

2. 사용자들에게 할당량 부여하기

사용자에게 디스크 사용량을 제한하기 위해 쓰는 명령으로 edquota
(edit quota 란 뜻)가 있다.

Usage: edquota [-u] [-p username] username ...
edquota -g [-p groupname] groupname ...
edquota [-u] -t
edquota -g -t

?edquota song"라 입력하면 vi edit가 뜨면서 아래와 같은
내용이 나온다.
-----------------------------------------------------------
Quotas for group song:
/dev/hda5: blocks in use: 228, limits (soft = 0, hard = 0)
inodes in use: 113, limits (soft = 0, hard = 0)
-------------------------------------------------------------

여기서 기본적인 soft limits, hard limits, Grace Period에 대해 알
아야 할 것이다.

-Soft Limit

일반적으로 soft limit는 한 사용자가 사용할 수 있는 최대 용량을 가리킨다.
그러나 유예 기간(grace period) 내에 있어서는 사용자는 사용용량 초과에
대해서 경고를 받게되는 경계선처럼 동작한다.

-Hard Limit

hard limit는 유예 기간(grace period)이 설정되어 있을때에만 동작한다.
유예기간이 없다면 soft limit와 hard limit와 의 차이가 없음을 곧 알게
된다.
이것은 디스크의 최대 사용용량을 의미한다.
즉, 사용자는 hard limit 용량 이상을 사용할 수 없다.

-Grace Period (옵션 사항이다)

유예 기간은 사용자의 사용 용량이 soft limit용량을 넘은 후부터
적용되는 시간 제한이다.
시간은 sec(onds), min(utes), hour(s), day(s), week(s), month(s) 단위로
사용할 수 있다.
"edquota -t"명령을 실행하면 유예 기간을 보거나 수정할수 있다.
( vi형태로 되어 수정 가능)
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

다시 위로 올라가서 edquota의 내용중에

blocks in use: 228 -->사용자가 사용중인 한 파티션의 총 블럭( 1
block=1024 byte)을
? 현재 song는 228 block을 쓰고 있다.
( 현재 soft=0은 quota가 없다는 뜻 )

inodes in use: 113 -->사용자가 사용중인 전체 화일의 개수이다.

위의 내용은 지금 soft와 hard에서 0값은 quota가 지정 되어 있지 않다는 뜻이
다.
사용자가 적당히 조절하기 바란다.

대형시스템에서는 사용자가 몇천명씩 있을 것이다. 그러나 그 많은 유저
를 위와 같이 지정해준다는 것은 엄청난 일일것이다.
일련의 사용자를 그룹으로 묶고 quota를 그 그룹에게 준다면 문제는 해결된
다.

그룹에게 quota를 주는 것도 일반 계정의 사용자에게 주는 것과 흡사하다.
/etc/fstab 파일에 usrquota대신에 grpquota를 주면 된다.
--------------------------------------------------------------
/dev/hda5 / ext2 defaults,grpquota 1 1
/dev/hda6 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
/dev/hda1 /mnt/win vfat defaults 0 0
--------------------------------------------------------------
또 quota를 실행하는 마운트 포인트에 quota.group파일을 만든다.

touch quota.group
chmod 600 /quota.group

다시 quotacheck -avug해보면 이제는
Scanning /dev/hda5 [/] done
Checked 3972 directories and 74766 files
Using quotafile /quota.user
Updating in-core user quotas
Using quotafile /quota.group
Updating in-core group quotas

아래에 첨과 다른 메세지가 나오는 것을 볼수 있을 것이다.

그룹에게 할당량을 부여하는 것도 일반 유저의 경우와 같다.

edquota -g comsarang

Quotas for group comsarang:
/dev/hda5: blocks in use: 66, limits (soft = 0, hard = 0)
inodes in use: 49, limits (soft = 0, hard = 0)


'System' 카테고리의 다른 글

하드디스크 속도 높히기  (1) 2001.08.08
로그 분석하기  (0) 2001.08.08
로그인 횟수제한  (0) 2001.08.08
로그파일 비우기  (0) 2001.08.08
레드햇 리눅스를 최신 패키지로 갱신하기  (0) 2001.08.08

+ Recent posts