리눅스의 디스크의 용량제한 그리고 "quota" 명령어
소개
오늘은 리눅스 시스템에서 사용자별로 디스크의 용량을 제한하고,
모니터링을 하기 위해 사용되는 명령어인 리눅스 quota명령어의 사용법을 정리하고자 합니다.
이 "quota" 명령어로 사용자의 디스크 사용량을 확인할 수 있고, 관리하는데 도움을 받을 수 있고
사용자별로 제한을 두어 시스템의 디스크 리소스를 효율적으로 관리할 수 있게된다.
"quota"의 기능
사용자의 디스크 사용량 확인
- 사용자의 디스크 사용량을 확인 할 수 있다.
(현재 사용중인 디스크 공간과 허용된 최대 사용량)
사용자별 용량 제한 설정
- 관리자가 각각의 사용자에 대해 디스크의 용량을 제한할 수 있다.
(한 사용자가 과한 디스크 공간을 독점하지 않게 제한)
사용자 경고 및 알림
- 설정을 통해 용량 제한의 접근하고, 초과했을 때 경고나 알림메시지를 설정할 수 있다.
(사용자에게 미리 용량 부족을 알리고, 초과하지 않도록 유도)
실습1(ext4)
시나리오
Server A에 디스크를 추가하여 (포맷 형식으로는 ext4)
/home2 디렉토리에 각각의 유저 홈 디렉토리로 설정한다
그 후 해당 디렉터리에 사용자 용량 할당 기능을 가지도록 구축
이때, 유저 2개를 만들고, 용량 설정으로는
1 : bsoft 30Mb , bhard 50Mb
2 : bsoft 100Mb, bhard 150Mb
위와 같이 설정한다
※ 이때 systemctl daemon-reload는 재부팅한 것과 같은 효과를 볼 수 있다
* systemd 서비스 매니저의 설정 변경 사항을 다시 로드하고, 새로운 설정을 적용하기 위해 사용되는 명령어.
보통 서비스 설정 변경, 새로운 서비스 단위 파일 추가, 시스템 설정 변경을 할때 사용된다.
defaults뒤에 붙는 " ,usrjquota=aquota.user " / " ,jqfmt=vfsv0 " 이 두 옵션에 대해 짚고 넘어가고자한다.
usrjquota=aquota.user : 이 부분은 Quota 시스템을 활성화하는 옵션이다.
usrjquota는 사용자 Quota를 지원하도록 설정한다는 의미이고,
aquota.user는 사용자별 Quota 정보를 저장하는 파일의 이름을 지정한 것이다.
jqfmt=vfsv0 : 이 부분은 Quota정보 파일의 형식을 지정하는 옵션이다.
jqfmt은 Quota정보 파일의 형식을 지정한다는 의미이고
vfsv0는 "Quota 정보 파일 형식" 을 가리키는것으로 이 형식은 리눅스 파일 시스템에서 사용되는 기본형식이다.
사용자별 Quota 정보를 저장하고, 디스크 사용량과 제한정보를 효과적으로 관리할 수 있게 설계되어 있다.
quotacheck - (augmn) 옵션들의 설명
a(--all) u(--user) g(--group) m(--no-remount) n(--user-first-dquot)
edquota -u : 이 명령으로 사용자의 사용량을 제한할 수 있다.
이때, 각각 테이블에 대한 설명을 보고싶다면 아래의 더보기를 참고.
block : 현재 사용자가 사용중인 사용량
// 이때, 단위는 KB단위이다. 즉 1MB=1024KB 이므로 30MB,50MB를 뜻한다.
- 다른 단위로 적을때 30M , 50M 이렇게 변경 후 저장하여도 자동으로 KB값으로 변화되어 저장된다.
inodes : 사용자가 사용하고있는 inodes의 갯수
* inode는 파일 시스템의 파일과 디렉터리를 관리하는데 사용되는 데이터 구조로, 각 파일이나 디렉터리는 해당하는
inode를 가지고있다. 이 inode는 파일의 메타데이터와 관련된 정보를 저장한다
soft : 용량 제한 경고 - 시간을 제안한다. 기본적으로 7일, 설정을 이용해 변경할 수 있다.
hard: 용량의 임계치 - 임계치를 넘으면 파일이 손상되고, 이후엔 파일을 생성 할 수 없다.
위와같이 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를 만들어준다.
vi /etc/fstab에 자동마운트되도록 설정하고싶다면

위와 같이 추가해주면 된다.
xfs_quota 명령어와 옵션 -x 를 이용하여 expert mode로 진입할 수 있다.
Interactive하게 동작되는 expermode로 들어가서, 아래와 같은 명령어들을 이용하여 동작할 수 있다.
간단하게 아래와 같이 실습해보았다.
bash쉘에서 간단한 명령어와 옵션의 조합으로 꼭 인터렉티브한 모드로 들어가지 않아도 설정 할 수 있다.
아래는 예제이다.
명령어 예시,
limit : 사용자 또는 그룹의 Quota제한을 설정
report : Quota 사용량 및 제한에 대한 보고서 출력
state : 현재 Quota 설정 상태를 출력
rescan : 파일 시스템을 다시 스캔하여 Quota 정보를 업데이트
주의사항
quota 명령어는
1. 사용하기 전, 파일 시스템이 quota를 지원하도록 설정되어있어야한다.
2. 사용자 홈 디렉토리에 .quota 파일이 생성되며, 여기에 사용자별 디스크 사용량 정보가 저장된다.
마무리
리눅스 시스템에서 사용자별 디스크 용량을 관리하는 데 아주 유용한 도구다. 이를 통해 디스크 리소스를 효율적으로
분배, 사용자들이 과한 용량을 사용하지 않도록 관리 할 수 있다. 즉, 시스템의 성능과 안정성을 유지하는데 도움을 준다
( = 가용성을 개선하는데 도움이 된다)