본문 바로가기
Linux/Rocky Linux

[Rocky Linux] 7. RAID6와 RAID 1+0 / LVM 구성하기 / 쿼터 구현하기

by 박기린 2024. 11. 21.
본 내용은 대학 강의시간에 배운 내용을 따로 정리하는 글로, 독자를 구체적으로 정하지 않고 썼습니다.
따라서 읽기에 많은 불편함이 있습니다.

다른 글을 읽으시는 것을 적극 권장드립니다.

RAID6 만들기

Server 가상머신을 초기상태로 되돌린 후, 총 8개의 1gb 디스크를 추가합니다.

 

 

 

fdisk /dev/sdb

# n - p - enter 3번 - w

 

/dev/sdb ~ /dev/sdi 까지 전부 파티셔닝합니다.

 

 

 

 

mdadm --create /dev/md6 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

sdb부터 sde까지 모두 엮어서 md6(RAID6)를 제작합니다.

 

 

 

 

mkfs.ext4 /dev/md6

md6에 파일시스템을 연결합니다.

 

 

 

 

 

raid6폴더를 생성한 후, md6를 마운트합니다.

 

 

 

 


RAID 1+0 만들기

mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdf1 /dev/sdg1

mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sdh1 /dev/sdi1

우선 두 개의 RAID1 디스크를 만듭니다.

 

 

 

 

 

mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/md2 /dev/md3

이제 이 둘을 md0(RAID0)으로 합칩니다.

 

 

 

 

 

mkfs.ext4 /dev/md0

파일시스템을 생성합니다.

 

 

 

 

raid10 폴더를 생성한 후, md0을 마운트합니다.

 

 

 

 


재부팅 설정 마무리

이제 md6와 md10이 재부팅될 때 자동으로 마운트되게 설정해야 합니다.

 

 

 

gedit /etc/fstab

fstab 파일에

 

 

 

/dev/md6	/raid6	ext4	defaults	0	0
/dev/md0	/raid10	ext4	defaults	0	0

위 코드를 입력합니다.

 

 

 

 

 

 

# mdadm --detail --scan

생성한 모든 md 디스크의 정보를 복사한 후,

 

 

 

 

# gedit /etc/mdadm.conf

mdadm.conf 파일에 붙여넣기합니다.

name 부분은 제거합니다.

 

 

 

 

 

 


RAID6와 RAID1+0 고장 테스트 하기

테스트를 위해 각 Raid에 아무 파일이나 집어넣어봅니다.

 

 

 

가상머신 설정에서,

- RAID6는 하드디스크 아무거나 2개

- RAID 1+0은 md2와 md3에 연결된 하드디스크 각각 1개 씩 총 2개

제거합니다.

 

 

 

 

리눅스를 실행하면, 정상적인 상태가 아니라서 로딩은 오래 걸리지만, 정상부팅이 됩니다.

이제 터미널을 켜서 각각의 RAID 상황을 살펴봅니다.

 

 

 

 

 

 

RAID6는 두 개의 하드디스크가 고장나도 잘 작동합니다.

 

 

 

 

RAID 1+0은 RAID1 두 개를 RAID0으로 묶은 것이기 때문에, md2와 md3가 잘 작동하면 문제가 없습니다.

 

 

RAID1인 md2와 md3는 각각 하드디스크가 하나 고장나도, 정상작동합니다.

 

 

 

 

 


LVM 구성하기

 

Server를 초기상태로 돌린 후, 2gb와 3gb 하드디스크를 하나씩 추가합니다.

 

 

 

 

fdisk /dev/sdb
fdisk /dev/sdc

파티셔닝을 할 때, 이전과는 다른 방식으로 진행합니다.

 

 

 

[n - p - enter 3번]까지는 동일한데,

[t - 8e] 를 추가해서, 'Linux LVM'모드를 지정해야 합니다.

그리고 w로 나옵니다.

 

 

진행결과입니다.

 

 

 

 

pvcreate /dev/sdb1
pvcreate /dev/sdc1

pvcreate 명령어를 통해 각각을 물리볼륨으로 지정합니다.

 

 

 

vgcreate myVG /dev/sdb1 /dev/sdc1

그리고 두 물리그룹을 모아서, vgcreate를 이용해서, 볼륨 그룹 /dev/myVG를 생성합니다.

 

 

 

vgdisplay

위 명령어를 통해 볼륨 그룹을 확인할 수 있습니다.

 

 

 

 

이제 논리볼륨을 만들 차례입니다.

lvcreate --size 1G --name myLG1 myVG
lvcreate --size 3G --name myLG2 myVG
lvcreate --extents 100%FREE --name myLG3 myVG

lvcreate 명령어로, myVG 볼륨그룹에서 1gb, 3gb, 1gb 세 개의 논리볼륨을 만듭니다.

계산을 잘한다고 하더라도, 나머지 볼륨을 나눌 때는 수치가 정확히 안 떨어지는 경우가 발생합니다.

그래서 '--extents 100%FREE' 속성을 이용해서, 나머지 용량을 전부 책정하는 방식으로 논리 볼륨을 만듭니다.

 

 

 

 

myVG 안에 myLG 논리 볼륨들을 확인할 수 있습니다.

 

 

 

mkfs.ext4 /dev/myVG/myLG1
mkfs.ext4 /dev/myVG/myLG2
mkfs.ext4 /dev/myVG/myLG3

이제 각각 파일시스템을 설치하고,

 

 

 

mkdir /lvm1 /lvm2 /lvm3

mount /dev/myVG/myLG1 /lvm1
mount /dev/myVG/myLG2 /lvm2
mount /dev/myVG/myLG3 /lvm3

myLG1~3을 lvm1~3 폴더를 생성하고 마운트해줍니다.

그러면 잘 작동합니다.

 

 

 

gedit /etc/fstab
/dev/myVG/myLG1	/lvm1		ext4		defaults	0	0
/dev/myVG/myLG2	/lvm2		ext4		defaults	0	0
/dev/myVG/myLG3	/lvm3		ext4		defaults	0	0

fstab 파일에도 위 코드를 넣어주면, 재부팅해도 잘 마운트됩니다.

 

 

 

 


쿼터(사용자 용량 할당) 연습하기

Server 가상머신을 초기상태로 되돌린 후, 쿼터 구현에 사용할 하드디스크 (10Gb)를 하나 추가합니다.

 

 

 

fdisk /dev/sdb

 

파티셔닝 (n - p - enter3번 - w)



mkfs.ext4 /dev/sdb1

 

파일시스템 연결


mkdir /userHome
mount /dev/sdb1 /userHome

 

/userHome생성 후, 하드디스크 마운트




gedit /etc/fstab
/dev/sdb1 /userHome ext4 defaults 0 0

 

자동 마운트까지 설정합니다.

 

 

 

 

사용자 생성하고 용량 할당하기

useradd -d /userHome/user1 user1
useradd -d /userHome/user2 user2

이제 두 명의 사용자를 만듭니다.

 

 

 

passwd user1
passwd user2

비밀번호도 지정해줍니다.

실습의 편의성을 위해 1234로 해줍니다.

 

 

 

gedit /etc/fstab

이제 fstab에서 /userHome을 쿼터용으로 등록해야 합니다.

 

 

 

 

# 전
/dev/sdb1 /userHome ext4 defaults 0 0

# 후
/dev/sdb1 /userHome defaults,usrjquota=aquota.user,jqfmt=vfsv0 0 0

중간에 defaults,usrjquota=aquota.user,jqfmt=vfsv0 를 추가합니다.

 

 

 

주의!

jqfmt 전에 있는 ','를 잘 구분해서 적습니다. '.'로 넣었다가 오류가 났었습니다.

 

 

 

mount --options remount /userHome

설정을 적용하기 위해, 위 명령어를 통해 리마운트(재부팅효과)를 합니다.

 

 

 

 

쿼터DB 생성하기

cd /userHome/

quotaoff -avug
quotacheck -augmn
rm -rf aquota.*
quotacheck -augmn
touch aquota.user aquota.group
chmod 600 aquota.*
quotacheck -augmn
quotaon -avug

위 명령어들을 순차적으로 따라갑니다.

 

 

 

edquota -u user1

이제 위 명령어로 사용자 별 쿼터를 지정할 수 있습니다.

 

 

 

 

이런 입력창이 뜨는데, vi 편집기와 유사합니다.

i를 누르면 편집모드로 들어갑니다.

 

 

 

softhard0(제한없음)에서
각각 39720(30mb), 40960(40mb)로 제한합니다.

 

그리고 [esc - :wq]로 저장합니다.

 

 

 

 

 

user1으로 로그인한 후, 파일을 40mb 초과해서 저장하려고 하면 오류가 뜨는 걸 확인할 수 있습니다.

 

 

 

 

복사한 파일을 검사해보면, test4 파일은 정상팡일이 아니라 '짤린 채로 저장된' 파일임을 확인할 수 있습니다.

 

 

 

 

quota

위 명령어를 통해, 사용자가 스스로의 쿼터 사용량을 확인할 수 있습니다.

 

 

 

 

# repquota /userHome

관리자는 위 명령어를 통해, 각 유저들의 쿼터 실황을 확인할 수 있습니다.

6일 뒤에 hard에 저장된 용량이 soft 용량까지 제거될 수 있다는 내용도 grace 필드를 통해서 확인할 수 있습니다.

 

 

 

 

edquota -p user1 user2

-p 속성을 통해 첫 번째 유저의 쿼터 설정을 두 번째 유저에게 복붙할 수 있습니다.

사진을 통해 잘 복사된 걸 확인할 수 있습니다.

 

 

 

 

 

 

 

 

반응형