CS/Linux

[Linux] 쿼터(Quota)

kyoulho 2024. 10. 3. 14:47

쿼터(Quota)란?


쿼터는 파일 시스템에서 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 기능이다. 이를 통해 시스템 자원을 효율적으로 관리하고, 특정 사용자가 과도한 자원을 사용하는 것을 방지할 수 있다.

쿼터의 주요 기능

  • 용량 제한: 사용자 또는 그룹별로 사용할 수 있는 디스크 용량을 제한한다.
  • 파일 개수 제한: 사용자 또는 그룹이 생성할 수 있는 파일의 개수를 제한한다.
  • 공정한 자원 분배: 여러 사용자가 동시에 시스템을 사용할 때, 각 사용자에게 공평하게 자원을 분배할 수 있다.

왜 쿼터를 설정해야 할까?

파일 시스템을 루트(/) 파일 시스템으로 지정하여 모든 사용자가 이를 공유하게 되면, 다음과 같은 문제가 발생할 수 있다:

  • 성능 저하: 많은 사용자가 동시에 루트 파일 시스템을 사용하면, 서버 운영을 위한 디스크 읽기/쓰기 작업과 일반 사용자의 디스크 작업이 동시에 발생하여 전체 시스템 성능이 저하될 수 있다.
  • 자원 고갈: 특정 사용자가 과도한 디스크 용량을 사용하게 되면, 다른 사용자들이 필요한 자원을 확보하지 못할 수 있다.
  • 관리의 어려움: 사용자의 디스크 사용량을 관리하지 않으면, 예상치 못한 시점에 디스크 용량이 부족해질 수 있다.

이를 방지하기 위해, 쿼터를 설정하여 각 사용자나 그룹에게 적절한 디스크 자원을 할당하는 것이 중요하다.


쿼터 설정 단계


1. /etc/fstab 수정

먼저, 쿼터를 설정할 파일 시스템을 지정하기 위해 /etc/fstab 파일을 수정해야 한다. 이 파일은 시스템 부팅 시 자동으로 마운트 할 파일 시스템과 그 옵션을 정의한다. 예를 들어, /userHome 디렉토리에 쿼터를 설정하려면, /etc/fstab 파일을 열어 다음과 같이 수정한다

/dev/sdb1    /userHome    ext4    defaults,usrjquota=aquota.user,jqfmt=vfsv0    0    0

설정 옵션 상세 설명

  • defaults: 기본 마운트 옵션을 설정한다.
  • usrjquota=aquota.user: 사용자(User) 쿼터를 활성화하고, 쿼터 정보를 저장할 파일을 지정한다.
    • usrjquota: 사용자 쿼터를 활성화하는 옵션이다. 이는 사용자별 디스크 사용량을 제한할 수 있게 해준다.
    • =aquota.user: 사용자 쿼터 정보를 저장할 파일의 이름을 지정한다. 이 경우, aquota.user 파일에 사용자 쿼터 정보가 저장된다.
  • jqfmt=vfsv0: 쿼터 파일의 포맷을 지정한다.
    • jqfmt: 쿼터 파일 포맷을 설정하는 옵션이다.
    • =vfsv0: VFS(Virtual File System) 쿼터 포맷 버전 0을 사용하겠다는 의미이다.


2. 파일 시스템 재부팅 또는 리마운팅

/etc/fstab을 수정한 후에는 변경 사항을 적용하기 위해 파일 시스템을 다시 마운트해야 한다. 이를 위해 시스템을 재부팅하거나, 파일 시스템을 리마운트 할 수 있다.

# 리마운트
sudo mount -o remount /userHome


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

쿼터를 활성화하기 위해 데이터베이스 파일을 생성해야 한다. 이는 quotacheck 명령어를 사용하여 수행할 수 있다. quotacheck는 파일 시스템의 현재 디스크 사용량을 검사하고, 쿼터 데이터베이스 파일을 생성하거나 업데이트한다.

사용자 쿼터 데이터베이스 생성

sudo quotacheck -cum /userHome
  • 설명: /userHome 파일 시스템에 대해 사용자 쿼터 데이터베이스 파일(aquota.user)을 생성한다.
  • 동작: 현재 /userHome의 모든 파일과 디렉토리를 스캔하여 각 사용자의 디스크 사용량을 계산하고, aquota.user 파일에 저장한다.
  • -c: 쿼터 데이터베이스 파일을 생성한다. 기존 쿼터 파일을 덮어쓰고 새로 생성한다.
  • -u: 사용자 쿼터를 검사한다. 사용자별 디스크 사용량을 검사하고, aquota.user 파일을 생성 또는 업데이트한다.
  • -g: 그룹 쿼터를 검사한다. 그룹별 디스크 사용량을 검사하고, aquota.group 파일을 생성 또는 업데이트한다.
  • -m: 이미 마운트 된 파일 시스템에 대해 실행한다. 파일 시스템을 언마운트하지 않고 검사한다. 안전한 환경에서 실행해야 한다.

모든 파일 시스템에 대해 쿼터 데이터베이스 생성

sudo quotacheck -avugm
  • 설명: 시스템에 마운트된 모든 파일 시스템에 대해 사용자 및 그룹 쿼터 데이터베이스 파일을 생성한다.
  • 동작: 각 파일 시스템을 순차적으로 검사하여 사용자 및 그룹 쿼터 데이터베이스 파일(aquota.user, aquota.group)을 생성하거나 업데이트한다.
  • -a: 시스템에 마운트된 모든 파일 시스템을 대상으로 한다.
  • -v: 자세한 정보를 출력한다.
  • -u: 사용자 쿼터를 검사한다.
  • -g: 그룹 쿼터를 검사한다.
  • -m: 이미 마운트된 파일 시스템에 대해 실행한다.

주의 사항

  • quotacheck는 파일 시스템을 읽고 검사하는 작업이므로, 큰 파일 시스템에서는 시간이 오래 걸릴 수 있다.
  • -m 옵션을 사용할 때는 파일 시스템의 무결성을 유지하기 위해 가능하면 최소한의 활동이 이루어지는 시점에 실행하는 것이 좋다.


4. 쿼터 활성화

쿼터 데이터베이스 파일을 생성한 후, 실제로 쿼터를 활성화해야 한다. 이를 위해 quotaon 명령어를 사용한다. quotaon은 지정된 파일 시스템에서 쿼터 기능을 활성화한다.

특정 파일 시스템에서 쿼터 활성화

sudo quotaon /userHome
  • /userHome 파일 시스템에서 쿼터 기능을 활성화한다.
  • 시스템은 이제 해당 파일 시스템에서 설정된 사용자 및 그룹 쿼터를 적용하기 시작한다.

모든 파일 시스템에서 쿼터 활성화

sudo quotaon -av
  • 시스템에 마운트된 모든 파일 시스템에서 쿼터 기능을 활성화하고, 활성화 과정을 출력한다.
  • -a: 모든 파일 시스템에 대해 쿼터를 활성화한다.
  • -v: 활성화 과정을 자세히 출력한다.

쿼터 활성화 확인

쿼터가 제대로 활성화되었는지 확인하려면 다음 명령어를 사용할 수 있다:

sudo quotaon -p /userHome
  • -p: 지정된 파일 시스템에서 쿼터가 활성화되어 있는지 확인한다.

주의 사항

  • 쿼터를 활성화하기 전에 반드시 quotacheck를 실행하여 데이터베이스 파일을 생성해야 한다.
  • 쿼터를 비활성화하려면 quotaoff 명령어를 사용한다.


5. 개인별 쿼터 설정

이제 사용자별로 쿼터를 설정할 수 있다. 이를 위해 edquota 명령어를 사용한다. edquota는 사용자 또는 그룹의 쿼터 설정을 편집할 수 있는 명령어이다. 이 명령어를 실행하면 기본 편집기가 열리고, 쿼터 값을 설정할 수 있다.

사용자 쿼터 설정

sudo edquota testuser
  • testuser 사용자에게 쿼터를 설정한다.
  • 기본 편집기가 열리며, 다음과 같은 형식으로 쿼터를 설정할 수 있다.
Disk quotas for user testuser (uid 1001):  
Filesystem blocks soft hard inodes soft hard  
/userHome 100000 90000 100000 1000 900 1000
  • blocks: 디스크 용량 (블록 단위)
  • soft: 소프트 리밋 (초과 시 경고)
    • 사용자가 이 용량을 초과하면 경고가 발생하지만, 일정 기간 내에 사용량을 줄이지 않으면 하드 리밋이 적용된다.
  • hard: 하드 리밋 (초과 불가)
    • 사용자가 이 용량을 초과할 수 없다.
  • inodes: 파일 개수
  • soft: 소프트 리밋 (초과 시 경고)
    • 사용자가 이 파일 개수를 초과하면 경고가 발생하지만, 일정 기간 내에 파일 개수를 줄이지 않으면 하드 리밋이 적용된다.
  • hard: 하드 리밋 (초과 불가)
    • 사용자가 이 파일 개수를 초과할 수 없다.

그룹 쿼터 설정

sudo edquota -g testgroup
  • testgroup 그룹에 쿼터를 설정한다.
  • 그룹 쿼터를 설정할 수 있는 편집기가 열린다.


6. 쿼터 설정 확인

쿼터 설정이 제대로 되었는지 확인하기 위해 여러 명령어를 사용할 수 있다. 

# userHome 파일 시스템에 설정된 사용자 및 그룹 쿼터 정보를 요약하여 출력한다.
sudo repquota /userHome

# testuser 사용자의 현재 디스크 사용량과 쿼터 제한 정보를 출력한다.
quota -u testuser

# 모든 사용자의 쿼터 확인 
sudo repquota -a

# testgroup 그룹의 쿼터 사용 현황을 출력한다.
quota -g testgroup

 

7. 추가 설정 및 관리

쿼터 갱신

시스템에서 파일이나 디렉토리를 이동하거나 삭제할 경우, 쿼터 정보가 최신 상태로 유지되지 않을 수 있다. 이를 방지하기 위해 주기적으로 quotacheck를 실행하여 쿼터 데이터를 갱신할 수 있다.

쿼터 비활성화

쿼터를 더 이상 사용하지 않으려면, quotaoff 명령어를 사용하여 쿼터 기능을 비활성화할 수 있다.

# /userHome 파일 시스템에서 쿼터 기능을 비활성화한다.
sudo quotaoff /userHome

쿼터 초기화

모든 사용자와 그룹의 쿼터 설정을 초기화하려면, 쿼터 데이터베이스 파일을 삭제하고 다시 생성해야 한다.

# 기존의 쿼터 데이터베이스 파일을 삭제하고,
# quotacheck을 다시 실행하여 새로운 쿼터 데이터를 생성한 후,
# 쿼터를 다시 활성화한다.
sudo rm /userHome/aquota.user
sudo rm /userHome/aquota.group
sudo quotacheck -cum /userHome
sudo quotaon /userHome

 

728x90

'CS > Linux' 카테고리의 다른 글

[Linux] OpenSSH  (1) 2024.10.03
[Linux] 텔넷 서버  (2) 2024.10.03
[Linux] LVM(Logical Volume Manager)  (0) 2024.10.02
[Linux] RAID 문제 발생 시  (0) 2024.10.01
[Linux] /dev와 파티션 이해하기  (2) 2024.10.01