11. quota로 용량 제한

2022. 9. 25. 16:05Linux

이번에는 사용자 또는 그룹별로 사용 용량을 제한할 수 있는 quota에 대해서 알아보겠습니다.


quota를 사용하기 위해선 반드시 selinux를 disable 또는 Permissive로 설정해야 합니다.

 

quota를 yum으로 설치해주겠습니다.

# yum -y install quota

 

sdb 디스크를 파티셔닝 하고 마운트 하겠습니다.

 

다만 이런 식의 mount는 컴퓨터가 종료되면 설정이 해제됩니다.

reboot 하니 제가 했던 sdb1 마운트가 사라졌습니다.

 

영구적인 마운팅을 위해 /etc/fstab파일을 vi로 편집해 줍니다.

 

편집하고 reboot 해보면 /dev/sdb1가 mount 돼있습니다.

 

파일시스템에서 사용자 quota 를 설정하기 위해 명령어를 입력합니다.

# quotacheck -F vfsv0 -avum

 

사용자 uA의 quota 즉 용량 제한을 셋팅합니다.

# edquota -u uA

soft는 20MB, hard는 30MB로 설정합니다.

soft는 제한을 유예기간동안 허용해주는 설정입니다.

hard는 유예기간 없는 절대적인 제한입니다.

 

uA의 soft 유예기간을 설정해주겠습니다. 3일로 지정해주겠습니다.

# edquota -T -u uA

3days

 

/quota 디렉토리에 uA의 쓰기 권한을 주기 위해서 setfacl로 권한을 주겠습니다.

# setfacl -m u:uA:rwx /quota

 

우리가 셋팅한  quota 용량제한은 명령어를 통해 확인할 수 있습니다.

# repquota -avu

현재 uA는 용량을 하나도 사용하지 않았기에 숫자 0이 뜨는 모습입니다.

 

/quota 디렉토리의 quota 기능을 키겠습니다.

# quotaon /quota

 

 

사용자 uA 홈에 5M 파일을 만들어 넣겠습니다.

# dd if=/dev/zero of=/home/uA/5mb.txt bs=5M count=1

/dev/zero는 데이터는 없지만 필요한 크기의 파일을 만드는 데 사용되는 파일입니다.

 

uA 사용자로 /quota에 계속 할당을 하니까 할당량이 초과됐다면서 못쓰게 만듭니다.

그리고 soft 이상 할당하면 warning메세지를 띄워줍니다.

 

마지막으로 만들다가 실패한 /quota/uA7.txt의 용량이 0인 모습입니다.

 

 

quota 용량 상태를 확인해보니 uA가 할당된 30720을 전부 사용한 모습입니다.

그리고 grace time 즉 유예시간이 흐르는 모습입니다.


uA의 quota 용량이 조금 남은 상태로 grace time이 흘렀을 때 상황을 보겠습니다.

 

grace time이 지나니 used가 강제로 hard 용량으로 바뀝니다.


이제 quota를 꺼보겠습니다.

# quotaoff /quota

 

이제 용량제한없이 uA 사용자가 파일을 맘대로 만들어내는 것을 볼 수 있습니다.


이번에는 user 제한이 아니라 Group으로 quota를 설정해 보겠습니다.

 

/etc/fstab파일을 vi로 편집해줍니다.

 

remount 해줍니다.

# mount -o remount /quoGroup

mount 명령어로 마운트 상태 확인해 줍니다.

remount전
remount 후

 

quotacheck를 이용해서 quota database를 생성해줍니다.

# quotacheck -F vfsv0 -avugm

/quoGroup 내에 aquota.group파일이 생성된 것을 볼 수 있습니다.

 

그룹 uA에 대하여 quota를 설정하겠습니다.

# edquota -g uA

soft는 10M, hard는 20M로 설정하겠습니다.

 

유예기간은 5일로 설정하겠습니다.

# edquota -T -g uA

 

quota를 활성화시키고 테스트용 5M파일을 만들어 주겠습니다.

# quotaon /quoGroup

# dd if=/dev/zero of=/home/uA/uA.txt bs=5M count=1

# dd if=/dev/zero of=/home/uB/uB.txt bs=5M count=1

 

외부 사용자도 /quoGroup에 파일을 쓸 수 있게 setfacl 명령어를 입력했습니다.

 

quota 상태를 확인해보겠습니다.

# repquota -avg

 

이제 /quoGroup 디렉토리에 uA그룹의 사용자들로 파일을 채워보겠습니다.

 

먼저 같은 그룹의 uA가 5MB 파일을 만들어 둬서 사용자 uB로 파일 4개째 만들려는 순간 오류가 발생했습니다.

확실하게 그룹끼리 용량을 공유하는 모습입니다.


 

끝!