리눅스의 디스크의 용량제한 그리고 "quota" 명령어

소개

오늘은 리눅스 시스템에서 사용자별로 디스크의 용량을 제한하고,

모니터링을 하기 위해 사용되는 명령어인 리눅스 quota명령어의 사용법을 정리하고자 합니다.

 

이 "quota" 명령어로 사용자의 디스크 사용량을 확인할 수 있고, 관리하는데 도움을 받을 수 있고

사용자별로 제한을 두어 시스템의 디스크 리소스를 효율적으로 관리할 수 있게된다.

 

"quota"의 기능

사용자의 디스크 사용량 확인

- 사용자의 디스크 사용량을 확인 할 수 있다.

(현재 사용중인 디스크 공간과 허용된 최대 사용량)

 

사용자별 용량 제한 설정

- 관리자가 각각의 사용자에 대해 디스크의 용량을 제한할 수 있다.

(한 사용자가 과한 디스크 공간을 독점하지 않게 제한)

 

사용자 경고 및 알림

- 설정을 통해 용량 제한의 접근하고, 초과했을 때 경고나 알림메시지를 설정할 수 있다.

(사용자에게 미리 용량 부족을 알리고, 초과하지 않도록 유도)

 

 

실습1(ext4)

시나리오

Server A에 디스크를 추가하여 (포맷 형식으로는 ext4)
/home2 디렉토리에 각각의 유저 홈 디렉토리로 설정한다
그 후 해당 디렉터리에 사용자 용량 할당 기능을 가지도록 구축
이때, 유저 2개를 만들고, 용량 설정으로는
1 : bsoft 30Mb , bhard 50Mb
2 : bsoft 100Mb, bhard 150Mb
위와 같이 설정한다

디스크 추가 및 파티션 분할
ext4 포맷 및 마운트 and 자동마운트

 

※ 이때 systemctl daemon-reload는 재부팅한 것과 같은 효과를 볼 수 있다

* systemd 서비스 매니저의 설정 변경 사항을 다시 로드하고, 새로운 설정을 적용하기 위해 사용되는 명령어.

보통 서비스 설정 변경, 새로운 서비스 단위 파일 추가, 시스템 설정 변경을 할때 사용된다.

 

/etc/fstab의 추가내용

defaults뒤에 붙는 " ,usrjquota=aquota.user "  /  " ,jqfmt=vfsv0 " 이 두 옵션에 대해 짚고 넘어가고자한다.

usrjquota=aquota.user : 이 부분은 Quota 시스템을 활성화하는 옵션이다.

usrjquota는 사용자 Quota를 지원하도록 설정한다는 의미이고,

aquota.user는 사용자별 Quota 정보를 저장하는 파일의 이름을 지정한 것이다.

 

jqfmt=vfsv0 : 이 부분은 Quota정보 파일의 형식을 지정하는 옵션이다.

jqfmt은 Quota정보 파일의 형식을 지정한다는 의미이고

vfsv0는 "Quota 정보 파일 형식" 을 가리키는것으로 이 형식은 리눅스 파일 시스템에서 사용되는 기본형식이다.

사용자별 Quota 정보를 저장하고, 디스크 사용량과 제한정보를 효과적으로 관리할 수 있게 설계되어 있다.

 

홈디렉터리 생성 및 확인
유저 생성
/home2로 이동하여 quota를 꺼보려했는데                         커맨드를 찾을 수 없다고 한다
dnf를 이용해 quota를 다운받는다.
home2로 이동한뒤, aquota.user(정보 파일)을 생성하는 명령어 quotacheck -augmn을 이용하여 생성.

quotacheck - (augmn) 옵션들의 설명

a(--all) u(--user) g(--group) m(--no-remount) n(--user-first-dquot)

edquota -u tvxq로 설정을 변경

edquota -u : 이 명령으로 사용자의 사용량을 제한할 수 있다.

이때, 각각 테이블에 대한 설명을 보고싶다면 아래의 더보기를 참고.

더보기

block : 현재 사용자가 사용중인 사용량

// 이때, 단위는 KB단위이다. 즉 1MB=1024KB 이므로 30MB,50MB를 뜻한다.

- 다른 단위로 적을때 30M , 50M 이렇게 변경 후 저장하여도 자동으로 KB값으로 변화되어 저장된다.

inodes : 사용자가 사용하고있는 inodes의 갯수

* inode는 파일 시스템의 파일과 디렉터리를 관리하는데 사용되는 데이터 구조로, 각 파일이나 디렉터리는 해당하는

inode를 가지고있다. 이 inode는 파일의 메타데이터와 관련된 정보를 저장한다

 

soft : 용량 제한 경고 - 시간을 제안한다. 기본적으로 7일, 설정을 이용해 변경할 수 있다.

hard: 용량의 임계치 - 임계치를 넘으면 파일이 손상되고, 이후엔 파일을 생성 할 수 없다.

 

 

edquota -u csjh
tvxq로 로그인하여 테스트

위와같이 quota - bhard에 설정된 임계치를 넘자

파일이 손상되고 이후엔 block limit 을 넘어 에러가 일어나는것을 볼 수 있다.

 

 

실습2(xfs)

실습1에서 ext4타입의 quota를 알아보았다. 

실습2에선 xfs파일시스템타입의 quota를 간단하게 알아보려고한다.

 

시나리오

디스크를 추가하여 /home3 에서 위와 비슷하지만 간단하게 실습을 해보려고 한다.

 

fdisk /dev/sdc


mkfs.xfs /dev/sdc1


mkdir /home3

/dev/sdc 디스크를 추가하고 , xfs파일시스템으로 포맷한다. 그리고 마운트할 폴더 /home3를 만들어준다.

 

옵션 -o를 이용하여 uquota와 gquota를 생성하여 마운트

더보기

vi /etc/fstab에 자동마운트되도록 설정하고싶다면

맨 아랫줄 추가

위와 같이 추가해주면 된다.

xfs_quota 명령어와 옵션 -x 를 이용하여 expert mode로 진입할 수 있다.

xfs_quota -x /home3 그리고 state

Interactive하게 동작되는 expermode로 들어가서, 아래와 같은 명령어들을 이용하여 동작할 수 있다.

xfs_quota > ?

간단하게 아래와 같이 실습해보았다.

 

user1생성 및 xfs quota 진입
limit을 이용한 용량 제한과 확인
inodes 제한 설정
Inode 제한 확인

bash쉘에서 간단한 명령어와 옵션의 조합으로 꼭 인터렉티브한 모드로 들어가지 않아도 설정 할 수 있다.

아래는 예제이다.

-c (command) 명령어를 조합하여 사용

명령어 예시, 

limit : 사용자 또는 그룹의 Quota제한을 설정

report : Quota 사용량 및 제한에 대한 보고서 출력

state : 현재 Quota 설정 상태를 출력

rescan : 파일 시스템을 다시 스캔하여 Quota 정보를 업데이트

 

주의사항

quota 명령어는

1. 사용하기 전, 파일 시스템이 quota를 지원하도록 설정되어있어야한다.

2. 사용자 홈 디렉토리에 .quota 파일이 생성되며, 여기에 사용자별 디스크 사용량 정보가 저장된다.

 

마무리

리눅스 시스템에서 사용자별 디스크 용량을 관리하는 데 아주 유용한 도구다. 이를 통해 디스크 리소스를 효율적으로

분배, 사용자들이 과한 용량을 사용하지 않도록 관리 할 수 있다. 즉, 시스템의 성능과 안정성을 유지하는데 도움을 준다

( = 가용성을 개선하는데 도움이 된다)