관리 메뉴

IT창고

리눅스 파일시스템 쿼터 본문

서버운영/Linux

리눅스 파일시스템 쿼터

방구석여포 2017. 9. 5. 02:30

쿼터(Quota)는 사용자별로 공간할당으로 파일시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것입니다. 서버에 데이터를 저장할 수 있는 공간은 무한하지 않기 떄문에 사용자의 임의로 서버의 자원을 모두 사용하는것을 방지하여 서버에 용량을 모두 사용하여 시스템장애가 발생하는 일을 방지할수 있습니다.


쿼터는 사용자 하드제한영역, 사용자 소프트제한 영역과 그룹하드제한영역, 그룹소프트제한영역이 있습니다.

하드제한영역(Hard Limit)은 사용자나 그룹이 해당 파일시스템에서 사용할 수 있는 최대공간과 최대로 소유할수있는파일의 개수이고 소프트제한영역(Soft Limit)은 사용자나 그룹이 해당 파일시스템에서 자유롭게 사용할수있는 용량과 파일의 개수를 정의하는 부분으로 Soft Limit를 초과하게 되면 유예기간에 돌입합니다.

유예기간(Grace Peroid)에 돌입했을때 측정되는 시간을 정의하는 부분으로 해당시간이 모두 지나면 Hard Limit에 설정한 값과 상관없이 즉시 Soft Limit는 Hard Limit로 변경됩니다.


쿼터를 해보기위한 실습

0. VMwave를 사용한다면 스냅샷이나 초기상태로 만들어줍니다.


1. 쿼터를 지원하는지 확인합니다

#rpm -qa | grep quota //설치확인합니다

#yum -y install quota //쿼터 패키지 설치합니다


2. 사용자가 사용할수 있는 공간을 생성합니다.

예로 들어 1G Disk 3개를 추가 파티션 생성합니다 조건은 주파티션1번에 모든 디스크공간을 주고 타입은 83으로 줍니다

어렵거나 잘모르겠다면 2017/08/30 - [서버운영] - 리눅스 파일시스템 참고합니다.

파일시스템을 2개는 ext3로 생성하고 하나는 ext4로 생성합니다. (mkfs 명령어 사용)

blkid로 UUID를 확인하고 /etc/fstab에 등록합니다.


3. 쿼터를 사용하기 위해 /etc/fstab을 수정합니다.

vi /etc/fstab 명령어를 입력하고 예시로 

UUID=72b0b73a-e386-45fb-8b55-f5b5348b9250  /dev/sdb1 ext3 defaults 0 0

UUID=6aa252ac-8710-4b72-9853-bba8468829eb  /dev/sdc1 ext3 defaults 0 0

UUID=e96ec30b-7d28-41dc-8990-8a37fbea5025  /dev/sdd1 ext4 defaults 0 0

추가해줍니다. UUID는 각각의 파일시스템마다 다르기때문에 blkid명령어로 꼭 확인해서 각자 맞는 UUID를 사용합니다.

단 여기서 추가해야할 사항이 있는데 쿼터를 위해 옵션을 사용해주어야 합니다. 위에는 defaults값으로 되어있는데 여기에 ,하고 추가해서 사용합니다

ext3 의 FS(file system)필드에서 사용자 쿼터를 위한 옵션은 usrquota 

ext3의 그룹 쿼터를 위한 옵션은 grpquota

ext4의 사용자 쿼터를 위한 옵션은 usrjquota=aquota.user,jqfmt=vfsv0

ext4의 그룹 쿼터를 위한 옵션은 grpjquota=aquota.group,jqfmt=vfsv0 입니다. 또한 많은 쿼터옵션값이있습니다.

디폴트 값 옆에 해당 옵션을 추가해줍니다.


4. 쿼터 테스트를 위한 계정과 그룹을 추가합니다.

저는 예시로 사용자계정명은 QU1과 QU2 그리고 그룹명은 QG로 만들겠습니다.

만드는 방법은 groupadd QG 과 useradd QU1, useradd QU2로 만들어줍니다 사용자계정이 QG에 속하기 위해 usermod -g QG QU1을 해줍니다 QU2계정도 해줍니다.


5. 테스트 디렉토리의 소유권을 변경해줍니다 

최상위 디렉토리에 QG, QU1 QU2디렉토리가 있습니다 이 디렉토리 소유권을 바꿔줍니다.

#chown QU1:root /QU1

#chown root:QG /QG

#chown QU2:root /QU2

각 디렉토리의 소유자 및 그룹 소유자가 해당 디렉토리를 사용할수 있도록 권한을 수정합니다.

#chmod 770 /QU1

#chmod 770 /QG

#chmod 770 /QU2


6. 쿼터를 사용하기 위해 SELINUX 비활성화를 합니다.

SELINUX는 리눅스의 권한과 관련된 설정을 하는 프로그램으로 기본값이 적용(enforcing)되어 있어 해당 프로그램이 활성화되어 있으면 사용자 계정이 프로세스 및 데몬을 사용하는데 큰 제약이 있습니다.

명령어 getenforce 로 현재 설정된 SELINUX상태를 확인하고 setenforce 0로 일시적으로 SELINUX를 비활성화시킬수 있습니다. 또한 영구적으로 SELINUX를 비활성화 시킬수있는데 vi /etc/sysconfig/selinux로 들어가서 7번 라인에 SELINUX에 enforcing을 disabled로 변경해줍니다.


7. 재부팅한번 해주시고 쿼터를 시작해봅니다.

우선 쿼터 설정파일을 생성합니다 쿼터를 적용할 파일시스템에 마운트되어 있는 최상위 디렉토리로 이동합니다.

시작하기전 quotaoff /dev/sdb1로 해당 파티션에 적용중인 쿼터설정을 off시킵니다.

설정을 off시켰다면 quotacheck [옵션] [파일시스템명] 명령어를 사용합니다 quotacheck는 쿼터설정파일을 확인하여 있으면 설정파일을 확인하고 없으면 생성하는 명령어입니다 옵션은 -u는 사용자 쿼터파일생성/검사를하고 -g는 그룹쿼터파일생성/검사를 하고 -a는 시스템의 모든 쿼터 설정파일을 생성/검사를 합니다.

quotacheck를 하기전 반드시 쿼터를 실행할 해당 디렉토리에서 사용합니다.

ex) quotacheck -u /dev/sdb1 를 하면 aquota.user라는 파일이 생기는데 사용자 쿼터정보가 저장된 파일입니다.

파일을 생성했다면 quotaon /dev/sdb1 로 쿼터를 시작합니다.


8. 쿼터 제한 영역을 설정합니다.

설정하는 방법은 두 가지가있습니다.  첫째는 edquota 명령어로 텍스트 편집기(vi)를 이용하여 쿼터를 설정하는방법이고 둘째는 setquota로 명령어와 옵션을 이용해서 쿼터를 설정하는 방법입니다. 저는 첫번째 방법을 사용하겠습니다. 사용방법은 edquota -u [계정명] 혹은 edquota -g [그룹명]이고 edquota -u QU1 입력하면 아래와 같이 나옵니다.

Filesystem                   blocks       soft       hard     inodes     soft     hard

  /dev/sdb1                         4          0          0          1        0        0

blocks는 용량이고 inodes는 파일의 개수입니다 위의 상태를 아래처럼 바꿉니다.

Filesystem                   blocks       soft       hard     inodes     soft     hard

  /dev/sdb1                         4        10M        20M          1        5       10

이렇게 설정하면 soft와hard를 설정하게 됩니다.


9. 쿼터 유예기간을 설정 합니다.

유예기간 설정또한 8번과 같이 두가지 방법이있는데 edquota와 setquota 방법이있습니다 저는 edquota방법으로 사용방법은 edquota -t를 입력하면 vi편집기로 유예기간을 설정할수있습니다 edquota -gt는 그룹유예기간을설정합니다.

입력하면 

Grace period before enforcing soft limits for users:

Time units may be: days, hours, minutes, or seconds

                             용량의유예기간      파일개수의대한유예기간

  Filesystem             Block grace period     Inode grace period

  /dev/sdb1                     7days                  7days

와 같이 나올땐데 7days를 빠른 확인을 위해 2minutes로 변경해줍니다. 


10. 설정확인

repquota /dev/sdb1 명령어를 사용하면 해당 파티션에 적용된 쿼터의 현재상태를 리포트 형태로 출력해줍니다.


여기까지 하셨다면 테스트를 진행할수있는데 cp /boot/vm* /QU1/file1 명령어로 복사해와서 이파일로 실험을 해봅니다. 파일용량은 4M정도이기에 실습해보기 편합니다.

쿼터 실습을 해보면서 SELINUX에 대해 잘몰라서 실습을 진행하기 어려웠는데 SELINUX를 비활성화하고 쿼터영역설정하는 부분이 어려웠지만 두번씩 해당 명령어를 입력해보고 결과를 확인하면서 쿼터를 사용해볼수있었습니다.






'서버운영 > Linux' 카테고리의 다른 글

리눅스 find 명령어 활용  (0) 2017.09.07
리눅스 압축과 아카이브  (0) 2017.09.06
리눅스 RAID구성  (0) 2017.08.31
리눅스 파일시스템  (0) 2017.08.30
리눅스 예약작업  (0) 2017.08.29
Comments