[리눅스마스터 1급] 이기적 이론서 5회차 정리 - 파일 시스템 관리3
🏁 이기적 이론서 학습 범위
- PART 01 리눅스 시스템 관리
- CHAPTER 01 일반 운영 관리 (SECTION 02 파일 시스템 관리)
파일 시스템 관리
☑️ 스왑(Swap)
스왑
- 시스템이 물리 메모리를 모두 소모했을 때 스왑을 활용하여 부족한 메모리 공간을 극복할 수 있다.
- 시스템이 물리 메모리를 모두 소모하고 더 많은 메모리 공간을 필요로 할 때, 메모리상의 비활성화된 메모리를 스왑 공간으로 이동하고 메모리 공간을 확보하는 기술이다.
- 물리 메모리보다 액세스 속도는 느리나, 가격이 저렴하고 용량이 큰 하드디스크를 사용한다.
- 스왑 공간은 스왑 파티션이나 스왑 파일 형태로 만든다.
- 과거에는 스왑의 크기가 RAM의 크기와 비례했다.
- 요즘은 RAM의 크기가 수십, 수백 기가에 이르러 무작정 스왑 크기를 늘리는 건 무의미하다.
- 스왑 공간의 크기는 시스템이 실제 사용하는 메모리의 양에 근거해 설정해야 한다.
스왑 공간의 크기는 리눅스 설치 시 결정하지만, 실제 어느 정도 메모리를 소모할 지 예측하기 어려워 아래의 기준으로 스왑 공간을 마련하길 권장된다.
시스템 물리 메모리 크기 권장 스왑 공간 4GB RAM 이하 최소 2GB 4GB~16GB RAM 최소 4GB 16GB~64GB RAM 최소 8GB 64GB~256GB RAM 최소 16GB 256GB~512GB RAM 최소 32GB
스왑 파일 생성하기
- 스왑 목적으로 사용할 파일 생성하기
dd
를 사용하여 1048576 블록으로 구성된 /swapfile 을 생성한다.블록 한 개의 크기는 1024바이트이다.
$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
스왑 파일의 허가권 설정하기
```bash $ sudo chmod 600 /swapfile # 루트 사용자만 읽고 쓰기가 가능하도록 허가권 설정 ```
스왑 파일 초기화
```bash $ sudo mkswap /swapfile # 스왑 역할을 수행하도록 지정한 파일 초기화 ```
스왑 파일을 시스템에 인식하기
```bash $ sudo swapon /swapfile # 시스템에 새로운 스왑 파일 등록 ```
스왑 상태 확인하기
```bash $ sudo swapon -s # 스왑 상태 확인 ```
- 스왑 파일 설정을 영구적으로 설정하기
- /etc/fstab 파일에 스왑 설정을 추가한다.
시스템을 리부팅해도 스왑 설정은 유지된다.
$ /swapfile swap swap defaults 0 0
스왑 파일 삭제하기
스왑 파일 해제
$ sudo swapoff -v /swapfile # 시스템에서 스왑 파일 해제
- /etc/fstab 항목 삭제
- 스왑 파일 설정을 영구적으로 저장하기 위해 사용했던 항목을 삭제한다.
- 스왑 파일 삭제
추후 스왑 파일을 다시 활성화할 계획이 없다면 스왑 파일을 삭제한다.
$ sudo rm /swapfile
스왑 파티션 생성하기
- 새 파티션 생성하기
디스크의 사용하지 않은 영역이나 새로운 디스크를 추가한 후 파티션을 생성한다.
$ sudo fdist /dev/sdc # /dev/sdc에 대해 새로운 파티션 설정
- 파티션 타입 변경하기
- 파티션 타입을 스왑용으로 변경해야 한다.
- 스왑용 파티션 코드는
‘82’
이고, 설정 순서는‘t → 82 → w’
이다.
- 스왑 파티션 초기화하기
-L
을 사용하여 레이블이 MySwap이고-c
를 사용해 배드블록을 검사한 후 스왑 파티션을 초기화한다.$ sudo mkswap -L MySwap -c /dev/sdc
- 스왑 파티션 활성화하기
스왑 파티션
/dev/sdc
를 활성화한다.$ sudo swapon /dev/sdc $ swapon -s # 정상 수행되었는지 확인
- 스왑 파티션 설정 영구 적용하기
설정을 영구적으로 적용하려면
/etc/fstab
에 다음 항목을 추가한다./dev/sdc swap swap defaults 0 0
스왑 명령어 세부 설명
- mkswap
- 지정한 디스크나 파티션에 스왑 영역을 설정한다.
형식
mkswap [option] swap_file OR swap_partition
옵션
옵션 설명 -c, —check 스왑 영역을 생성하기 전에 배드블록을 체크한다. -l, —label 라벨을 지정한다. 이 라벨을 통해 swapon 할 수 있다. -f, —force 지정한 파일이나 파티션보다 더 큰 스왑 영역을 설정하려 한다면 실패해야 하나 무시하고 수행한다. - 예제
- 스왑 크기는 생략 가능하고, 지정하지 않는 편이 낫다.
$ sudo /swap-file 10240 # 10240킬로바이트의 스왑 파일 생성
- swapon
- 지정한 스왑 파일이나 스왑 파티션에 대한 스왑 기능을 활성화한다.
형식
swapon [option] swap_file OR swap_partition
옵션
옵션 설명 -a, —all - /etc/fstab에 설정된 모든 항목에 대해 스왑 기능 활성화
-no auto
옵션을 사용한 항목은 제외한다.-s, —summary - 스왑 기능이 활성화된 스왑 파일이나 스왑 파티션 목록을 출력한다.
-cat /proc/swaps
와 동일 기능이다.예제
$ sudo swapon -a # /etc/fstab 파일의 모든 항목에 대해 스왑 기능 활성화 $ sudo swapon -s # 스왑 기능이 활성화된 항목을 확인
- swapoff
- 지정한 스왑 파일이나 스왑 파티션에 대한 스왑 기능을 비활성화한다.
형식
swapoff [option] swap_file OR swap_partition
옵션
옵션 설명 -a, —all /etc/fstab 상의 모든 항목에 대한 스왑 기능 비활성화 예제
$ sudo swapoff -a # 모든 스왑 기능 비활성화
- free
- 물리·스왑·커널 메모리의 사용량, 사용 가능한 메모리 양 등 메모리의 사용 상태를 출력한다.
형식
free [option]
옵션
옵션 설명 -b, —bytes 메모리 정보를 바이트 단위로 출력한다. -k, —kilo 메모리 정보를 킬로바이트 단위로 출력한다. -m, —mega 메모리 정보를 메가바이트 단위로 출력한다. -g, —giga 메모리 정보를 기가바이트 단위로 출력한다. -h, —human 모든 필드 단위를 값에 따라 자동 선택하여 출력한다. -s, —seconds 지정한 시간(초 단위)마다 출력을 갱신한다. 예제
$ free -hs 1 # 메모리 사용량을 주어진 값에 맞춰 단위를 자동 선택하여 1초마다 출력
☑️ 디스크 쿼터(Disk Quota)
디스크 쿼터 개요 및 설정 방법
- 디스크 쿼터
- 다중 사용자 시스템
- 디스크는 크기가 정해진 자원이라 사용자별 디스크 사용량을 할당할 수 있는 방법을 제공한다.
- 사용자가 할당량을 모두 사용 시, 관리자에게 알림을 통지할 수 있다.
- 각 사용자마다, 각 그룹마다 설정할 수 있다.
- 다중 사용자 시스템
- 디스크 쿼터 설정 방법
/etc/fstab
파일을 편집하여 디스크 쿼터 기능을 활성화하고 분할된 파티션에 설정을 해야 한다.ex. 별도의 디스크(
/etc/sdb5
)를 생성하고, 4번째 필드에usrquota
와grpquota
를 지정해 사용자 쿼터와 그룹 쿼터를 활성화$ sudo cat /etc/fstab
/etc/fstab
의 수정사항을 반영하기 위해 해당 파일 시스템을 remount한다.$ sudo mount -o remount /quota-test
SELinux를 비활성화한다.
$ sudo setenforce 0
사용자를 위한 쿼터 파일을 생성하고 디스크 사용량을 설정한다.
$ sudo quotacheck -mf /quota-test
그룹을 위한 쿼터 파일을 생성하고 디스크 사용량을 설정한다.
$ sudo quotacheck -gm /quota-test
francis 사용자에 대해 쿼터 정책을 설정한다.
$ sudo edquota francis
mygroup 그룹에 대해 쿼터 정책을 설정한다.
$ sudo edquota -g mygroup
디스크 쿼터 기능을 시작한다.
$ sudo quotaon /quota-test
사용자 쿼터 기능과 그룹 쿼터 기능이 잘 설정되었는지 확인한다.
$ sudo repquota /quota-test OR $ sudo repquota -g /quota-test
디스크 쿼터 관련 명령어
- quotacheck
- 지정한 파일 시스템에 대한 사용량을 체크해 쿼터 기록 파일을 생성하거나 기존 파일을 갱신한다.
- 체크할 디렉터리 지정시 독립적으로 분리된 파티션의 마운트지점이어야 한다.
- 분리된 파티션이 없다면 루트 디렉터리(
/
)로 지정한다.
- 분리된 파티션이 없다면 루트 디렉터리(
- 쿼터 기록 파일 이름은 aquota.user, aquota.group이다.
- 기존 파일을 갱신하지 않고 새로 생성 시
-c
옵션을 사용한다.
- 기존 파일을 갱신하지 않고 새로 생성 시
- 사용량 체크 시 파일 시스템을 읽기 전용으로 만들기 위해
remount
동작을 수행한다.- 이 기능을 사용하지 않으려면
-m
옵션을 사용한다. - 읽기 전용 파일의 사용량 체크에 실패한다면
-M
옵션을 통해 읽기 쓰기용으로 다시remount
한 후 파일 시스템 사용량 체크를 강제해도 된다.
- 이 기능을 사용하지 않으려면
형식
quoatacheck [option] filesystem-directry
옵션
옵션 설명 -a, -all /etc/mtab
내의 NFS 파일 시스템을 제외한 모든 로컬 파일 시스템의 사용량을 모두 체크한다.-M, —try-remount 파일 시스템을 읽기 전용으로 remount
한 후 동작 실패 시 읽기 쓰기용으로 다시remount
하고 동작을 재시도 한다.-m, —no-remount 파일 시스템을 읽기 전용으로 remount
하는 동작을 수행하지 않는다.-f, —force 이미 쿼터 기능 활성화 상태에서 사용량을 체크해 새로 쿼터 파일을 생성할 때 사용한다. -u, —user 사용자용 쿼터 파일을 체크할 때 사용한다.(기본 옵션임) -g, —group 그룹용 쿼터 파일을 체크할 때 사용한다. -c, —create-files 존재하는 쿼터 파일을 읽지않고 새롭게 사용량을 검색하고 쿼터 파일을 새로 생성한다. 예제
$ sudo quotacheck /quota-test # /quota-test 파일 시스템에 대해 사용자 쿼터 체크함 # /etc/mtab에 정의된 모든 로컬 파일 시스템에 대해 사용자 및 그룹 쿼터 체크를 함 $ sudo quotacheck -aug # /quota-test 파일 시스템에 대해 읽기 전용 remount 없이 사용자 쿼터 체크를 함 $ sudo quotacheck -mf /quota-test # 기존 쿼터 파일을 참조하지 않고 다시 검색하여 새로 생성 $ sudo quotacheck -cf /quota-test
- edquota
- 사용자 또는 그룹을 위한 쿼터를 편집한다.
- 기본값으로 지정한 사용자나 그룹에 대한 쿼터 파일이 VI 에디터를 통해 열린다.
- 설정 변경 후 저장하면 설정값이 변경된다.
형식
edquota [option] user or group
옵션
옵션 설명 -u 지정한 사용자의 사용자 쿼터를 설정하며, 기본값이다. -g 지정한 그룹의 그룹 쿼터를 설정한다. -t 각 파일 시스템에 대해 soft time 제한에서 hard time 제한까지 유예시간을 설정한다. -p 특정 사용자의 쿼터 설정을 다른 사용자에게 복제할 때 사용한다. 예제
# 지정한 francis 사용자의 쿼터 설정을 변경한다. $ sudo edquota francis OR $ sudo edquota -u francis # -u 옵션은 기본 옵션이므로 특별히 옵션을 주지 않아도 된다. $ sudo edquota -g mygroup # 지정한 mygroup의 쿼터 설정을 변경 $ sudo edquota -p francis chris # francis의 쿼터설정을 그대로 chris에게 복사한다. $ sudo edquota -t # 각 파일 시스템의 유예기간을 설정한다.
- repquoata
- 시스템상 사용자 및 그룹의 파일 시스템 사용량과 쿼터의 정보를 출력한다.
형식
repquota [option] filesystem-directory
옵션
옵션 설명 -a, —all /etc/mtab
상의 모든 파일 시스템의 정보를 출력한다.-u, -user 사용자 쿼터 정보를 출력하며, 기본값이다. -g 그룹 쿼터 정보를 출력한다. 예제
$ sudo repquoata /quota-test # /quota-test 경로의 사용자 쿼터 정보 출력 $ sudo repquota -g mygroup /quota-test # /quota-test 경로의 그룹 쿼터 정보 출력 $ sudo repquota -a # /etc/mtab에 설정된 모든 파일 시스템에 대한 모든 쿼터 정보 출력
- quota
- 사용자의 디스크 사용량과 쿼터 정보를 출력한다.
형식
quota [option] user or group
옵션
옵션 설명 -u, —user 사용자 쿼터 정보를 출력한다. (기본값) -g, —group 그룹 쿼터 정보를 출력한다. 예제
$ sudo quota # 현재 사용자에 대한 파일 시스템 사용량 및 쿼터 정보 출력 $ sudo quota -u francis # 특정 사용자인 francis에 대한 쿼터 정보 출력
- quotaon, quotaoff
quotaon
: 지정한 파일 시스템의 쿼터 설정 활성화quotaoff
: 지정한 파일 시스템의 쿼터 설정 비활성화형식
quotaon [option] filesystem-directory quotaoff [option] filesystem-directory
옵션
옵션 설명 -u, —user 지정한 사용자의 쿼터 기능을 활성화, 비활성화한다. -g, —group 지정한 그룹의 쿼터 기능을 활성화, 비활성화한다. -f, —off quotaon
에 이 옵션을 사용하면quotaoff
와 동일한 기능을 수행한다.예제
$ quotaon francis # francis 사용자의 쿼터 설정 활성화 OR $ quotaon -u francis $ quotaon -g mygroup # mygroup 그룹의 쿼터 설정 활성화 $ quotaoff francis # francis 사용자의 쿼터 설정 비활성화
- setquota
- vi 편집기 대신 명령줄에서 사용자 및 그룹의 쿼터 설정을 수행한다.
형식
setquoata [option] user or group block-soft block-hard inode-soft inode-hard setquota -t block-grace inode-grace filesystem-directory
옵션
옵션 설명 -u, —user 사용자를 위한 쿼터 설정을 변경한다. -g, —group 그룹을 위한 쿼터 설정을 변경한다. -t, —edit-period 각 파일 시스템에 대해 soft time limit
에서hard time limit
에 도달할 때까지 유예기간을 초 단위로 변경한다.예제
# bob 사용자가 루트 파일 시스템(/)을 사용할 때 2GB의 사용량 제한과 1000000개의 아이노드 제한을 설정한다. $ sudo setquota -u bob 2097152 2097152 1000000 10000000 / # 루트 파일 시스템(/)에 대해 블록의 유예기간과 아이노드의 유예기간을 8시간으로 설정한다. $ sudo setquota -t 28800 28800 /