디스크 쿼터는 파일 시스템별로 사용자나 그룹이 점유할 수 있는 저장 공간을 제한하는 메커니즘입니다. 시스템 관리자는 이를 통해 스토리지 자원을 체계적으로 분배하고 남용을 방지할 수 있습니다.
쿼터의 핵심 개념은 다음과 같습니다.
소프트 한도(soft limit)는 경고 임계점으로, 초과 시 경고가 발생하며 정해진 유예 기간 내에 한도 이하로 줄여야 합니다.
하드 한도(hard limit)는 절대 넘을 수 없는 상한선입니다.
유예 기간(grace period)은 소프트 한도를 초과한 상태에서 하드 한도에 도달하기 전까지 허용되는 기간이며, 기본값은 7일입니다. 유예 기간이 만료되면 초과분은 자동 삭제됩니다.
쿼터 설정 파일은 활성화된 파티션의 루트에
aquota.user와
aquota.group 형태로 저장됩니다. 루트 계정은 쿼터 대상에서 제외됩니다.
쿼터 적용 대상
- usrquota: 개별 사용자 제한
- grpquota: 사용자 그룹 제한 (prjquota와 동시 사용 불가)
- prjquota: 특정 디렉터리 제한 (XFS 전용, ext 계열 미지원)
제약 항목
- inode: 생성 가능한 파일 개수 제한
- block: 사용 가능한 디스크 용량 제한
사전 준비사항
커널 지원 여부를 확인합니다.
grep -i quota /boot/config-$(uname -r)
# CONFIG_QUOTA=y 확인 필요
마운트 옵션에 쿼터 관련 설정이 포함되어야 하며, SELinux가 활성화된 경우 설정에 방해가 될 수 있으므로 비활성화를 권장합니다.
ext4 파일 시스템 쿼터 구성
마운트 설정
# 즉시 적용
mount -o remount,usrquota,grpquota /dev/sdb1 /extdata
# 영구 적용 (/etc/fstab 편집 후)
/dev/sdb1 /extdata ext4 defaults,usrquota,grpquota 0 0
mount -a
초기화 및 검증
# quota 패키지 설치
yum install -y quota
# 쿼터 데이터베이스 생성
quotacheck -avugm
# 전체 쿼터 현황 조회
repquota -avug
# 특정 마운트점 조회
repquota -vug /extdata
한도 설정
# 대화형 편집
edquota -u username
# 템플릿 계정 복사
edquota -p template_user -u new_user
# 유예 기간 조정
edquota -t
활성화/비활성화
# 쿼터 ON
quotaon -avug
# 특정 마운트점만
quotaon -ugv /extdata
# 부팅 시 자동 활성화
echo "quotaon -aug" >> /etc/rc.d/rc.local
# 쿼터 OFF
quotaoff -avug
XFS 파일 시스템 쿼터 구성
XFS는
xfs_quota 명령어를 사용하며, CentOS 7 이상에서 기본 제공됩니다. 쿼터 데이터베이스 파일을 별도로 생성하지 않습니다.
마운트 설정
XFS는
remount 없이 재마운트가 필요합니다.
umount /dev/sdb2
mount -o usrquota,grpquota /dev/sdb2 /xfsdata
# /etc/fstab 예시
/dev/sdb2 /xfsdata xfs defaults,usrquota,grpquota 0 0
xfs_quota 명령어 구조
xfs_quota -x -c "command" 마운트점
주요 서브명령어:
print: 파일 시스템 정보 출력
df: 정밀한 사용량 확인
state: 터 상태 및 유예 기간 확인
report: 설정된 한도 목록 (-ubgih 필터 적용 가능)
제어 명령어:
disable/enable: 제한 일시 해제/복원
off: 쿼터 완전 종료 (재마운트 필요)
remove: 설정 제거 (off 상태에서 실행)
사용자/그룹 한도 설정
# 사용자 쿼터
xfs_quota -x -c "limit -u bsoft=500M bhard=1G isoft=1000 ihard=2000 alice" /xfsdata
# 그룹 쿼터
xfs_quota -x -c "limit -g bsoft=2G bhard=5G isoft=5000 ihard=10000 developers" /xfsdata
프로젝트(디렉터리) 쿼터 설정
# 프로젝트 ID 매핑
echo "42:/xfsdata/projects/webapp" >> /etc/projects
echo "webapp_project:42" >> /etc/projid
# 프로젝트 초기화
xfs_quota -x -c "project -s webapp_project"
# 프로젝트 한도 설정
xfs_quota -x -c "limit -p bsoft=1G bhard=2G isoft=5000 ihard=10000 webapp_project" /xfsdata
유예 기간 설정
xfs_quota -x -c "timer -b 14days" /xfsdata # block 유예 기간
xfs_quota -x -c "timer -i 14days" /xfsdata # inode 유예 기간
XFS는 쿼터 설정 즉시 적용되며 별도의
quotaon이 필요 없습니다.
Samba 연동 환경에서의 쿼터 적용
Samba 환경에서 쿼터를 유효하게 적용하려면 사용자 인증 모드가 필수입니다. 익명 접속 시 모든 세션이
nobody로 매핑되어 쿼터의 의미가 퇴색됩니다.
구성 흐름
- 도입 기반 인증 Samba 공유 구축
- 데이터 파티션에 쿼터 활성화
- 템플릿 계정으로 기준 한도 설정
템플릿 계정 설정
xfs_quota -x -c "limit -u bsoft=950M bhard=1024M isoft=50000 ihard=100000 template_smb" /home
자동화 스크립트
신규 사용자 생성 시 자동으로 홈 디렉터리와 쿼터를 적용하는 예시입니다.
#!/bin/bash
# /usr/local/sbin/provision_smb_user.sh
target_user=$1
target_group=$2
user_home="/home/${target_user}"
if [[ ! -d "${user_home}" ]]; then
mkdir -p "${user_home}"
chown "${target_user}:${target_group}" "${user_home}"
chmod 0700 "${user_home}"
edquota -p template_smb -u "${target_user}"
fi
Samba 설정 파일에 로그인 훅을 추가합니다.
[homes]
path = /home/%U
root preexec = /usr/local/sbin/provision_smb_user.sh %U %G
쿼터 적용 체크리스트
| 단계 | ext4 | XFS |
| fstab 수정 | usrquota, grpquota | usrquota, grpquota |
| 재부팅/재마운트 | mount -o remount | umount 후 재마운트 |
| 초기화 | quotacheck -avug | 불필요 |
| 활성화 | quotaon -avug | 자동 적용 |
| 설정 편집 | edquota | xfs_quota -x -c "limit" |
| 조회 | repquota | xfs_quota -x -c "report" |
최종 적용 후
repquota 또는
xfs_quota report로 실제 설정이 반영되었는지 반드시 검증하시기 바랍니다.