RAID
System/OS - Linux

RAID

RAID

= Redundant Array of Independent/Inexpensive

= 여러 개의 하드디스크를 하나의 디스크처럼 사용해 동일한 데이터를 다른 위치에 중복해서 저장하는 방법 

= 디스크 어레이(Disk Array)

 

- 운영체제는 하나의 RAID (데이터가 저장된 디스크의 묶음이라고 생각)는 논리적으로 하나의 디스크로 인식해 처리한다.

- 초기 목적: 저용량 하드 디스크를 하나의 디스크로 확장해 사용 

- 현재 목적: 백업 + 안정적인 데이터의 보존 및 유지, 속도 향상 등

 

- 하드웨어 RAID: 하드웨어 제조업체에서 여러 개의 하드디스크를 연결한 장비를 만들어 공급하는 RAID로, 안정적이고 성능이 좋은 편이다. ▶▶ "핫 스왑(Hot Swap) 베이(Bay)" 기능; 전원이 켜져있는 상태에서 하드 드라이브를 교체할 수 있는 기능

- 소프트웨어 RAID: 고가 하드웨어 RAID의 대안으로, 하드 디스크 여러개로 운영체제에서 지원하는 방식으로 RAID를 구성하는 방법이다. 하드웨어RAID에 비해 안정성, 속도 등이 떨어지지만 훨씬 저렴한 가격으로 제공된다.


RAID에서 사용하는 기술

- 스트라이핑(Striping)

연속된 데이터를 여러 개의 디스크에 라운드로빈 방식으로 기록하는 기술

→ 프로세서가 하나의 디스크에서 데이터의 전체를 읽어 들일 때보다 더 빠르게 데이터를 읽거나 쓸 수 있게된다.

 

아래 RAID-0에서 스트라이핑 기술을 이용하기 때문에 RAID-0를 살펴보면 어떤 기술인지 좀 더 이해할 수 있을 것이다.

더보기

* 라운드 로빈 스케줄링 (Round Robin Scheduling)

분할 시스템을 위해 설계된 선점형 스케줄링의 하나로서, 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위(Time Quantum)로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘

 

참고 / 출처

jhnyang.tistory.com/158

ko.wikipedia.org/wiki/%EB%9D%BC%EC%9A%B4%EB%93%9C_%EB%A1%9C%EB%B9%88_%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81#:~:text=%EB%9D%BC%EC%9A%B4%EB%93%9C%20%EB%A1%9C%EB%B9%88%20%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81(Round%20Robin,%EC%9D%98%20CPU%20%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%B4%EB%8B%A4.

 

- 미러링(Mirroring)

디스크에 에러가 발생했을 때 데이터의 손실을 막기 위해 추가적으로 하나 이상의 장치에 중복 저장하는 기술

→ 하나의 디스크에 에러가 발생해도 다른 디스크의 데이터는 그대로 보존되기 때문에 "결함 허용(Fault-tolerance)"라고 한다.

 

아래 RAID-1에서 미럴링 기술을 이용하기 때문에 RAID-1을 살펴보면 어떤 기술인지 이해가 쉬울 것이다.


RAID의 종류(레벨)

데이터를 기록하는 방식과 에러를 체크하는 Parity/ECC(Error Check&Correction) 등의 구성방법에 따라 다양하다.

① Linear RAID / RAID-0

최소 2개의 하드디스크가 필요하고, 2개 이상의 하드디스크를 1개의 볼륨으로 사용한다.

Linear RAID와 RAID-0는 저장방식에서 차이점이 있다.

 

- Linear RAID

앞 하드디스크에 데이터가 완전히 저장된 후 다음 하드디스크에 데이터를 저장한다. 앞의 하드디스크에 데이터가 완전히 저장되지 않으면 다음 하드디스크는 전혀 사용되지 않는다.

각 하드디스크의 용량이 모두 같지 않더라도 전체 용량을 문제 없이 사용할 수 있기 떄문에 공간 효율성이 매우 좋다.

Linear RAID

 

- RAID-0

스트라이핑 기술을 이용해 모든 하드디스크를 동시에 사용한다. 데이터를 중복이나 패리티 없이 분산하여 기록하기 때문 입출력 처리속도는 가장 빠르나, 구성된 디스크 중 하나라도 오류가 발생했을 경우 데이터 복구가 불가능하다.

RAID-0

RAID-0에는 스트라이핑 기술이 적용되기 때문에 전체 데이터를 "ABCDEF"라고 했을 때 디스크(1)과 디스크(2)를 동시에 사용하여 데이터를 저장한다. 따라서 하나의 디스크에 "ABCDEF"를 순차적으로 저장한다고 했을 때 6초가 걸린다고 가정하면 RAID-0로는 3초면 데이터가 모두 저장된다.

 

② RAID-1

미러링 기술을 이용해 두 개의 디스크에 데이터를 동일하게 기록한다. 스트라이핑 기술은 적용하지 않는다.

각 드라이브를 동시에 읽을 수 있어 읽기 성능은 향상되지만 데이터를 동시에 두 개(이상)의 디스크에 저장하기 때문에 쓰기 성능(저장 속도)은 단일 디스크를 사용할 때와 같다.

RAID-1

미러링 기술이 적용되기 때문에 데이터가 중복 저장되므로 2개의 하드디스크 중 하나가 고장 나도 데이터를 복구할 수 있지만, 중복 저장으로 인해 디스크의 50%를 낭비하게 된다. (= 공간 효율이 50%)

비용(공간)이 많이 들더라도 없어져서는 안되는 중요도가 높은 데이터를 저장할 때 사용하면 적절한 방식이다.

 

③ RAID-2

스트라이핑 기술을 사용하여 디스크를 구성하고, 디스크의 에러를 감지하고 수정하기 위한 ECC 정보를 사용한다.

RAID-2

스트라이핑 기술을 이용해 데이터 "A0/A1/A2/A3/B0/B1/B2/B3/C0/C1/C2/C3/D0/D1/D2/D3"를 4개의 하드 디스크에 동시에 분산하여 저장한다. 4개의 디스크에 동시에 저장되는 데이터를 4개씩 묶어 A,B,C,D라고 할 때 그 데이터에 대한 에러를 확인하기 위해 ECC를 사용한다.

④ RAID-3

스트라이핑 기술을 사용하여 디스크를 구성하고, 데이터의 에러를 확인하기 위해 패리티를 저장하기 위한 별도의 디스크를 사용한다.

RAID-3

입력/출력 작업이 동시에 모든 디스크에 대해 이루어지기 때문에 입력과 출력을 겹치게 할 수 없다.

주로 대형 레코드가 많은 시스템에서 사용한다.

 

⑤ RAID-4

블록 형태의 스트라이핑 기술을 사용하여 디스크를 구성한다. 블록 형태로 구성하는 것은 단일 디스크로부터 레코드를 읽을 수 있고 데이터를 읽을 때 중첩 입출력을 할 수 있다. 반면, 쓰기 작업(저장)을 할 때는 패리티 연산을 해야 하고 패리티 디스크에 패리티 값을 저장해야 하기 때문에, 입출력의 중첩이 불가능하다. 

RAID-4

⑥ RAID-5

패리티 정보를 이용하여 하나의 디스크가 고장이 발생하더라도 사용이 가능한 구성방식이다. RAID-1의 결함 허용성과 RAID-0의 공간 효율성을 포용한 방식이라고 할 수 있다. 

최소 3개의 하드 디스크가 필요하다. 대부분 5개 이상의 하드디스크로 구성한다. 패리티 정보를 별도의 디스크에 저장하지 않고 데이터가 저장되는 디스크에 분산하여 기록하지만 데이터를 중복 저장하지 않는다. 

→ 디스크를 3개로 구성했을 때는 33.3% / 4개로 구성했을 때는 25% / 5개로 구성했을 때는 20%가 패리티 공간으로 사용된다.

디스크에 쓰기 제한 주소를 지정하기 때문에 모든 읽기 및 쓰기가 중첩될 수 있다.

RAID-5

전체데이터는 A0-B0-C0-D0-A1-B1-C1-E1-A2-B2-D2-E2-A3-C3-D3-E3-B4-C4-D4-E4 순으로 각 디스크에 하나씩 저장되고, 패리티 데이터를 위한 한 칸을 비워둠을 확인할 수 있다. 패리티를 한 칸씩 할당하기 때문에 1개의 디스크 오류에만 대처가 가능하다. (2개 이상의 디스크에 오류가 발생하면 데이터를 복구할 수 없게된다.)

가장 보편적으로 쓰이는 방식으로, 작고 랜덤한 입출력이 많은 경우에 좋은 성능을 발휘한다. 디스크의 개수를 늘릴수록 저장공간의 효율성이 높아진다.

 

⑦ RAID-6

RAID-5에서 2차 패리티 구성을 포함하면서 매우 높은 고장대비 능력을 발휘하게 된다. RAID-5에 비해 디스크의 공간 효율성이 떨어지고, 복잡한 알고리즘으로 인해 처리속도는 느려지지만 데이터에 대한 신뢰도가 상승하게 된다.

2개의 패리티를 사용하므로 최소 4개의 디스크로 구성해야 한다.

→ 디스크를 4개로 구성했을 때 50% / 5개로 구성했을 때 40% / 6개로 구성했을 때 33.3%가 패리티 공간으로 쓰인다.

RAID-6

parity를 2개 사용하기 때문에 2개의 하드디스크가 동시에 고장나더라도 데이터를 안전하게 복구할 수 있게한다. 

 

⑧ RAID-7

하드웨어 컨트롤러에 내장되어 있는 실시간 운영체제(Real-Time Operating System)을 사용하여 구성하는 방식이다. 

스트라이핑 기술과 parity가 적용되어 있다. 속도가 빠른 버스를 이용하고 독자적인 여러 특성들을 제공한다.

더보기

* 버스(bus)

컴퓨터 안의 부품들 사이 또는 컴퓨터들 사이에 정보와 데이터를 전송하는 통로(통신 시스템); 정보, 신호를 주고받기 위한 통로

 

출처

ko.wikipedia.org/wiki/%EB%B2%84%EC%8A%A4_(%EC%BB%B4%ED%93%A8%ED%8C%85)

⑨ RAID 0+1

디스크 2개를 RAID-0의 스트라이핑 기술로 구성하고, RAID-1의 미러링으로 다시 구성하는 방식이다.

최소 4개의 디스크가 필요하다. 6개의 디스크의 경우에는 보통 3개를 RAID-0으로 구성하고 난 후에 다시 RAID-1로 미러링해 구성한다.

RAID 0+1 (책의 그림이 이해가 잘안된다...)

데이터 "ABCDEFGH"를 우선 스트라이핑 하여 디스크(1)과 (2)에 A/B C/D E/F G/H로 저장하고, 이를 미러링하여 디스크(3)과 디스크(4)에 중복 저장하게 한다.

 

⑩ RAID 10 (1+0)

RAID 0+1의 반대 개념으로, 디스크 2개를 먼저 미러링으로 구성한 후에 다시 스트라이핑 하는 방식이다.

최소 4개의 디스크가 필요하다. 6개의 디스크가 주어지는 경우에는 보통 2개씩 미러링을 한 후, 스트라이핑해 구성한다.

RAID 10

 

RAID 01과 RAID 10에서 6개의 디스크인 경우에 대한 설명은 아래 블로그의 그림으로 그 차이점이 잘 나타난다.

www.thegeekstuff.com/2011/10/raid10-vs-raid01/

 

⑪ RAID-53

RAID-3 방식에 별도로 스트라이프 어레이를 구성하는 방식이다. RAID 03으로 부르기도 한다.

RAID-53

 

 

  기록 방식 parity/ECC 기타
RAID-0 스트라이핑 기술 -  
RAID-1 미러링 기술 -  
RAID-2 스트라이핑 기술 ECC  
RAID-3 스트라이핑 기술 parity  
RAID-4 스트라이핑 기술(블록 단위) parity - 블록 단위로 구성
RAID-5 스트라이핑 기술 parity(분산) - 최소 3개의 디스크 필요
- 디스크의 개수에 따른 공간 효율성 차이
RAID-6 스트라이핑 기술 2차 parity(분산) - 최소 4개의 디스크 필요 (2개의 parity)
- 디스크의 개수에 따른 공간 효율성 차이
RAID-7      
RAID 0+1 스트라이핑 기술
미러링 기술
  - 최소 4개의 디스크 필요
RAID-10 미러링 기술
스트라이핑 기술
  - 최소 4개의 디스크 필요
RAID-53 스트라이핑 기술 parity - 최소 6개의 디스크 필요
- 스트라이핑 후

 

 

 

RAID 0+1과 RAID 1+0이 너무 헷갈린다...

혹시 RAID 0+1과 RAID 1+0의 정리가 잘못되었거나, 정확히 이해하신 분이 이 허접한 정리를 보신다면.. 가르쳐주세요.. ╯︿╰

 

::참고::

CentOS 7으로 리눅스 마스터 1급 정복하기 (정성재/북스홀릭)

이것이 리눅스다 with RedHat CentOS 8 (우재남/한빛미디어)

오라클 웹페이지(docs.oracle.com/cd/E19683-01/817-2530/6mi6gg86c/index.html)

위키피디아(ko.wikipedia.org/wiki/RAID) (en.wikipedia.org/wiki/Nested_RAID_levels)

SMALL

'System > OS - Linux' 카테고리의 다른 글

부트 매니저 - LILO, GRUB  (0) 2021.01.22
LVM  (0) 2021.01.21
[CentOS 8] APM 웹 서버  (0) 2020.12.10
XRDP 서버  (0) 2020.11.18
OpenSSH 서버  (0) 2020.11.18