디스크 쿼터 — 사용자·그룹별 저장 공간 제한하기
리눅스 디스크 쿼터의 Soft/Hard Limit 구조, quotacheck·edquota·repquota 명령, Grace Period, XFS 쿼터까지 실전 예제로 설명합니다.
지난 글에서 루프백 마운트로 파일을 블록 디바이스처럼 다루는 방법을 살펴봤습니다. 이번에는 디스크 쿼터(Quota) — 사용자나 그룹이 사용할 수 있는 저장 공간과 파일 수를 제한하는 기능을 알아봅니다. 공유 서버나 NAS 환경에서 특정 사용자가 디스크를 독점하지 못하도록 막는 핵심 도구입니다.
쿼터의 두 가지 한계선
쿼터에는 두 종류의 임계값이 있습니다.
Soft Limit: 이 값을 초과해도 즉시 차단하지 않습니다. 대신 경고 메시지가 표시되고 Grace Period(유예 기간, 기본 7일)가 시작됩니다. 유예 기간 안에 사용량을 줄이지 않으면 이후 쓰기 작업이 차단됩니다.
Hard Limit: 이 값은 절대 초과할 수 없습니다. 초과하는 순간 커널이 EDQUOT 에러를 반환하고 쓰기가 즉시 실패합니다. 파일 크기뿐 아니라 inode 수(파일 개수)도 별도로 제한할 수 있습니다.
쿼터 활성화 방법 (ext4 기준)
1단계: fstab에 마운트 옵션 추가
# /etc/fstab 편집
/dev/sda1 /home ext4 defaults,usrquota,grpquota 0 2
# 변경 사항 적용 (재마운트)
sudo mount -o remount /home
usrquota는 사용자 쿼터, grpquota는 그룹 쿼터를 활성화합니다. 두 옵션을 동시에 사용할 수 있습니다.
2단계: 쿼터 데이터베이스 생성
# 쿼터 파일(aquota.user, aquota.group) 생성 및 초기화
sudo quotacheck -cugm /home
# -c: 새로 생성, -u: 사용자, -g: 그룹, -m: 재마운트 없이
3단계: 쿼터 활성화
# 모든 파일시스템 쿼터 켜기
sudo quotaon -a
# 특정 경로만
sudo quotaon /home
쿼터 설정: edquota
# 특정 사용자 쿼터 편집 (vi 에디터로 열림)
sudo edquota -u alice
# 그룹 쿼터 편집
sudo edquota -g developers
# Grace Period 변경
sudo edquota -t
에디터가 열리면 다음과 같은 형식을 볼 수 있습니다.
Disk quotas for user alice (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 3276800 4194304 5242880 0 0 0
blocks는 현재 사용 중인 블록(1KB), soft와 hard는 각각 소프트/하드 한계입니다. inode도 같은 방식으로 제한합니다.
다른 사용자에게 동일한 설정 복사
# alice의 쿼터 설정을 bob, carol에게 복사
sudo edquota -p alice bob carol
쿼터 확인과 리포트
# 현재 사용자 자신의 쿼터 확인
quota
# 특정 사용자 쿼터 확인 (root만 가능)
quota -u alice
# 파일시스템 전체 리포트 (GB 단위)
repquota -s /home
# 모든 파일시스템 리포트
repquota -a
repquota 출력 예시:
User used soft hard grace used soft hard grace
root -- 16 0 0 2 0 0
alice -- 3200 4096 5120 8 0 0
bob -+ 4900 4096 5120 6days 15 0 0
-+ 표시는 soft limit를 초과해 Grace Period 카운트다운이 진행 중임을 의미합니다.
XFS 쿼터
XFS는 별도 쿼터 파일 없이 커널이 내부적으로 관리합니다. quotacheck가 필요 없고 xfs_quota 명령을 사용합니다.
# fstab: uquota,gquota 옵션 사용
/dev/sdb1 /data xfs defaults,uquota,gquota 0 2
# xfs_quota로 제한 설정
sudo xfs_quota -x -c 'limit bsoft=4g bhard=5g alice' /data
# 상태 확인
sudo xfs_quota -x -c 'report -h' /data
XFS의 프로젝트 쿼터(pquota)는 사용자 단위가 아닌 디렉터리 단위로 제한을 걸 수 있어 웹 호스팅이나 프로젝트별 용량 분리에 유용합니다.
쿼터 비활성화
# 쿼터 끄기
sudo quotaoff -a
# 특정 사용자 쿼터 제거 (0으로 설정)
sudo edquota -u alice # soft/hard를 0으로 변경
지난 글: 루프백 마운트 — 파일을 블록 디바이스로 다루기
다음 글: 심볼릭 링크의 함정 — 깨진 링크와 순환 참조 피하기
읽어주셔서 감사합니다. 😊