Quota로 디스크 사용량을 제어하는 방법

Quota란 무엇인가? 기본설정과 사용방법에 대한 설명

Quota는 사용자나 그룹이 가질 수 있는 파일의 수나 디스크의 용량을 제한하는 기능입니다.
예를 들어, A라는 파일시스템에 B라는 사용자의 사용량을 100GB로 제한하고 싶다면 Quota를 사용할 수 있습니다.
Quota는 시스템의 디스크 공간을 효율적으로 관리하고, 사용자나 그룹의 디스크 낭비를 방지할 수 있습니다.

Quota의 종류

Quota에는 두 가지 종류가 있습니다.
  • User Quota: 사용자별로 디스크 사용량을 제한하는 Quota입니다. usrquota라고도 합니다.
  • Group Quota: 그룹별로 디스크 사용량을 제한하는 Quota입니다. grpquota라고도 합니다.
Quota를 적용하려면, 해당 파일시스템이 Quota를 지원해야 하며, fstab 파일에 Quota 옵션을 추가해야 합니다.

Quota의 용어

Quota를 설정하거나 확인할 때, 다음과 같은 용어들을 알아야 합니다.
  • Block: 디스크의 블록 단위입니다. 보통 1KB로 계산됩니다.
  • Inode: 파일의 메타데이터를 저장하는 구조체입니다. 파일의 수를 나타냅니다.
  • Soft Limit: 경고를 주는 제한치입니다. 이 제한치를 넘으면 grace period라는 유예기간이 주어지며, 이 기간 안에 사용량을 줄여야 합니다.
  • Hard Limit: 절대적인 제한치입니다. 이 제한치를 넘으면 더 이상 파일을 생성하거나 쓸 수 없습니다.
  • Grace Period: Soft Limit을 넘었을 때 주어지는 유예기간입니다. 보통 7일로 설정됩니다.

Quota의 설정 방법

Quota를 설정하는 방법은 다음과 같습니다.
1. fstab 파일에 해당 파일시스템의 Quota 옵션을 추가합니다.
예를 들어, /data001이라는 파일시스템에 User Quota와 Group Quota를 적용하려면, 다음과 같이 수정합니다.

1
/dev/mapper/F3170_786_vg001-data001 /data001 ext3 defaults,usrquota,grpquota 0 0
cs

2. mount 명령어로 해당 파일시스템을 다시 마운트합니다.

1
mount -o remount /dev/mapper/F3170_786_vg001-data001
cs

3. quotacheck 명령어로 해당 파일시스템의 Quota 정보를 생성합니다.

1
quotacheck -cug /data001
cs

-c 옵션은 Quota 정보를 생성하는 옵션이며, -u와 -g 옵션은 User Quota와 Group Quota를 모두 생성하는 옵션입니다.
이 명령어를 실행하면, /data001 폴더 안에 aquota.user와 aquota.group이라는 파일이 생성됩니다.

4. setquota 또는 edquota 명령어로 해당 파일시스템의 Quota 제한치를 설정합니다.
setquota 명령어는 다음과 같은 형식으로 사용합니다.

1
setquota user명 soft용량 hard용량 soft갯수 hard갯수 대상파일시스템
cs

예를 들어, /data001 파일시스템에서 user1이라는 사용자의 용량을 50GB로, 갯수를 1000개로 제한하려면, 다음과 같이 입력합니다.

1
setquota user1 51200000 51200000 1000 1000 /data001
cs

edquota 명령어는 vi 편집기를 사용하여 Quota 제한치를 설정합니다.

1
edquota user1
cs

이 명령어를 실행하면, 다음과 같은 화면이 나타납니다.

1
2
3
4
Disk quotas for user user1 (uid 1001):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/mapper/F3170_786_vg001-data001
                               1024      51200000   51200000        4     1000     1000
cs

여기서 soft와 hard의 값을 원하는대로 수정하고, 저장하면 됩니다.

edquota 명령어는 -p 옵션을 사용하여 다른 사용자의 Quota 설정을 복사할 수 있습니다. 예를 들어, user2라는 사용자에게 user1의 Quota 설정을 복사하려면, 다음과 같이 입력합니다.

1
edquota -p user1 user2
cs

5. quotaon 명령어로 Quota 기능을 활성화합니다.

1
quotaon -a
cs

-a 옵션은 모든 파일시스템에 Quota 기능을 켜는 옵션입니다. 특정 파일시스템만 켜고 싶다면, 파일시스템의 이름을 입력하면 됩니다.

Quota의 확인 방법

Quota를 확인하는 방법은 다음과 같습니다.
  • repquota 명령어로 해당 파일시스템의 Quota 정보를 보여줍니다.
1
repquota /data001
cs

이 명령어를 실행하면, 다음과 같은 화면이 나타납니다.

1
2
3
4
5
6
7
8
*** Report for user quotas on device /dev/mapper/F3170_786_vg001-data001
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   1024       0       0              4     0     0       
user1     --   1024   51200000   51200000        4   1000   1000       
user2     --   1024   51200000   51200000        4   1000   1000       
cs

여기서 used는 사용량, soft와 hard는 제한치, grace는 유예기간을 나타냅니다.
  • quota 명령어로 현재 사용자의 Quota 정보를 보여줍니다.
1
quota -s
cs

-s 옵션은 용량을 KB가 아닌 MB나 GB로 보여주는 옵션입니다. 이 명령어를 실행하면, 다음과 같은 화면이 나타납니다.

1
2
3
4
Disk quotas for user user1 (uid 1001): 
     Filesystem      blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/F3170_786_vg001-data001
                     1024M*     50G     50G            4*    1000    1000       
cs
 
여기서 * 표시는 Soft Limit을 넘었다는 의미입니다.

Quota의 결론

Quota는 디스크 사용량을 제한하는 유용한 기능입니다.
Quota를 적절히 설정하고 관리하면, 시스템의 성능과 안정성을 높일 수 있습니다. 
저는 Quota가 필요한 상황이 많다고 생각합니다.
예를 들어, 공유 서버에서 여러 사용자가 파일을 생성하거나 수정할 때, Quota가 없다면 디스크 공간이 부족하거나 오버헤드가 발생할 수 있습니다. 
이 때 Quota는 디스크 사용량을 제어하는데 도움이 되는 훌륭한 도구가 되지 않을까요?
이상으로 포스팅을 마칩니다.
감사합니다.

댓글

이 블로그의 인기 게시물

crontab 설정방법과 로그 확인하는 법

Microsoft Defender 방화벽 설정 또는 해제하는 방법

한국 군비지출 세계 9위