본문 바로가기
리눅스/디스크 쿼터

디스크 쿼터 정의 및 지정방법

by Junior Devops Engineer 2025. 1. 9.
반응형

설명

  • 파일 시스템마다 사용자 혹은 그룹이 생성할 수 있는 파일 용량과 개수를 제한하는 것을 의미  
  • 주로 블록 단위의 용량 제한과 inode의 개수 제한 
  • 쿼터는 사용자별로, 파일 시스템별로 동작 
  • 그룹 단위로도 용량 제한이 가능
  • 디스크 자원의 과도한 사용을 방지하고 시스템 안정성을 유지하며, 효율적인 디스크 자원 관리를 위해 사용

디스크 쿼터 지정방법 

 

1. 파일 /etc/fstab에 디스크 쿼터 설정 

  • 입력 : $ cat fstab 
  • 출력 : /dev/sdb1  /QUOTA  ext4 defaults,usrjquota=aquota.user,jqfmt=vfsv0   1    2
    • /dev/sdb1 : 마운트할 디스크 파티션(블록장치) 의미 
    • /QUOTA : 디스크 파티션이 마운트될 디렉터리(마운트 포인트) 의미 
    • ext4 : 마운트할 파일 시스템 형식 
    • defaults : 기본 마운트 옵션으로 읽기/쓰기, 자동 마운트, SUID 허용 등이 포함 
    • usrjquota=aquota.user : 사용자별 저널 할당량 활성화, 데이터를 aquota.user 파일에 기록 
    • jqfmt=vfsv0 : 할당량 데이터를 기록하는 데 사용된 저널 포맷이 vfsv0임을 의미 
    • 1 : 파일 시스템 백업 여부를 의미, 1은 백업 활성화 
    • 2 : 부팅 시 파일 시스템 검사 순서 의미, 루트 파일 시스템 다음으로 검사 
옵션 적용 대상 설명 
quota fsfold, vfsv0 사용자 할당량 사용 
gquota xfs 그룹 할당량 사용 
usrquota 모든 유형  사용자 할당량 사용 
grpquota 모든 유형  그룹 할당량 사용 
usrjquota=파일명 vfsv0 저널 사용자 할당량 사용 
jqfmt 옵션의 스펙과 할당량 DB 파일명 요구 
주로 aquota.user의 파일명 사용 
grpjquota=파일명 vfsv0 저널 사용자 할당량 사용 
jqfmt 옵션의 스펙과 할당량 DB 파일명 요구 
주로 aquota.group의 파일명 사용 
jqfmt=fromat vfsv0 usrjquota 혹은 grpjquota가 지정될 때 사용된 할당량의 형식 
현재는 vfsv0만 지원 
  • fsfold: 파일 시스템 계층에서 디스크 쿼터 정보를 저장하기 위한 디렉터리 또는 파일 형식
  • vfsv0: Solaris 운영 체제에서 사용되는 디스크 쿼터 파일 형식의 초기 버전으로, VFS(Virtual File System) 계층에서 쿼터 데이터를 관리
  • xfs: 고성능 64비트 저널링 파일 시스템으로, 대규모 데이터와 고속 입출력을 효율적으로 처리하기 위해 설계
    • 비유) xfs는 도서관 사서에 비유할 수 있다. 도서관에서 책(데이터)을 빠르게 찾아주고, 대출 기록(저널링)을 꼼꼼히 남겨 문제가 생겨도 복구가능. 공간(디스크)을 체계적으로 나누어 많은 책(데이터)을 효율적으로 보관하는 기능 
  • 저널 할당량: 디스크 할당량 변경 사항을 파일 시스템 저널에 기록해 데이터 안정성과 복구를 지원하는 기능
    • 비유) 저널 할당량을 가계부로 비유할 수 있다. 어떤 사람이 디스크에 파일을 저장하거나 삭제할 때마다 가계부에 기록해 두면, 갑자기 전기가 나가도 이전까지의 저장 기록을 복원할 수 있다. 이처럼 디스크 할당량도 파일 시스템에 변경 사항을 안전하게 기록해 두는 기능
  • 저널 사용자 할당량: 사용자별 디스크 할당량을 파일 시스템 저널에 기록하여 안전하게 관리하고 복구 가능하도록 하는 기능
    • 비유) 가계부에 기록하면서 사용자가 쓸 수 있는 디스크 용량을 제한하는 것 

2. 재마운팅 실행 후 확인 

  • 입력 
    • $ monut -o remount /QUOTA
    • $ mount 
      • /QUOTA 파일 시스템을 재마운트하며, 기존 마운트 옵션에 변경 사항을 적용 
  • 출력
    • /dev/sdb1 on /QUOTA type ext4 (rw.usrjquota=aquota.user, jqfmt=vfsv0)
      • /dev/sdb1 : 실제로 마운트된 물리적 디스크 파티션 
      • on /QUOTA : /dev/sdb1 파티션이 /QUOTA라는 디렉터리에 마운트됨을 의미 
      • type ext4 : 해당 파일 시스템의 형식이 ext4임을 의미 
      • rw : 읽기/쓰기가 가능 
      • usrjquota=aquota.user : 사용자별 저널 할당량이 활성화됨, 할당량 데이터는 aquota.user 파일에 기록 
      • jqfmt=vfsv0 : 할당량 데이터를 기록하는 데 사용된 저널 포맷이 vfsv0임을 의미 

3. 마운트된 쿼트 종료 후 생성된 쿼터 파일 제거 

  • $ quotaoff -augp 
    • -a : 시스템에 마운트된 모든 파일 시스템에 대해 적용 
    • -u : 사용자 할당량 비활성화
    • -g : 그룹 할당량 비활성화 
    • -p : 현재 상태만 출력, 실행X 
  • group quota on /QUOTA (/dev/sdb1) is off 
  • user quota on /QUOTA (/dev/sdb1) is off 
    • 결과 : /QUOTA 파일 시스템에서 사용자와 그룹 할당량 비활성화됨을 출력 
  • $ quotacheck -augmn
    • -a : 모든 파일 시스템에 대해 할당량 정보 검사 
    • -u : 사용자 할당량 검사 
    • -g : 그룹 할당량 검사 
    • -m : 이미 마운트된 파일 시스템에서도 강제 검사 
    • -n : 디스크 쓰지 않고 메모리에서만 할당량 검사 
    • 결과 :  /QUOTA 파일 시스템의 사용자 및 그룹 할당량 정보 검사 
  • $ rm -rf quota.*
    • 결과 : 사용자와 그룹 할당량 데이터를 포함한 파일 (quota.user, quota,group 등)이 삭제 

4. 쿼터 데이터베이스 생성 

  • $ touch quota.user quota.group 
    • quota.user와 quota.group 파일 생성 
  • $ chmod 600 quota.*
    • quota.* 파일에 소유자만 읽기/쓰기 권한 부여 (보안상 소유자 외에는 읽거나 수정 불가) 
  • $ quotacheck -augmn 
    • -aug : 모든 파일 시스템에서 사용자, 그룹 할당량 정보 검사.
    • -m : 강제로 마운트된 시스템 확인.
    • -n : 결과를 메모리에서만 처리 
    • 결과 : quota.user와 quota.group 파일에 할당량 데이터 초기화 
  • $ quotaon -aug 
    • 사용자, 그룹 할당량을 모든 파일 시스템에 대해 활성화 
  • /dev/sdb1 [/QUOTA]: user quotas turned on 
    • /dev/sdb1 장치가 /QUOTA 디렉터리에 마운트된 파일 시스템에서 사용자 디스크 할당량 관리가 활성화됨 

5. 사용자별 쿼터 지정 

  • 입력 : $ edquota -u tester 
  • 출력 : Disk quotas for user tester (uid 1001):
      Filesystem     blocks       soft       hard     inodes     soft     hard
      /dev/sdb1         500       1000       2000         50       100       200
필드 설명
Filesystem 사용자별 쿼터를 할당하는 파일 시스템 
blocks 사용자가 현재 사용 중인 디스크 블록 수 
기본 단위는 KB 
soft 소프트 사용한도(경고 없이 허용되는 최대 블록 수) 
한 파티션에 사용자가 사용할 수 있는 최대 용량 
hard 절대 초과할 수 없는 최대 블록 수 (하드 사용한도)
inodes 사용자가 현재 사용중인 inode(파일과 디렉터리) 개수
soft 소프트 한도 초과 시 경고 발생
유예 기간 동안 초과 사용 가능  (단, 하드 한도 초과 불가) 
hard 절대 초과 불가 
하드 한도 초과 시 즉시 차단 
  • 앞의 soft, hard는 디스크 (블록) 수 정의 
  • 뒤의 soft, hard는 inode 수 정의 

6. 쿼터 현재 상황 점검 

옵션 설명
used 현재 사용량 
soft 현재 설정된 soft limit
hard 현재 설정된 hard limit
grace soft limit에 지정딘 용량 초과 시 남은 유예기간 표시

비유로 정리 

  • 디스크 쿼터 기능은 도서관에서 특정 한 사람이 책을 너무 많이 꽃아버려 다른 사람들이 공간을 사용하지 못하는 문제를 방지하기 위해, 각 사람마다 책 꽂는 수를 제한하는 기능으로 보면 됨 
  • 결국, 공정하게 디스크 자원을 분배하고 시스템 전체의 효율성 유지가능  

 

반응형

'리눅스 > 디스크 쿼터' 카테고리의 다른 글

디스크 쿼터 관련 명령어  (2) 2025.01.09

댓글