쿼터 개요
리눅스는 여러 사용자가 동시에 접속해야 되기 때문에 사용자별로 용량을 제한하지 않으면 문제가 됩니다.
따라서 사용자별로 할당해 줘야 합니다. 여기서 나온 개념이 쿼터입니다. 쿼터란 것은 파일 시스템마다 사용자 혹은 그룹이 생성할 수 있는 파일의 용량의 개수를 제한하는 것을 말합니다.
루트(/)로 사용하면 시스템과 관련된 문제를 발생시킬 소지가 있습니다. 많은 사용자가 동시에 /를 사용한다면 성능이 저하될 수 있습니다. 따라서 루트보다는 별도의 파일 시스템을 지정하는 것이 여러 측면에서 좋은 생각입니다.
STEP 1 파티션 생성 후 마운트
fdisk로 파티션 생성 후 디렉터리를 만들고 마운트 시킵니다.
root@server:~# fdisk /dev/sdb
Command (m for help): n
Select (default p): p
ENTER 3번
Command (m for help): p
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 20971519 20969472 10G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@server:~# adduser --home /userSpace/rabbit rabbit
'rabbit' 사용자를 추가 중...
새 그룹 'rabbit' (1001) 추가 ...
새 사용자 'rabbit' (1001) 을(를) 그룹 'rabbit' (으)로 추가 ...
'/userSpace/rabbit' 홈 디렉터리를 생성하는 중...
'/etc/skel'에서 파일들을 복사하는 중...
새 암호:
새 암호 재입력:
passwd: 암호를 성공적으로 업데이트했습니다
rabbit의 사용자의 정보를 바꿉니다
새로운 값을 넣거나, 기본값을 원하시면 엔터를 치세요
이름 []:
방 번호 []:
직장 전화번호 []:
집 전화번호 []:
기타 []:
정보가 올바릅니까? [Y/n] y
root@server:~# adduser --home /userSpace/panda panda
경고: 지정한 /userSpace/panda 홈 디렉터리는 이미 존재합니다.
'panda' 사용자를 추가 중...
새 그룹 'panda' (1002) 추가 ...
새 사용자 'panda' (1002) 을(를) 그룹 'panda' (으)로 추가 ...
'/userSpace/panda' 홈 디렉터리는 이미 존재합니다. '/etc/skel'에서 아무것도 복사하지 않음.
새 암호:
새 암호 재입력:
passwd: 암호를 성공적으로 업데이트했습니다
panda의 사용자의 정보를 바꿉니다
새로운 값을 넣거나, 기본값을 원하시면 엔터를 치세요
이름 []:
방 번호 []:
직장 전화번호 []:
집 전화번호 []:
기타 []:
정보가 올바릅니까? [Y/n] y
userSpace라는 디렉터리에 userSpace는 아까 마운트 하기 전 만들었던 디렉터리 입니다.
panda와 rabbit이라는 사용자를 만들어주었습니다.
STEP 2 재부팅 후에도 마운트유지하기
nano /etc/fstab창에 들어가서 아래와 같이 설정을 변경해줍니다. 설정 후
ctrl + x+ y를 입력하고 나갑니다.
재부팅 효과를 줄 수 있는 명령어를 입력하고 mount를 하면
쿼터용으로 마운트 된 것을 확인 할 수 있습니다.
STEP 3 쿼터 DB 생성하기
외울 필요없이 순서대로 따라 하면 됩니다.
apt -y install quota
#쿼터 패키지를 설치
root@server:~# cd /userSpace
쿼터용 파일 시스템이 마운트 된 곳으로 이동
root@server:/userSpace# quotaoff -avug
#결과
/dev/sdb1 [/userSpace]: user quotas turned off
#쿼터를 끔
root@server:/userSpace# quotacheck -augmn
#파일시스템의 쿼터 관련 체크
root@server:/userSpace# rm -f quota.*
생성된 쿼터 파일을 일단 삭제
root@server:/userSpace# quotacheck -augmn
다시 파일 시스템의 쿼터관련 체크
root@server:/userSpace# touch aquta.user aquota.group
쿼터 관련 파일을 생성
root@server:/userSpace# chmod 600 aquota.*
#보안을 위해 root이외는 접근권한 x
root@server:/userSpace# quotacheck -augmn
#마지막으로 파일 시스템 관련 쿼터 체크
root@server:/userSpace# quotaon -avug
#설정된 쿼터를 실행
#결과 /dev/sdb1 [/userSpace]: user quotas turned on
edquota -u rabbit을 하면 다음 창이 나옵니다.
각각의 의미는 다음과 같습니다.
- Filesystem: 디스크 파일 시스템 이름입니다. 여기서는 /dev/sdb1입니다.
- blocks: 디스크 블록 할당량입니다. 디스크 블록은 일반적으로 1024바이트 크기입니다. 여기서는 16블록입니다.
- soft: 소프트 할당량입니다. 디스크 공간이 부족할 때 사용자에게 경고를 보내는 할당량입니다. 여기서는 0블록입니다.
- hard: 하드 할당량입니다. 디스크 공간이 부족하더라도 사용자에게 할당량을 초과하지 못하게 하는 할당량입니다. 여기서는 0블록입니다.
0블록이라는 것은 한도를 제한하지 않겠다는 의미입니다.
- inodes: 파일 인덱스 노드 할당량입니다. 파일 인덱스 노드는 파일의 정보를 저장하는 데이터베이스입니다. 여기서는 4개입니다.
- soft: 소프트 할당량입니다. 파일 인덱스 노드가 부족할 때 사용자에게 경고를 보내는 할당량입니다. 여기서는 0개입니다.
- hard: 하드 할당량입니다. 파일 인덱스 노드가 부족하더라도 사용자에게 할당량을 초과하지 못하게 하는 할당량입니다. 여기서는 0개입니다.
soft에 30720 hard에 40960을 적고 저장하였습니다. 의미는 30720KB가 일 때 디스크공간이 부족할 경우 경고를 한다는 것이고 40960KB가 넘어갈 때 디스크공간이 부족한 경우 경고를 합니다.
root@server:/userSpace# su - rabbit
rabbit@server:~$ pwd
/userSpace/rabbit
rabbit@server:~$ cp /boot/vmlinuz-* test1
rabbit@server:~$ cp /boot/vmlinuz-* test2
rabbit@server:~$
rabbit@server:~$ cp /boot/vmlinuz-* test3
rabbit@server:~$ ls -l
합계 34164
-rw-r--r-- 1 rabbit rabbit 11657976 7월 29 16:51 test1
-rw-r--r-- 1 rabbit rabbit 11657976 7월 29 16:51 test2
-rw-r--r-- 1 rabbit rabbit 11657976 7월 29 16:51 test3
rabbit@server:~$ cp /boot/vmlinuz-* test4
cp: 'test4'에 쓰는 도중 오류 발생: 디스크 할당량이 초과됨
아래 명령어를 볼 때 합계가 34164KB이므로 아직 40690에 도달하지 못함을 알 수 있습니다. 따라서 경고가 안 나오다가
test4를 만들 때 초과하므로 명령어가 나옵니다.
해석하면 지금 40960을 초과하였습니다. grace부분은 유예기간인데 6일이라는 의미이고 edquota -t 하면 변경할 수 있습니다. 40960-30720 해서 10240은 6일 동안만 사용할 수 있다는 의미입니다.
그럼 panda에게도 똑같이 적용하고 오겠습니다.
panda는 cp 명령어 치지 않고 soft와 hard만 설정해 줬습니다. grace가 없는 것을 알 수 있죠?
root로 돌아가서 repquota /userSpace를 입력하면 해당내용을 확인할 수 있습니다.
좀 더 쉽게 동일하게 적용하려면 위의 명령어를 쿼터를 사용하지 않으려면 아래 명령어를 입력합니다.
'Engineer > virtual machine' 카테고리의 다른 글
[리눅스] 우분투 ubuntu 셸 스크립트 - 변수 (0) | 2023.07.30 |
---|---|
[리눅스] 우분투 ubuntu 셸과 셸스크립트, 환경변수 (0) | 2023.07.30 |
[리눅스]우분투 ubuntu LVM 실습하기 (0) | 2023.07.29 |
[리눅스]우분투 ubuntu server RAID 1+6 구현하기 (0) | 2023.07.29 |
[리눅스] 우분투 ubuntu RAID6, RAID10 고장 후 복구 (0) | 2023.07.29 |