RAID (Redundant Array of Inexpensive - or Independent Disks)의 줄임말이다.
2개 이상의 디스크를 병렬로 처리하여 중복된 데이터를 나눠서 저장하는 방식이며, 성능 및 안정성을 향샹시킨 장점을 가진다.
RAID는 0부터 다양하며 각각의 장점과 단점 등이 존재한다.
RAID 0 - Striping
휴지뭉치가 디스크 하나라고 생각해보자.
총 디스크는 3개고 원래는 한 통에 (A-B-C-D) - (E-F-G-H) - (I-J-K-L) 식으로 저장한다.
하지만! 한통을 다 체우는 동안 다른 통들은 논다.... 좀 아깝다~
그래서 해결방안은 A - B - C 이런식으로 통마다 하나씩 저장하면 IO가 빨라질 것이다. 쓰고/읽고 등등 모두 다!!
이런 방식을 RAID 0 이라하거나 스트라이핑이라고 한다.
하지만!! 디스크 하나가 깨지면 다 사용하지 못한다라는 단점
RAID 1 - Mirroring
맨왼쪽 디스크 2장을 보자
1번 디스크(보라색 A,B,C,D)를 쓸때 2번 디스크(분홍색 A,B,C,D)도 쓴다.
어느날 2번 디스크가 깨지면(분홍색) 같은 정보를 가진 나머지 디스크(보라색 A,B,C,D)가 있기 때문에 쓸 수 있다!!
데이터를 쓸떄는 성능상 차이가 없지만 데이터 읽어올때는 2개에서 읽어오므로 2배정도 이론상 속도가 나타난다.
단점은 용량이 2배 필요하다. 300GB면 총 600GB 효율이 조금 떨어질 수도 있다.
RAID 0 + 1 VS RAID 1 + 0
RAID 01의 경우 스트라이핑(A1 - A2, A3 - A4, ...., A7 - A8 식 저장)을 먼저 하고 미러(A1,A2 - A1,A2 식 저장)를 구성
RAID 0의 DISK 0이 깨졌다고 치자. DISK 0과 DISK 1은 스트라이핑 이기때문에 모두 사용할 수 없지만 RAID 0으로 구성을 하나 더 했으니 사용은 가능하다.
RAID 1+0의 경우 디스크 0번이 깨져도 두개는 RAID 1으로 묶여있다.
따라서 복구할때 DISK 1을 사용하면 되므로 크게 영향이 없다.
서비스 유지하는데는 크게 상관이 없다.
운이 없어서 디스크 0도 깨지고 디스크1의 A1도 깨지면 A1은 못쓴다.(당연)
RAID 2로 넘어가기전에 Parity Bit에 대해 잠시 집어보고 가자.
Parity Bit
이는 오류가 있는지 없는지 확인하기 위해 비트(Parity Bit)를 하나 추가해서 보낸다.
만일 맨 앞의 비트가 손상되어 확인될 수 없는 상황이라고 해보자.
하지만 복구할 수 있다.
전체 BIT를 더하면 홀수여야 한다. 하지만 다 더하면 짝수이다. 따라서 손실된 비트는 홀수인 1이다. (이런 개념!!)
RAID3, RAID4
이런 개념으로 디스크 하나를 Parity Bit(P1, P2, P3)로 만들어 버린다.
디스크 전체적인 장애를 대비해 디스크를 만드는 것을 RAID 3(데비안 구조)라고 한다.
하나의 디스크(B, D,F )가 장애나도 Partiy에 의해 복구할 수 있다.
RAID 4는 블록단위지만 RAID 3는 바이트 단위이다. 요론 차이.... 하지만!!
3,4는 현재 사용하지 않는 구조이다 ㅎㅎ
RAID 5
오잉 병목이 생긴다.. RAID 3,4처럼 썼더니...
패리티 정보를 그룹 전체에 나눠서 저장하자!! (한곳에 하지말고)
현재 널리 사용되고 있는 구조이다.
디스크 하나가 장애가 발생해도 Parity Bit가 각 디스크별로 들어가 있으므로 복구가 가능하다.
RAID 1보단 조금 느리다~
RAID 6
RAID 5는 하나의 디스크가 고장나는 것 까진 괜찮치만 디스크가 2개가 고장나면 전체가 주저앉고 나도 주저앉고...
다른 방법이 없을까.... 바로 RAID 6!!
그럼 페러티 디스크를 2장씩 하자~
그럼 디스크 2장에 장애가 발생해도 데이터를 유지할수있지만 개수만큼 용량손해가 생긴다.
RAID 5보다는 당연히 사용할 용량은 적다~
HOT-Spare 디스크
RAID 5를 보안하기 위해 등장!
평소에는 Hot Spare은 논다.
하지만 어느 그룹에서 디스크 하나 장애가 나면 그 레이어드 그룹으로 들어가 포함되어 동작된다.
추가적으로 한장 고장나도 데이터 손실이 일어나지 않는다.
여러 그룹일 경우 여러장의 HOT를 둔다. 이것이 일상적인 구조 ㅎㅎ
HOT이 들어올때 (천천히 들어옴 시간이 소요) 하필 이때 하나더 깨지면?? 당연히 데이터 소실...
같은 그룹이 동시에 2개 깨지면 데이터 손실... 이건 근데 흔치 않다~
RAID 구현 예시
X86
X86단독장비에 RAID컨트롤러가 달려있다.
그림에서 보면 300GB 4개가 있는데 이를 RAID 컨트롤러가 가지고 RAID 1 (실제 사용량은 절반) 구성을 해준다.
4개를 2개로 만들었다. 이를 OS에 전달. 전달받은 OS는 처음부터 300GB 2개가 있는 것처럼 인식하고 사용한다.
위의 경우는 2개로 파티션나눠서 사용
OS에서는 추가적인 RAID구성 필요없고
디스크 하나만 에러시 바꿔주면 컨트롤러가 알아서 해준다~
스토리지 RAID
책꽂이 처럼되어 있는 것을 RAID 구성한다.
다양한 레벨로 구성이 가능하며 레벨이 끝나면 아주 큰~ 원기둥이 생기고 LUN이라는 논리적 단위로 나눠 준다. 서버는 각각 물리적 디스크로 인식한다~
물리적 디스크 고장났을때 스토리지만 갈아주면 리빌딩한다
LVM Mirror
어떤 서버가 있는데 RAID 컨틀롤러가 없어 (RAID는 컨트롤러에서 알아서 해주는데...)
하지만! 컨트롤러가 없더라도 OS로 보내주면 OS에서 각각 디스크를 받고 미러를 구성할 수 있다!! (OS 고유 기능)
리눅스에서는 LVN 기능으로,, 윈도우는 동적디스크로 구현할 수 있다.
그림은 RAID 1 미러구성, 이는 하드에서 구성한게 아니라 OS에서 한 것, 디스크 하나가 펑 나도 OS에서 미러 재구성 작업을 해야한다.
당연히 왼쪽 오른쪽은 같이 작업
LVM Stripe
위 그림은 LVM 여러개를 할당받아 사용중이다.
전체적인 LVM을 하나의 볼륨으로 묶고 데이터를 쓸때 스트라이핑으로 사용할 수 있다.
리눅스에서는 LVN, 윈도우는 동적디스크
1,2,3,4 는 OS에서 1번 , 디스크에서 1번 스트라이핑을 한다. 성능상 유리하다.
'Technical Architecture > 운영체제' 카테고리의 다른 글
Windows Server란? 종류 및 특징 (0) | 2022.12.27 |
---|