디스크 쿼터

Violet_Evgadn·2023년 4월 27일
0

Linux

목록 보기
21/34

디스크 쿼터

디스크 쿼터(Quota)란?

Quota를 직역하면 "한도"라는 의미를 가진다. 즉, 디스크 쿼터란 디스크 한도라는 의미를 가질 것이다.

디스크 쿼터란 파일 시스템 별로 사용자나 그룹에게 특정 기준에 따라 디스크를 할당하는 것을 말한다.

디스크 쿼터를 사용하여 사용자나 그룹별로 디스크 공간 사용을 제한할 수도 있고 파일 시스템 별로 레벨 제한을 걸 수 있어 보안적인 측면으로도 활용할 수도 있다.

이런 측면에서 디스크 쿼터는 파일 서버에 매우 유용한 방식이다.

디스크 쿼터가 필요한 이유에 대해 예시를 하나 들어보자.

서버에는 다수의 유저가 파일을 올리거나 글을 쓸 수 있다. 그런데 만약 어떤 사용자가 1TB 크기의 파일을 서버에 올렸다고 가정하자. 해당 서버를 설정할 때 작은 크기의 파일만 올린다고 가정하여 500 GiB 정도의 스펙만 할당했다면 스펙보다 더욱 큰 파일이 등록되었으므로 시스템이 마비될 것이다.

이런 상황을 방지하기 위해 파일 시스템별로 사용자나 그룹에게 디스크 할당량을 적용한 것이 디스크 쿼터인 것이다.

리눅스에서는 디스크 쿼터에 대한 제한 기준으로 "파일 크기(Blocks)"나 "파일 개수(Inodes)"를 설정한다.

파일 크기의 경우 1사람당 1GiB까지만 올릴 수 있다는 설정이고 파일 개수는 1 사람이 최대 3개 파일만 올릴 수 있다 정도의 설정이다.

디스크 쿼터 Limit 종류

Hard Limit

Hard Limit은 설정한 Limit을 넘길 경우 바로 사용자는 서버에 Write가 불가능해진다.

사용자는 서버에 Write를 할 수 없기 때문에 파일을 삭제하는 등의 방식을 통해 사용할 수 있는 공간을 늘려야 한다.

Soft Limit

Soft Limit은 설정한 Limit을 넘기더라도 사용자는 계속해서 파일 시스템에 Read/Write가 가능하다.

대신 서버는 사용자에게 경고 메시지를 띄우며 동시에 타이머를 시작한다.

이 타이머를 "Grace Time/period"라고 하는데 이 타이머의 시간이 모두 지난다면 Soft Limit에서 Hard Limit으로 변환된다.

따라서 타이머가 종료되기 전 사용자는 파일 삭제나 파일 요약, 압축 등을 통해 사용할 수 있는 공간을 늘려야 문제없이 서버에 파일을 계속해서 등록할 수 있을 것이다.


Disk Quota 구성

1. 파티션 생성 & 마운팅

사용자에게 할당하고 싶은 만큼의 용량을 가진 파티션을 생성하고 마운팅 시키자.

필자는 /dev/sdg1을 /quota에 마운팅 시켰다.

2. 쿼터를 적용할 사용자 생성

3. /etc/fstab 설정

/etc/fstab에 아래 내용을 추가해준다.

/dev/sdg1  /quota  ext4   defaults,usrjquota=aquota.user,jqfmt=vfsv0 1 2

아마 /dev/sdg1, /quota, ext4, defaults, 1, 2의 의미는 알 것이다.

리눅스 쿼터를 위해 추가로 입력해야 하는 값은 usrjquota=aquota.user,jqfmt=vfsv0 문구이다.

3. 파티션 리마운트

mount -o remount /quota

위에서 지정한 마운트 디렉터리로 리마운트 시켜주자.

/etc/fsatb 파일을 수정한 뒤 재부팅이나 리마운트를 해야 설정이 적용되기 때문이다.

4. Quota DB 생성

이젠 디스크 쿼터 설정 정보를 저장할 파일을 만들어야 한다.

이를 위해 입력해야 하는 명령어는 아래와 같다.

# Quota 관련 파일 생성
touch aquota.user

# 관리자만 설정 파일에 접근할 수 있도록 설정
chmod 600 aquota.user

# Quota 지정이 가능한지 확인
quotacheck -augmn

# 디스크 쿼터 On
quotaon -avug

5. 사용자별로 공간(쿼터) 할당

edquota -u [사용자 Username]

필자는 위에서 생성한 "user1"에게 할당할 것이므로 edquota -u user1을 입력할 것이다.

  • Filesystem : 쿼터를 적용할 파티션
  • blocks : 현재 사용자(user1)가 사용하는 블록(KB)
  • inodes : 현재 사용자(user1)가 사용하는 파일 개수
  • soft, hard : Blocks나 Inodes에 대한 소프트 한도와 하드 한도
    • blocks 옆에 있는 soft와 hard는 Block에 대한 한도, inodes 옆에 있는 soft와 hard는 Inodes에 대한 한도

필자는 Blocks 중 soft에 10240(10MB), hard에 20480(20MB)을 할당해 보겠다.

이후 "ctrl + X"키를 누른 뒤 "Y"를 통해 저장하고 엔터를 눌러주면 설정 사항이 적용된다.

6. 쿼터 설정을 한 사용자로 로그인 & 확인

이젠 쿼터 설정을 한 사용자로 로그인해 보자.

이후 파일 하나를 만들어준 뒤 "quota" 명령어를 통해 디스크 쿼터 설정이 제대로 적용되었는지 확인해 보자.

정상적으로 적용되었음을 확인할 수 있다.

혹시 모르니 다시 root 계정으로 접속한 뒤 "repquota -a" 명령을 통해 설정이 제대로 적용되었는지 확인해 보자.

성공적으로 적용되었다.

7. 20480(20MB)을 넘기는 파일 저장해 보기

필자는 user1 사용자로 접속한 후 "/boot/initrd.img-5.15.0-58-generic"라는 파일을 복사하여 20MB를 넘기는 파일을 저장해 보겠다.

"Disk quota exceeded". 즉 설정한 디스크 할당량을 넘긴 파일을 저장하려 했으므로 파일을 복사하지 못했음을 확인할 수 있다.

Userquota들의 Gracetime 설정 변경

edquota -ut

기본 설정은 Block & Inode 모두 7일로 되어 있지만 사용자가 원하는 기간으로 재설정할 수 있다.

profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글