RAID( Redundant Array of Independent Disks )
- 여러 개의 하드디스크를 묶어서 성능 향상, 데이터 보호 또는 두가지 다 제공하는 기술
- 용량을 늘리거나, 데이터를 중복으로 저장시킴으로써 속도를 늘리거나 데이터를 안전하게 저장시킬 수 있는 디스크 관리 방식
두 가지 명령어 필요
- fdisk : 파티션을 관리.
- mdadm : Multi Disk ADMin , 레이드 명령어.
📌 RAID 0 = Striping(분산 저장), 속도 up(매우 빠름), 데이터 보호 ❌
- 하나의 디스크에 저장을 한다면 속도와 입출력 속도가 늦음, 공간 효율 그대로(100%)
- 나눠서 저장을 한다면 속도가 향상됨,그리고 데이터 입출력도 빠른 속도로 가능
- 단점은 하나의 디스크에 문제가 생기면 모든 데이터가 유실됨
📌 질문: 하나의 디스크에 만들어도 똑같은 문제가 발생하지 않나?
답변: 단일 디스크는 하나라고 생각하고 RAID 0은 300개라고 생각을 했을 때 뭐가 더 고장 날 가능성이 높을까 생각해 보자. 근데 300개 중 하나라도 고장 나면 전체 데이터 유실이 됨.
-> 즉, 단일 디스크는 그냥 하나만 사용하니까 당연히 고장 나면 데이터가 날아가는 거고, RAID 0은 여러 개의 디스크를 하나처럼 사용하니까 위험성이 더 커지는 거임
실습
[root@web ~]# yum -y install mdadm
os를 추가하기 위해서는 shut down
- 똑같이 2개 만들기
- dev/sda 파티션들임
d: 파티션 삭제
l: 리스트
n:파티션 추가
p: 생성한 파티션 확인
w: 저장 후 종료
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
# (1아님 enter 했을 때 첫 번째 파티션으로 감)
First sector (2048-2097151, default 2048):
# ( 2048-2097151 내가 갖고 있는 파티션 범위를 말함)
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): (enter)
First sector (2048-2097151, default 2048): (enter)
Using default value 2048
Last sector, +sectors or +size {K, M, G} (2048-2097151, default 2097151): (enter)
Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB is set
Command (m for help): p
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x2c671ca8
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2097151 1047552 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@web ~]#
- 파티션 추가된 걸 확인할 수 있음
[root@web ~]# mdadm --create /dev/md0 이름 --level=0 Raid 0--raid-devices=2 장치 수 /dev/sdb1 /dev/sdc1 파티
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
-> 잘된 걸 확인할 수 있음
[root@web ~]# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: cannot open /dev/sdb1: Device or resource busy
-> 한번 더 입력하면 busy라고 나오니까 알아두삼
[root@client ~]# yum remove -y mdadm
- 혹시 디테일을 쳐도 아무것도 안뜨면 mdadm을 삭제했다가 다시 설치
파티셔닝
- 파티셔닝이 된 상태(/dev/sdb1)와 디스크(/dev/sdb)는 엄연히 다른 상태
- 하나의 물리적인 디스크를 여러 개의 논리적 파트로 나누는 과정임
- 이렇게 나누면 각 파티션을 독립적인 드라이브처럼 사용할 수 있음
💡 즉, 하나의 하드디스크를 여러 개의 작은 가상 디스크처럼 쪼개서 쓰는 것!
- 친절한 설명도 있음
-> 어떤 디스크나 장치, 파티션을 사용하려면 꼭 파일 시스템을 만들어줘야 함
[root@web ~]# mkdir /raid0
[root@web ~]# mount /dev/md0 /raid0
- 마운트
- 대소문자 미구분
[root@web ~]# cp anaconda-ks.cfg /raid0/
- 테스트를 위해 아무 파일이나
- 장치의 이름 'Hard Disk 3'이 때에 따라서 순서나 이름이 바뀔 수 있기 때문에 내가 지우고 싶은 장치 순번을 명확하게 확인하고 싶다면 advanced를 보면 됨.
- 3번째 디스크 삭제
- 다시 시작
- 평소랑 다르게 생성되는게 맞음 비번은 root 비번을 입력
- mdadm -D를 통해 디테일을 보면 state가 inactive
📌마운트도 안되고 당연히 데이터를 살릴 수 없음(RAID 0은 뭐다? 모든 데이터 유실 )
vi /etc/fstab
- 주석해야됨 그래야 이머전시 버전을 나갈 수 있
혹시라도 디스크를 추가해서 레이드를 재구성하면, 데이터를 살릴 수도 있으니까
전원을 종료 후 디스크를 한 개 추가해 보자.(vm 설정하고 넘어오기)
위에 파란색 상자 내용(중간에 오타 있음)
[root@web ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@web ~]# mdadm --add /dev/md0 /dev/sdc1
mdadm: error opening /dev/md0: No such file or directory
[root@web ~]# mdadm --run /dev/md0
mdadm: error opening /dev/md0: No such file or directory
-> 원래 문제가 있던 레이드디스크 였기 때문에 stop을 하는 순간 /dev/md0 자체가 사라져 버렸음
📌 RAID 1 (Mirroring: 동일한 데이터 복사, 단독 보다 느림, 1개 고장 나면 복구 가능)
- 용량 효율: ❌ 50% (2TB + 2TB = 2TB 사용 가능, 나머지는 백업 용도)
- 사용 예시: 중요한 데이터 서버 (예: 금융, 의료)
- 읽기 속도는 두 배 정도 향상
💡 비유: 📂 시험 노트를 두 개 복사해두는 방식 (하나 잃어버려도 다른 한 개 있음)
실습
[root@client ~]# fdisk /dev/sdd
- 디스크 2개 더 추가 (하나만 했다가 하나 더 추가했음 그래서 내 거에는 sdd랑 sdd1은 있지만 sde는 없음. 그래서 지금 추가하겠음)
[root@client ~]# fdisk /dev/sde
- 추가된 걸 확인할 수 있음
[root@client ~]# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1
[root@client ~]# mdadm --detail /dev/md1
- 잘 만들어졌는지 확인
[root@client ~]# mkfs -t ext4 /dev/md1
- 파일시스템 생성
= 1GB, 효율 50%
[root@client ~]# cp ~/anaconda-ks.cfg /raid1
# 테스트 파일을 복사
[root@client ~]# vi /etc/fstab
# 부팅시에도 마운트 유지하도록.
(마지막 배열)5번째 디스크 삭제하고 다시 시작했을 때 아까처럼 이머전시 모드가 아닌 일반 모드로 잘 들어가 짐
- 마운트도 잘 되어있고, 데이터도 잘 살아있는 것을 확인 가능
- 잘 동작중이긴 하지만 완벽한 상태는 아님
- 서버 전원 종료 후 새로운 디스크를 한 개 추가한 다음 파티션을 잡아주자
[root@client ~]# fdisk /dev/sde
📌 RAID 5 (Striping + Parity(패리티 저장), 빠름, 1개 디스크 고장 복구 가능)
- 패리티비트란? 1 개수를 짝수나 홀수로 맞춤
- 용량 효율: (N-1)/N (예: 4개 디스크 효율 75% → 3개 분량 사용 가능), 효율이 미러링보다 높음
- 사용 예시: 중소기업 데이터 서버
💡 비유: 📂 책을 나눠 필사하면서, 한 명이 실수하면 다른 사람이 힌트를 줘서 다시 쓸 수 있게 하는 방식
실습
- 이번에는 4개 더 추가해서 총 9개 디스크 만들기
- 전원 종료 후 1GB 디스크 4개를 추가 후 부팅해 주자
fdisk /dev/sdi로 다 추가해 주기
mdadm --create /dev/md5 --level=5 --raid-devices=4 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1
[root@web ~]# mkdir /raid5
[root@web ~]# mount /dev/md5 /raid5
[root@web ~]# cp ~/anaconda-ks.cfg /raid5
[root@web ~]# mkdir /raid5
[root@web ~]# mount /dev/md5 /raid5
[root@web ~]# cp ~/anaconda-ks.cfg /raid5
[root@web ~]# vi /etc/fstab
[root@web ~]# init 0
- 9번째 디스크 삭제 후 부팅
- 복구는 아까 해본 적이 있으니까 패스하고, 디스크를 한 개 더 지워보자
- 이머전시 모드로 들어가는 걸 확인 가능함
- 다시 살릴 수 없음
- 목록에 없음
- mdadm --run을 해도 동작을 하지 않는다. (옵션에 명시된 장치 부족)
- 올바르게 코드를 작성했을 때도 이머전시 모드로 들어가는 경우가 있음. 그때 위의 명령어를 입력
전원 종료 후 디스크 2개 추가
파티션 잡은 후 VM에 mdadm --add를 해보세요
- 파티션 추가해야 하는 장치들
- 추가된 파티션
- 추가도 안되고
- stop후 실행도 안됨
- 결론적으로 reid5는 두 개의 디스크를 삭제하면 복구가 불가능함
📌 RAID 6 (Striping + Double Parity, raid 5보다 느림, 2개 디스크 고장 복구 가능)
- RAID 5보다 느림
- 디스크 1개 고장 시 복구 가능
- 용량 효율: (N-1)/N (예: 4개 디스크 → 3개 분량 사용 가능)
- 사용 예시: 중소기업 데이터 서버
💡 비유: 📂 책을 나눠 필사하면서, 한 명이 실수하면 다른 사람이 힌트를 줘서 다시 쓸 수 있게 하는 방식
실습) 1GB짜리 4개의 디스크(10~13, j k l m)를 추가 후 raid6을 구성한 다음 디스크를 두 개 삭제(11,13 삭제) 해도 데이터가 보존되는지 확인해 보세요
- fdisk /dev/sdj, k, m, l 각각 추가해 주기
- n p - - - p w
- 추가된 걸 확인할 수 있음
- raid6니까 level = 6으로 해야 됨
[root@client ~]# mdadm --create /dev/md6 --level=6 --raid-devices=4 /dev/sdj1 /dev/sdk1 /dev/sdl1 /dev/sdm1
- 레이드 생성
[root@client ~]# mkfs.ext4 /dev/md6
[root@client ~]# mkdir /raid6
[root@client ~]# mount /dev/md6 /raid6
[root@client ~]# cp ~/anaconda-ks.cfg /raid6
[root@client ~]# vi /etc/fstab
- 잘된 걸 확인할 수 있음
- vm에서 두 개 삭제하고 다시 시작해 보면 이런 식으로 결과가 나오는 걸 확인할 수 있음
- 복구가 가능하다는 것
📌 RAID 10 ( RAID 1(성능) + RAID 0(안정), raid 0 수준 빠름 , 최소 1개 이상 고장 가능)
- RAID 0 수준으로 빠름
- 안정성: 최소 1개 이상 디스크 고장 가능 (RAID 1 사용)
- 용량 효율: 50%(RAID 적)
- 사용 예시: 중소기업 데이터 서버
- 레이드 조합 시에는 맨 마지막에 파일시스템을 구성함
💡 비유: 📂 책을 나눠 필사하면서, 각 페이지를 두 번씩 쓰는 방식 (속도+안정성)
실습
새로운 서버를 종료 후 디스크 4개를 추가한 후 파티션을 생성해 주자
[root@http ~]# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
#sdb1과 sdc1을 묶어서 md1을 구성하자.
[root@http ~]# mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1
#sdd1과 sde1을 묶어서 md2를 구성하자.
[root@http ~]# mdadm --create /dev/md10 --level=0 --raid-devices=2 /dev/md1 /dev/md2
#위에서 만든 md1과 md2를 갖고 새로운 레이드 0 장치를 구성한다.
잘못 만드신 분들은 --stop으로 삭제하고 다시 만드세요.
[root@http ~]# mdadm --stop /dev/md1
[root@http ~]# mkfs.ext4 /dev/md10
[root@http ~]# mkdir /raid10
[root@http ~]# mount /dev/md10 /raid10
[root@http ~]# cp ~/anaconda-ks.cfg /raid10
- 지울 수 있는 최대한의 디스크를 삭제 한 다음 정상 동작하는지 확인해 보자
- 이머전시 화면이 뜨지만 꼭 잘못된 건 아니고 설정만 확인해 보고 잘되어있으면 괜찮음
- 이머전시 모드로 들어가더라도 /dev/md10만 잘 살아 있다면 재 마운트를 하면 되므로 큰 문제는 없다.
- 내용은 다 잘 있기 때문에 괜찮음
실습
과제) stg1 , stg2을 만드세요!
stg1 은 nfs-client , stg2는 nfs-server입니다.
클라이언트는 엄청나게 안정적인 디스크 2GB를 원합니다.
따라서 서버관리자는 raid16으로 구성된 스토리지를 통해 nfs-server를 구성하기로 했다.
구성을 하신 다음 최대한 많은 디스크를 삭제하여 클라이언트가 만족할 수 있도록 하세요
제출할 내용
1. 최대 몇 개를 삭제할 수 있는지? /dev/md16의 자세한 정보
2. client와 server에서의 df -h 정보.
과제) stg1 , stg2을 만드세요!
stg1 은 nfs-client , stg2는 nfs-server입니다.
* 서버가 두 개 필요함
클라이언트는 엄청나게 안정적인 디스크 2GB를 원합니다.
* 다 날리고 총합으로 2GB가 남는 것을 의미함
따라서 서버관리자는 raid16으로 구성된 스토리지를 통해 nfs-server를 구성하기로 했다.
* raid16 (1+6)
구성을 한 다음 최대한 많은 디스크를 삭제하여 클라이언트가 만족할 수 있도록 하세요.
이것저것 해주고
설치부터
yum -y install mdadm
fdisk /dev/sd~각각 추가해 주기
- n p - - - p w
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1
mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sdf1 /dev/sdg1
mdadm --create /dev/md4 --level=1 --raid-devices=2 /dev/sdh1 /dev/sdi1
오류/해결
mdadm --create /dev/md16 --level=6 --raid-devices=2 /dev/md1 /dev/md2 /dev/md3 /dev/md4
mdadm: at least 4 raid-devices needed for level 6
-> raid-devices=2 / 4개인데 2개 했죠? 수정하고 해 주니까 잘됨
mdadm --create /dev/md16 --level=6 --raid-devices=4 /dev/md1 /dev/md2 /dev/md3 /dev/md4
[root@stg2 ~]# mkdir /raid16
[root@stg2 ~]# mount /dev/md16 /raid16
[root@stg2 ~]# cp ~/anaconda-ks.cfg /raid16
[root@stg2 ~]# vi /etc/fstab
이머전시 화면 나오는 방법
- inactive 확인해 보고 파란색 상자 입력하면 재부팅되면서 탈출
마지막으로 client와 server에서의 df -h 정보
-> NFS를 사용해서 원격지에 존재하는 파일을 마치 내 로컬 파일인 것처럼 사용가능 하도록 만들어줘야 됨
-> NFS를 구축해주기
client서버에 보안 설정 해주고
- 권한이 변경된 걸 확인해 주고
[root@stg2 ~]# yum install -y nfs-utils
- 설치
[root@stg2 ~]# vi /etc/exports
[root@stg2 ~]# exportfs -r
- 설정 값 반영
[root@stg2 ~]# systemctl restart nfs-server
[root@stg2 ~]# systemctl enable nfs-server
[root@stg2 ~]# showmount -e
- 공유 여부 확인했으면 이제 client 서버로 넘어감
client서버에 설정할 것 해주고
yum install -y nfs-utils
- 설치
처음에 설정한 서버 주소 입력하면 client 서버에 잘 나타나는 걸 확인할 수 있음
[root@stg1 ~]# mount -t nfs 211.183.3.70:raid16 /remote
[root@stg1 ~]# touch /remote/tt.txt
[root@stg1 ~]# echo 'end' > /remote/tt.txt
[root@stg1 ~]# cat /remote/tt.txt
- 마운트가 잘 되어 있는 걸 확인할 수 있음
- client 서버
- server
참고
'AWS Cloud School 8기 > 서버가상화_클라우드 이미지' 카테고리의 다른 글
WordPress (0) | 2025.01.31 |
---|---|
LVM (0) | 2025.01.31 |
방어벽/ 포트의 개념 (0) | 2025.01.26 |
PxE kickstart/ 응용 실습 (0) | 2025.01.26 |
FTP(신뢰성 y 파일 전송 y),DHCP(IP부여) ,TFTP(신뢰성 n 파일 전송 y), PxE(OS 설치 환경 -> 네트워크 -> 제공) 응용 문제/ 이론 (5) | 2025.01.24 |