OS/Linux - Ubuntu

[Linux - 리눅스 / Ubuntu - 우분투] 디스크 사용량(쿼터) 설정 - quota, userquota, grpquota, quotacheck, quotaon, quotaoff, edquota, repquota,

주누다 2015. 5. 2. 15:45
반응형

- 리눅스는 기본적으로 여러 사용자가 함께 사용하는 시스템

- 특정 사용자가 과도하게 디스크를 사용하는 것을 제한할 필요가 있음

- 디스크 사용량을 제한하는 것을 '디스크 쿼터' 라고 함.

- 디스크 쿼터를 설정하는 방법은 두 가지가 있음

- 첫 번째는 하드디스크에서 사용자가 사용할 수 있는 파일의 전체 용량을 설정하는 방법

- 두 번째는 사용자가 사용할 수 있는 총파일 수를 설정하는 방법




쿼터 값 설정 - 하드 리미트, 소프트 리미트

- 쿼터 값을 설정할 때 '하드 리미트(hard limit)' 와 '소프트 리미트(soft limit)' 있음

- '하드 리미트(hard limit)' 는 사용자가 절대로 넘을 수 없는 최대치를 명시한 값

- '소프트 리미트(soft limit)' 는 일정 시간내에는 넘을 수 있는 한계 값

  정해진 시간이 지나면 소프트 리미트 값이 하드 리미트 값으로 적용되어

  새로운 파일을 생성할 수 없게 됨

- 디스크 쿼터를 초과활 경우, 사용자는 파일을 지워서 한계 값 아래로 디스크 사용량을 줄여야함.




쿼터 설정을 위한 사전 준비

- 디스크 쿼터는 개별 사용자나 그룹별로 설정할 수 있음

- 디스크 쿼터를 설정하려면 'quota' 패키지를 설치해야함


============================================================

sjw@sjw-HP-Mini-110-3500:/home/user22$ sudo apt-get install quota
[sudo] password for sjw:
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  linux-headers-3.13.0-32 linux-headers-3.13.0-32-generic
  linux-image-3.13.0-32-generic linux-image-extra-3.13.0-32-generic
Use 'apt-get autoremove' to remove them.
제안하는 패키지:
  libnet-ldap-perl rpcbind portmap default-mta mail-transport-agent
다음 새 패키지를 설치할 것입니다:
  quota
0개 업그레이드, 1개 새로 설치, 0개 제거 및 4개 업그레이드 안 함.
542 k바이트 아카이브를 받아야 합니다.
이 작업 후 1,438 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://kr.archive.ubuntu.com/ubuntu/ trusty/main quota amd64 4.01-3 [542 kB]
내려받기 542 k바이트, 소요시간 0초 (591 k바이트/초)
패키지를 미리 설정하는 중입니다...
Selecting previously unselected package quota.
(데이터베이스 읽는중 ...현재 256733개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../quota_4.01-3_amd64.deb ...
Unpacking quota (4.01-3) ...
Processing triggers for ureadahead (0.100.0-16) ...
ureadahead will be reprofiled on next reboot
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
quota (4.01-3) 설정하는 중입니다 ...
Processing triggers for ureadahead (0.100.0-16) ...
sjw@sjw-HP-Mini-110-3500:/home/user22$

============================================================





쿼터 속성 설정하기

- 디스크 쿼터를 설정하려면 파일 시스템의 마운트 옵션에 다음과 같은 쿼터 속성을 지정

 * usrquota : 개별 사용자의 쿼터를 제한할 수 있는 속성

 * grpquota :  개별 그룹의 쿼터를 제한할 수 있는 속성


- 파일 시스템의 마운트 옵션은 '/etc/fstab' 파일에 설정

- vi 로 '/etc/fstab' 파일을 열어서 usrquota 속성 추가

- usrquota 는 defaults 속성 다음에 쉼표를 넣고 설정

============================================================

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda7 during installation
UUID=ffe8a22d-701d-4311-a900-b27ba4966ab4 /               ext4    errors=remount-ro,usrquota 0       1
# /boot was on /dev/sda5 during installation
UUID=dec50802-7368-49c9-8c4e-2b2344067b65 /boot           ext4    defaults        0       2
# /home was on /dev/sda8 during installation
UUID=1c22994b-e9a9-47e5-9306-dee6bf96fb95 /home           ext4    defaults        0       2
# swap was on /dev/sda6 during installation
UUID=8eb5302c-761b-46a2-aaad-c05893b1758f none            swap    sw              0       0
~                                                                              
~                                                                              
~                                                                              
:wq
============================================================





쿼터 속성 적용하기

- '/etc/fstab' 파일에 쿼터 속성을 설정했다고 해서 바로 적용되는 것이 아님

- 속성을 설정 후 파일 시스템을 다시 마운트 해야함

- 루트('/') 파일 시스템은 언마운트할 수 없는데 이럴 때는 이렇게...

============================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo mount -o remount /
sjw@sjw-HP-Mini-110-3500:~$ mount
/dev/sda7 on / type ext4 (rw,errors=remount-ro,usrquota)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755크)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
/dev/sda5 on /boot type ext4 (rw)
/dev/sda8 on /home type ext4 (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=sjw)
sjw@sjw-HP-Mini-110-3500:~$
============================================================


- 'mount' 명령으로 usrquota 옵션이 설정되었는지 체크





쿼터 데이터베이스 파일 생성하기 : quotacheck 

- 파일 시스템에 옵션이 설정되었으면

  사용자의 쿼터 정보를 저장하는 데이터베이스 파일을 생성해야함.

- 데이터베이스 파일은 'quotacheck' 명령으로 생성

- 기능 : 쿼터 파일을 생성, 확인, 수정하기 위해 파일 시스템을 스캔함

- 형식 : quotacheck [옵션] -a 또는 파일 시스템

- 옵션 :

 * '-a' : 전체 파일 시스템을 스캔함

 * '-u' : 사용자 쿼터를 확인함

 * '-g' : 그룹 쿼터를 확인함

 * '-m' : 파일 시스템 리마운트를 하지 않음

 * '-v' : 명령 진행 사항을 상세하게 출력

- 사용예 : 'quotacheck -augv' , 'quotacheck -ugvm /dev/sdb1'


- 'quotacheck' 명령을 실행하면 파일 시스템을 확인한 후,

  데이터베이스 파일이 있는 경우 디스크 사용량을 수정하고

  데이터베이스 파일이 없으면 생성

- 쿼터가 on 일 수 있으므로 'qtotaoff' 명령으로 쿼터를 비활성한후,

  quotacheck 명령을 실행

============================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo quotaoff -augv
[sudo] password for sjw:
/dev/disk/by-uuid/ffe8a22d-701d-4311-a900-b27ba4966ab4 [/]: user quotas turned off
sjw@sjw-HP-Mini-110-3500:~$ sudo quotacheck -avugm
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/disk/by-uuid/ffe8a22d-701d-4311-a900-b27ba4966ab4 [/] done
quotacheck: Cannot stat old user quota file //aquota.user: 그런 파일이나 디렉터리가 없습니다. Usage will not be subtracted.
quotacheck: Old group file name could not been determined. Usage will not be subtracted.
quotacheck: Checked 32162 directories and 239611 files
quotacheck: Old file not found.
sjw@sjw-HP-Mini-110-3500:~$ 

============================================================


- 디스크 쿼터를 관리하는 데이터 베이스는 두 개 파일로 구성

 * aquota.user : 사용자 쿼터 데이터베이스 파일

 * aquota.group : 그룹 쿼터 데이터베이스 파일

- 데이터 베이스 파일은 해당 파일 시스템의 최상위 디렉터리에 생성

============================================================

sjw@sjw-HP-Mini-110-3500:~$ ls -l /aquota*
-rw------- 1 root root 7168  5월  2 17:16 /aquota.user
sjw@sjw-HP-Mini-110-3500:~$
============================================================





쿼터 사용 활성화 하기 : quotaon 

- 기능 : 파일 시스템의 쿼터 기능을 활성화

- 형식 : quotaon [옵션] -a 또는 파일 시스템

- 옵션 :

 * '-a' : 전체 파일 시스템의 쿼터 기능을 활성화

 * '-u' : 사용자의 쿼터를 활성화

 * '-g' : 그룹 쿼터를 활성화

 * '-v' : 명령 진행 상황을 상세하게 출력

- 사용예 : quotaon -augv, quotaon -ugv /


- 파일 시스템의 쿼터 활성화

============================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo quotaon -uv /
[sudo] password for sjw:
/dev/disk/by-uuid/ffe8a22d-701d-4311-a900-b27ba4966ab4 [/]: user quotas turned on
sjw@sjw-HP-Mini-110-3500:~$
============================================================


- 쿼터의 비활성화는 quotaoff 명령으로 실행(quotaon 명령의 옵션과 동일)




쿼터 설정하기 : edquota

- 기능 : 쿼터를 설정

- 형식 : edquota [옵션] 사용자계정 또는 그룹명

- 옵션 :

 * '-u' : 사용자 쿼터를 설정

 * '-g' : 그룹 쿼터를 설정

 * '-p' : 쿼터 설정을 복사

-사용예 : edquota -u user1, edquota -g han01, edquota -p uesr01 uesr02


- 쿼터 편집은 root 권한으로만 가능

- edquota 를 실행하여 쿼터를 편집할 때 vi 를 사용할려면

 환경변수 EDITOR=/usr/bin/vi 를 지정해야함

- 쿼터는 KB 단위로 할당

============================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo EDITOR=/usr/bin/vi edquota -u user2
sjw@sjw-HP-Mini-110-3500:~$
============================================================





쿼터 정보 확인하기 : quota

- 기능 : 쿼터 정보를 출력

- 형식 : quota [옵션] 사용자 계정 또는 그룹명

- 옵션 :

 * '-u' : 사용자 쿼터 정보를 출력

 * '-g' : 그룹 쿼터 정보를 출력

- 사용예 : quota -u user1, quota -g han01


============================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo quota -u user2
Disk quotas for user user2 (uid 1001): none
sjw@sjw-HP-Mini-110-3500:~$
============================================================

- 그레이스(grace) 는 소프트 리미트가 초과되어도 일정 기간 허용해주는 유예 기간을 의미





쿼터 설정 복사하기 :  edquota -p

- 한 사용자에게 설정한 쿼터를 다른 사용자에게 그대로 복사

- 쿼터 설정 복사는 'edquota -p' 명령 사용


============================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo edquota -p user2 user22
sjw@sjw-HP-Mini-110-3500:~$ sudo quota user22
Disk quotas for user user22 (uid 1002): none
sjw@sjw-HP-Mini-110-3500:~$

============================================================ 





쿼터 정보 요약 출력하기 : repquota 

- 파일 시스템 전체 사용자의 쿼터 설정을 요약하여 출력하는 명령

- 기능 : 쿼터 정보를 요약하여 출력

- 형식 : repquota [옵션] 파일 시스템

- 옵션 :

 * '-a' : 전체 파일 시스템의 쿼터 정보를 출력

 * '-v' : 사용량이 없는 쿼터의 정보도 출겨

 * '-u': 사용자 쿼터 정보를 출력

 * '-g' : 그룹 쿼터 정보를 출력

- 사용예 : repquota -a, repquota- u han01

 

============================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo repquota /
*** Report for user quotas on device /dev/disk/by-uuid/ffe8a22d-701d-4311-a900-b27ba4966ab4
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      -- 5187284       0       0         271324     0     0      
man       --    3108       0       0            368     0     0      
lp        --    6160       0       0              2     0     0      
libuuid   --      24       0       0              2     0     0      
syslog    --    2764       0       0             12     0     0      
avahi-autoipd --       4       0       0              1     0     0      
speech-dispatcher --       4       0       0              1     0     0      
lightdm   --     216       0       0             40     0     0      
colord    --      20       0       0              4     0     0      
sjw       --    6884       0       0             66     0     0      


sjw@sjw-HP-Mini-110-3500:~$ 

============================================================





반응형