본문 바로가기
서버 보안/리눅스 실습

[리눅스] 쿼터(Quota)의 개념과 실습

by 어깨 :) 2023. 5. 22.
728x90

사용자별로 공간 할당하기

 

리눅스는 여러 명의 사용자가 동시에 접속해서 사용가능합니다. 만약 A라는 사용자가 시스템을 사용할 때, 고의든 실수든 루트(/) 파일 시스템에 큰 파일들을 계속 복사했다고 가정해 봅니다. 

 

하드디스크가 꽉 차면 시스템 전체가 가동되지 않는 치명적인 문제를 일으킬 수 있습니다. 이런 상황을 미연에 방지하려면 각 사용자별로 사용할 수 있는 용량을 제한해야 합니다. 즉, 사용자가 할당된 양만큼만 공간을 사용하게 한다면 아무런 문제도 발생하지 않을 것입니다.

 

1. 쿼터(quota)의 정의

 

리눅스에서 쿼터(quota)는 파일 시스템의 디스크 공간 또는 파일 개수에 대한 사용량 제한을 의미합니다. 이를 통해 시스템 관리자는 사용자 또는 그룹 단위로 디스크 사용량을 제한하고 모니터링할 수 있습니다.

쿼터 시스템은 일반적으로 디스크의 용량과 파일 개수에 대한 제한을 설정하는 두 가지 형태로 구성됩니다.

-디스크 용량 쿼터: 디스크의 전체 용량에 대한 사용량 제한입니다. 이는 사용자 또는 그룹이 할당된 디스크 공간의 크기를 제한하는 데 사용됩니다. 예를 들어, 사용자 A에게 1GB의 디스크 용량을 할당하면 해당 사용자는 최대 1GB까지만 파일을 저장할 수 있습니다.

-파일 개수 쿼터: 파일 시스템에 저장된 파일의 개수에 대한 제한입니다. 이는 사용자 또는 그룹이 생성할 수 있는 파일의 개수를 제한하는 데 사용됩니다. 예를 들어, 사용자 B에게 100개의 파일 개수 쿼터를 할당하면 해당 사용자는 최대 100개의 파일만 생성할 수 있습니다.

쿼터는 주로 시스템 관리자가 사용자들의 디스크 사용량을 통제하고 저장 공간의 낭비를 방지하기 위해 설정됩니다. 또한, 쿼터를 사용하면 시스템의 디스크 사용량을 모니터링하고 예상치 못한 용량 초과로부터 시스템을 보호할 수 있습니다.

리눅스에서는 quota 명령을 사용하여 쿼터를 설정하고 관리할 수 있습니다. quota 명령을 사용하면 특정 사용자 또는 그룹의 쿼터 제한을 설정하고 사용량을 확인할 수 있습니다.

 

 

 

2. 쿼터 진행 순서

1) /etc/fstab  수정 (옵션 부분에 쿼터 관련 부분 추가)

2) 재부팅 또는 리마운팅

3) 쿼터 DB 생성(quotacheck, quotaon, quotaoff 명령 사용)

4) 개인별 쿼터 설정(edquota 명령 사용)

 

 

 

3. 쿼터 실습을 진행합니다. 먼저 사용자를 만들고 해당 사용자에게 공간을 할당합니다.

 

 

VMware에서 server 가상머신을 선택하고 [Edit virtual machine settings]를 클릭해서 새로운 SCSI 하드디스크를 하나 장착한다. 크기는 10GB로 지정합니다. 

 

 

 

 

fdisk /dev/sdb 파티션 생성과 포맷을 진행합니다.

 

 

 

 

/userHome 디렉터리를 만든 후에 디렉터리에 마운트 합니다.

 

 

 

 

재부팅해도 인식되도록 vi나 gedit을 이용해서 /etc/fstab 맨 아래에 다음을 추가합니다.

 

 

 

다음 명령으로 쿼터 실습에 활용할 사용자 john과 deniel을 만들고, 비밀번호도 사용자 이름과 동일하게 설정합니다.

 

 

 

 

재부팅해도 인식되도록 gedit을 이용해서 /etc/fstab 맨 아래에 다음을 추가합니다.

 

 

 

 

gedit이나 nano로 /etc/fstab 파일을 열어서 /dev/sdb1/을 마운트하는 부분에 아래와 같이 추가해 줍니다. 

글자가 틀리지 않도록 주의합니다.

 

 

 

 

재부팅하는 효과를 내기 위해 mount --options remount /userHome 명령으로 다시 마운트 합니다. 그리고 mount명령으로 확인해 보면 /dev/sdb1 디렉터리가 '쿼터'용으로 마운트 된 것을 확인할 수 있습니다.

 

 

 

 

 

 

apt -y install quota 명령으로 관련 패키지를 설치합니다.

 

 

 

 

쿼터를 사용하려면 쿼터 DB를 생성해야 합니다. 아래 명령어를 차례로 입력합니다. 생소하지만 한 번만 사용하므로 외울 필요는 없습니다. 

quotachek/quotaoff 명령은 설정된 쿼터를 크거나 끕니다. 사용할 수 있는 옵션을 요약하면 다음과 같습니다. 더 상세한 내용은 man quotacheck 명령으로 확인합니다.


 

 

edquota -u john 명령을 입력하면 각 사용자별 또는 그룹별 할당량을 편집할 수 있습니다.

 

각 열의 의미를 살펴봅니다.

 

-Filesystem(파일시스템) : 사용자별 쿼터를 할당하는 파일 시스템을 의미합니다. 우리는 앞에서 /etc/fstab 파일에 /dev/sdb1을 쿼터로 설정해 놓았습니다.

 

-Blocks (블록): 블록은 파일 시스템에서 데이터를 저장하는 최소 단위입니다. 파일 시스템은 디스크 공간을 블록으로 나누어 파일 데이터를 저장하고, 파일의 크기가 블록 크기의 배수일 경우에는 여러 블록을 사용합니다. 블록은 파일의 실제 데이터, 메타데이터 (파일의 속성 및 정보), 파일 시스템 자체의 메타데이터 등을 저장하는 데 사용됩니다.

-Soft Quota (소프트 쿼터): 소프트 쿼터는 파일 시스템에서 사용자 또는 그룹이 할당받은 디스크 공간 또는 파일 수의 제한을 의미합니다. 소프트 쿼터는 사용자 또는 그룹에게 경고를 보내거나 제한을 가하는 역할을 합니다. 사용자가 소프트 쿼터를 초과하더라도 파일 작성이 계속될 수 있습니다.

-Hard Quota (하드 쿼터): 하드 쿼터는 파일 시스템에서 사용자 또는 그룹이 할당받은 디스크 공간 또는 파일 수의 제한을 의미합니다. 하드 쿼터는 사용자 또는 그룹이 할당받은 용량을 초과하면 파일 작성이 중지되는 역할을 합니다. 하드 쿼터를 초과하는 경우, 사용자는 더 이상 파일을 작성하거나 저장할 수 없습니다.

-Inodes (아이노드): 아이노드는 파일 시스템에서 파일이나 디렉터리의 메타데이터를 저장하는 데이터 구조입니다. 각 파일이나 디렉터리는 고유한 아이노드를 가지며, 아이노드에는 파일의 권한, 소유자, 크기, 생성 시간 등의 정보가 저장됩니다. 아이노드는 파일의 실제 데이터를 직접 저장하지 않고, 해당 파일이 어떤 블록에 저장되어 있는지를 가리키는 역할을 합니다.

소프트 쿼터와 하드 쿼터는 파일 시스템에서 디스크 공간을 관리하고 사용자 또는 그룹의 용량을 제한하는 데 사용되는 개념입니다. 아이노드는 파일 시스템에서 파일과 디렉터리의 메타데이터를 저장하는 데이터 구조입니다.

 


이제는 john 사용자가 사용할 수 있는 용량이 설정한 대로 제한되어 있는지 확인해 봅니다. john 사용자로 접속한 후 파일을 몇 개 복사합니다. /boot/vmlinuz-5.4.0-26-generic 파일의 크기가 약 11.1MB이므로 이 파일을 사용합니다.

 

john 사용자는 quota 명령으로 자신에게 할당된 디스크 공간을 확인하면 됩니다.

 

 

 

 

repquota /userHome 명령으로 사용자별 현재 사용량을 확인해 봅니다. 먼저 exit 명령으로 john 사용자를 로그아웃해서 root 사용자로 돌아옵니다.

 

소프트 한도를 초과한 사용량에 대한 유예 기간(grace period)은 기본 설정이 7일입니다. 이 유예 기간은 edquota -t 명령을 사용해서 변경할 수 있습니다.

 

 

 

 

이번에는 denial 사용자에게도 john 사용자와 똑같이 사용량을 할당해 봅니다. 

edquota -p 기준사용자 대상사용자 명령을 입력하면 됩니다. 작업이 끝나면 repquota /userHome 명령으로 사용자별 현재 사용량을 확인해 봅니다.

 

 

 

더 이상 쿼터를 사용하지 않으려면 quotaoff /userHome 명령을 실행합니다.

 

 

 

이상으로 하드디스크를 관리하는 다양한 방법과 사용자별로 공간을 할당하는 방법을 알아보았습니다. 

도움이 되셨기를 바라겠습니다. 감사합니다.

728x90