안녕하세요
뚱보 프로그램입니다.
디스크 공간 할당에 활용성입니다.
Quota와 시스템 자동화
디스크 quota 설정
사용자들이 디스크 공간을 제한된 이상으로 사용하거나 시스템상에서 무제한적으로 디스크 공간을 낭비하지 않도록 한다. 각 사용자에게 일정한 디스크 공간을 할당하여 시스템의 성능을 향상시키고 효율적으로 관리할 수 있다.
현재는 ext2 파일시스템에사만 quota를 지원
quota는 디스크를 두가지로 제한
1) 사용자가 가질 수 있는 inode 수
2) 디스크 블록의 수
3) 소프트와 하드 limits로 설정
1. 기본 설정 - 사용자별 디스크 할당량 지정
[root @edu00 linux]#useradd linux
[root @edu00 linux]#passwd linux
[root @edu00 linux]# vi /etc/fstab
--------------------------------------
/dev/hda8 /home ext2 defaults,usrquota(grpquota) 1 2
--------------------------------------
[root @edu00 linux]#mount -o remount /home
혹은 시스템을 재부팅한다.
[root @edu00 linux]#touch /home/quota.user
현재는 빈 파일이지만 quotacheck를 하여 업데이트하면 Database Binary File로 변한다.
[root @edu00 linux]#chmod 600 /home/quota.user
[root @edu00 linux]#ls -l /home/quota*
[root @edu00 linux]#quotacheck /home
반드시 quotaoff /home 한 후에 하거나 시스템 down시에 한다.
[root @edu00 linux]#quotaon /home or quotaon -a
/etc/rc.d/rc.sysinit에 설정이 포함되어 있다.
[root @edu00 linux]#edquota -t
grace period를 설정한다.
----------------------------------
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda8:block grace period: 7 days, file grace period: 0 days
---------------------------------------
[root @edu00 linux]#edquota (-u) linux
---------------------------------------
Edit block and inode quota for user linux:
Device /dev/hda8 (/home):
Used 7070KB, limits: soft=10240 hard=15360
: soft limit은 10M(10240KB), hard limit은 15M(15360KB)
Used 54 inodes, limits: soft=1000 hard=1500
: soft limit은 1000개, hard limit은 1500개)
[root @edu00 linux]#quota (-v) linux
[root @edu00 linux]#telnet 0
login:linux
Password:
[linux @edu00 linux]$cp -R /usr/share .
[linux @edu00 linux]$du -sh .
[linux @edu00 linux]$exit
[root @edu00 linux]#quota -v
[root @edu00 linux]#quota -q
[root @edu00 linux]#edquota -p linux (-u) test wind
: linux에 대한 설정을 test, wind에도 적용
[root @edu00 linux]#quota (-v) wind
[root @edu00 linux]#repquota -a
[root @edu00 linux]#repquota /home
[root @edu00 linux]#quotaoff -a
[root @edu00 linux]#quotacheck -a
2. 그룹별 디스크 할당량 지정
서버에 프로젝트를 위한 공간을 할당해 주거나, 각 부서별로 공간을 나누어 주고자 할 경우에 그룹별로 디스크 할당량을 정한다.
[root @edu00 linux]#mkdir /home/ICLUB
[root @edu00 linux]#chgrp ICLUB /home/ICLUB
[root @edu00 linux]#chmod 770 /home/ICLUB
[root @edu00 linux]#ls -ld /home/ICLUB
[root @edu00 linux]#vi /etc/fstab
------------------------------------
/dev/hda8 /home ext2 defaults,usrquota,grpquota 1 2
------------------------------------
[root @edu00 linux]#touch /home/quota.group
[root @edu00 linux]#chmod 600 /home/quota.group
[root @edu00 linux]#ls -l /home/quota*
[root @edu00 linux]#reboot
[root @edu00 linux]#edquota -g -t
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for groups:
/dev/hda8:block grace period: 7 days, file grace period: 0 days
[root @edu00 linux]#edquota -g ICLUB
Quotas for group ICLUB:
/dev/hda8: blocks in use:0, limits (soft = 12000, hard = 13000)
inodes in use:0, limits ( soft = 0, hard = 0)
[root @edu00 linux]#quotaon /home
[root @edu00 linux]#edquota -v -g ICLUB
[root @edu00 linux]#telnet 0
login:open
Password:
[open @edu00 open]$groups
[open @edu00 open]$newgrp ICLUB
[open @edu00 open]$groups
[open @edu00 open]$cd /home/ICLUB
[open @edu00 open]$cp -R /usr/share .
[open @edu00 open]$du -sh
[open @edu00 open]$exit
[root @edu00 linux]#quota -v -g ICLUB
[root @edu00 linux]#quota -q -g ICLUB
[root @edu00 linux]#repquota -a
시스템 자동화
1. cron
반복적인 명령을 수행하게 함으로써 시스템을 자동화할 수 있는 유틸리티가 cron이다.
1] 사용형식
#crontab –l : crontable에 등록되어있는 내용을 출력한다.
#crontab –r : crontable의 내용을 삭제한다.
#crontab –e : crontable의 내용을 수정(vi 에디터를 이용하여 /tmp에 임시파일 생성)
#crontab cronfile : cronfile의 내용을 cron table에 등록
2] cron table 형식
cron table은 총 6가지 field로 이루어져 있다.
각 필드는 하나이상의 space로 구분되며 하나의 배치작업은 한 라인에 정의된다.
첫 필드에 #이 나타나면 그 라인은 주석처리된다.
매시마다 시스템의 부하량(load average)을 /tmp/load.log라는 파일에 저장하기 위해서 다음을 설정한다.
시스템의 부하량 점검은 uptime 명령으로 확인할 수 있다.
cron table의 형식은 다음을 따른다.
minute hour day month week command
0 * * * * uptime >> /tmp/load.log
다음을 보자
1 2 3 4 5 uptime >> /tmp/load.log
위의 cron table은 4월 3일 금(5)요일 02시 01분에 uptime >> /tmp/load.log라는 명령을 실행하라는 의미이다.
다음은 uptime >> /tmp/load.log 명령을 linux00이라는 사용자가 실행시키기를 원한다면
0 13 13 * 5 su – linux00 –c “uptime >> /tmp/load.log”
위 crontable은 command 필드에서 su 명령을 사용하여 linux00이라는 사용자가 사용하게 한다. –c 옵션은 su 명령어에 따르는 옵션인데, -c 옵션 뒤에는 command가 나온다.
3] cron table 관련 디렉토리
/var/spool/cron
사용자가 crontab cronfile 명령을 사용하든, crontab –e 명령을 사용하든 시스템은 실제 cron table의 내용을 /var/spool/cron 디렉토리에 사용자 이름으로 복사하여 관리한다.
즉 명령행에서 crontab –e 라는 명령을 사용하면 /var/spool/cron 디렉토리내의 파일을 /tmp 디렉토리에 복사하여 임시로 사용한 후, 내부적으로 crontab 명령을 실행하는 것이다. 따라서 /var/spool/cron 디렉토리내의 파일을 편집만 한다고 해서 cron table이 변경되는 것은 아니다. crontab이라는 명령어로 해당 파일을 실행해야 한다. 즉, /var/spool/cron 디렉토리내의 파일을 직접 수정하는 것은 바람직하지 않다.
4] cron 작업 제어
cron.allow와 cron.deny
/etc 디렉토리에 cron.allow 파일과 cron.deny 파일을 만들어 cron 작업을 허용할 사용자와 허용하지 않을 사용자들을 등록시킬 수 있다.
2. at
원하는 시간에 한번만 명령을 수행하게 한다.
1] 사용 형식
#at hour:min –f 명령어
2] 예제
#at 13:10
>date > /dev/console
>ctrl+d
#
at 명령은 수행결과를 메일로 전송한다.
또한 midnight, noon, teatime 등의 시간 표현을 사용할 수 있다.
3] 관련 디렉토리
/var/spool/at 디렉토리에 at 명령을 통하여 설정한 작업이 저장이 되며 현재 spool에 있는 at 작업을 보고자 한다면
#atq
설정된 작업을 제거하고자 할 경우에는
#atrm
4] at 작업 제어
/etc/at.allow 파일과 /etc/at.deny 파일을 만들어 at 명령을 사용자별로 지정할 수 있다.