📝 LVM
📜 LVM 주요 기능
- 여러 개의 하드디스크를 합쳐서 한 개의 파일 시스템으로 사용하는 것으로 필요에 따라 다시 나눌 수 있음
- 예로 2TB 용량의 하드디스크 2개를 합친 후에 다시 1TB와 3TB로 나눠서 사용할 수 있다.
📜 용어
- Physical Volumn(물리 볼륨): /dev/sda1, /dev/sdb1 등의 파티션을 지칭하는 용어
- Volumn Group(볼륨 그룹): 물리 볼륨을 합쳐서 1개의 물리 그룹으로 만드는 것
- Logical Volumn(논리 볼륨): 볼륨 그룹을 1개 이상으로 나눠서 논리 그룹으로 나눈 것
RAID와 LVM의 핵심적인 차이점은 디스크에서 논리적으로 공간을 나누는 기준이 파티션(Partition)이냐 볼륨(Volumn)이냐의 차이
파티션은 디스크를 하나의 개념으로 보는 것이 아닌 각각의 장치로 구분짓기 때문에 용량 증설이 불편함
볼륨은 디스크를 하나의 개념으로 보기 때문에 용량 증설이 편함
📝 LVM 구현
📜 물리적 하드디스크 장착
- 실습에 앞서 LVM 구현을 위한 하드디스크 2개를 추가로 장착해준다.
📜 선처리 작업
- 실습 흐름도와 동일하게 fdisk 명령어를 통해 각각의 디스크에 대한 파티션을 생성한다.
# fdisk /dev/sdb
# fdisk /dev/sdc
- 여기서 파티션 타입은 'Linux LVM(8e)'로 설정한다.
- 이후 pvcreate 명령어를 통해 자기 자신을 한 번 실행시켜줌으로써 물리 볼륨으로 만들어준다.
# pvcreate /dev/sdb1
# pvcreate /dev/sdc1
📜 볼륨 그룹 생성
- 다음으로 vgcreate 명령어를 통해 두 개의 물리 볼륨을 하나의 볼륨 그룹으로 묶어준다.
# vgcreate /dev/myVG /dev/sdb1 /dev/sdc1
- vgdisplay 명령어를 통해 현재 만들어진 볼륨 그룹을 확인해볼 수 있다.
📜 논리 볼륨으로 나누기
- 이제 lvcreate 명령어를 통해 볼륨 그룹을 각각의 논리 볼륨으로 나누어준다.
# lvcreate --size 1G --name myLG1 myVG
- 첫 번째 논리 볼륨의 크기는 1GB, 이름은 'myLG1'으로 지정해주었다.
- 마찬가지로 두 번째, 세 번째 논리 볼륨까지 나누어준다.
# lvcreate --size 3G --name myLG2 myVG
# lvcreate --extents 100%FREE --name myLG3 myVG
- 이때 세 번째 논리 볼륨의 경우 디스크의 남은 용량이 완벽하게 1GB가 아닐 수 있기 때문에 디스크의 나머지 용량을 모두 사용한다는 의미에서 --extents 옵션을 사용하여 위와 같이 작성해준다.
- 이후 /dev/myVG 디렉터리를 확인해보면 아래와 같은 결과가 출력되는 것을 확인할 수 있다.
📜 논리 볼륨 포맷
- 이제 각각을 ext4 파일 시스템으로 포맷하기 위해 아래 명령어를 수행한다.
# mkfs.ext4 /dev/myVG/myLG1
# mkfs.ext4 /dev/myVG/myLG2
# mkfs.ext4 /dev/myVG/myLG3
📜 마운트
- 이후 각각의 논리 볼륨을 마운트하여 실제 사용할 수 있도록 하고, fstab 파일을 수정하여 재부팅 시에도 마운트가 해제되지 않도록 하여 마무리해준다.
# mkdir /lvm1 /lvm2 /lvm3
# mount /dev/myVG/myLG1 /lvm1
# mount /dev/myVG/myLG2 /lvm2
# mount /dev/myVG/myLG3 /lvm3
📝 RAID에 CentOs 설치
- RAID 방식의 디스크에 운영체제를 설치하고, 디스크에 문제가 발생해도 운영체제가 정상적으로 작동하게끔 하는 실습을 진행해보자
📜 물리적 하드디스크 장착
- 우선 위의 구성도와 동일하게 80GB 크기의 하드디스크 두 개를 추가해준다.
- 이후 CD/DVD 장치에서 운영체제 설치를 위한 ISO 파일을 설정해준다.
📜 CentOS 운영체제 설치
- CentOS 운영체제의 설치 과정의 대부분은 기존과 동일하며, 신경써야 할 부분은 디스크 및 파티션 설정 부분이다.디스크 파티션 설정은 위와 같이 설정해주어야 한다.
- 설정 내용은 실습 구성도와 동일하며, 장치 유형을 'RAID'로 바꾸어주고 RAID 레벨은 'RAID1'으로 설정해주었다.
- 참고로 설정을 완료했다면 아래로 스크롤하여 '설정 업데이트' 버튼을 클릭해주어야 한다.
- 결론적으로는 위와 같이 OS 자체를 RAID 1 방식으로 설치할 수 있으며, 이렇게 하면 해당 디스크에 오류가 발생하더라도 부팅이 정상적으로 되는 결과를 얻을 수 있다.
- 매우 중요한 시스템이라면 위와 같은 방식을 적용해보는 것도 한 번쯤 고민해볼 수 있을 것 같다.
📝 사용자별 공간 할당 - 쿼터
📜 쿼터(Quota)
- 쿼터(Quota)란 파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것
- '/' 파일 시스템을 많은 사용자가 동시에 사용하게 되면 CentOS 서버를 운영하기 위해서 디스크를 읽고 쓰는 작업과 일반 사용자가 읽고 쓰는 작업이 동시에 발생하므로 전반적인 시스템의 성능이 저하됨
- 즉, 파일 시스템을 '/'로 지정하는 것보다는, 별도의 파일 시스템을 지정해서 해당 부분을 쓰도록 하는 것이 좋음
파일 시스템이란 파일에 이름을 붙이고 저장, 탐색을 위해 파일을 어디에 위치 시킬 것인지를 나타내는 체계이다.
파일들이 디스크 상에서 구성되는 방식을 뜻하기도 한다.
📜 쿼터 실습
- 사용자를 만들고 해당 사용자에게 공간을 할당한 뒤, 쿼터의 설정 및 작동에 대한 명령어를 확인해보자
📄 물리적 하드디스크 장착
- 우선 쿼터용 파일 시스템으로 사용할 10GB의 하드디스크를 추가로 장착해주었다.
📄 디스크 파티셔닝, 포맷, 마운트
- 이후 이전에 수행했던 작업들과 동일하게 디스크 파티셔닝 및 포맷, 마운트를 진행한다.
# fdisk /dev/sdb
# mkfs.ext4 /dev/sdb1
# mkdir /userHome
# mount /dev/sdb1 /userHome
- 추가로 /etc/fstab 파일을 수정함으로써 작업을 마무리한다.
📄 사용자 추가
- 다음으로 방금 추가한 디스크(/userHome)에 사용자(사용자 홈 디렉터리)를 생성하고, 비밀번호까지 설정해준다.
# useradd -d /userHome/john john
# useradd -d /userHome/bann bann
# passwd john
# passwd bann
📄 /etc/fstab 수정
- 이제 해당 디스크(/dev/sdb)를 쿼터 파일 시스템으로 지정하기 위해 /etc/fstab 파일에 내용을 추가해준다.
- 이후 아래와 같이 해당 디렉터리에 대해 다시 마운트를 수행하여 수정된 내용이 적용되도록 한다.
# mount --options remount /userHome
- mount 명령어를 통해 마운트 목록을 확인해보면 해당 디스크가 쿼터용으로 지정된 것을 확인할 수 있다.
📄 쿼터 DB 생성 및 개인별 쿼터 설정
- 이후 쿼터 DB를 생성하기 위해 아래 명령어를 차례대로 입력해준다.
# quataoff -avug # 쿼터 끄기
# quatacheck -augmn # 쿼터 체크
# rm -rf aquato.* # 쿼터 관련 파일 삭제
# quatacheck -augmn
# touch aquato.user aquato.group # aquato.user, aquato.group 파일 생성
# chmod 600 aquato.* # aquato.* 파일에 대한 접근 권한 설정(소유자만 접근)
# quatacheck -augmn
# quataon -avug # 쿼터 켜기
- 이후 각 사용자에게 할당할 파일의 용량 및 개수를 설정하기 위해 아래와 같은 명령어를 수행한다.
# edquato -u john
# edquato -u bann
- 위 명령어를 입력하면 아래와 같은 vi 화면으로 들어가게 된다.
- 여기서 blocks는 용량(크기)를 나타내고 soft는 경고 수준, hard는 제한 수준을 의미한다.
- 즉, soft의 경우 그 범위를 넘어가면 사용할 수는 있지만 경고가 발생하고, hard의 경우 아예 범위를 넘어갈 수 없는 수준의 제한을 의미한다.
- inodes는 파일의 개수를 나타내고, 그 뒤에 있는 soft와 hard는 역시 위와 동일한 의미를 갖는다.
- 보통의 경우 파일의 개수(inodes) 보다는 용량(blocks)의 soft와 hard 값의 제한을 두어 쿼터를 제한하는 편이다.
- 해당 실습에서 john의 경우 soft 값은 20MB, hard 값은 30MB로 설정하여, 20MB 이상의 용량을 사용할 경우 경고를 발생시키고, 30MB 이상의 용량은 사용할 수 없도록 제한하였다.
- 추가로, 만약 위와 같이 설정한 사용자 쿼터 정보를 다른 사용자에게 동일하게 적용하고 싶다면 아래와 같은 명령어로 손쉽게 해결 가능하다.
# edquato -p john bann
📄 결과 확인
- 이후 실제로 용량에 따른 파일 사용이 제한되는지 결과를 확인해보기 위해 john 사용자로 접속하여 해당 사용자의 홈 디렉터리에 임의의 파일을 반복적으로 복사 저장한 뒤, 사용 용량에 따른 동작을 확인해보았다.
- 그 결과를 확인해보면 처음 몇 번은 파일이 정상적으로 저장되다가, 어느 시점에는 경고문구가 출력되고, 이후에는 아예 오류가 발생하면서 저장이 제대로 되지 않는 모습을 확인할 수 있다.
- 위 화면에서보면 test1부터 test4까지 파일이 잘 저장된 것처럼 보이지만 test4의 경우만 용량이 다른 것을 확인할 수 있다.
- 즉, test4 파일이 저장되는 과정에서 오류가 발생하여 정상적으로 파일이 저장되지 않았다는 것을 확인할 수 있으며, test3까지는 경고문구만 출력되었을뿐 저장은 정상적으로 된 것을 확인할 수 있다.
- quato 명령어를 통해 현재 사용자의 쿼터 정보를 확인해볼 수도 있다.
- 참고로 grace가 '6days'로 되어있는 것은 해당 사용자는 현재 경고 수준을 넘어서는 용량을 사용하고 있으며 이를 해결하지 않으면 6일 뒤, 넘어서는 용량에 해당하는 데이터 또한 삭제될 수 있음을 의미한다.
- 루트 사용자 역시 현재 사용자들의 사용 용량을 확인해볼 수 있으며 그 명령어의 형식 아래와 같다.
# repquato /userHome
'🐧 Linux > 이것이 리눅스다(CentOS 8)' 카테고리의 다른 글
[이것이 리눅스다(CentOS 8)] 08장. 원격지 시스템 관리하기 (0) | 2023.04.02 |
---|---|
[이것이 리눅스다(CentOS 8)] 07장. 쉘 스크립트 프로그래밍 (0) | 2023.04.02 |
[이것이 리눅스다(CentOS 8)] 06장. 하드디스크 관리와 사용자별 공간 할당(2) (0) | 2023.03.31 |
[이것이 리눅스다(CentOS 8)] 06장. 하드디스크 관리와 사용자별 공간 할당(1) (0) | 2023.03.31 |
[이것이 리눅스다(CentOS 8)] 04장. 필수개념과 명령어(4) (0) | 2023.03.28 |