Network에 대해 전체적으로 설명을 해주는 영상을 보다가, 로드밸런싱이 등장했고, 그러면서 자연스럽게 RAID 개념이 나왔다.
그냥 지나치기엔 자주 등장하는 단어이기도 하고, 생소한 단어라서 정리해보았다.
(짧게 정리하려 했는데 생각보다 양이 방대해서 별도 블로깅했다.)
1. RAID 란?
RAID는 Redundant Array of Independent Disk (독립된 디스크의 복수 배열) 혹은 Redundant Array of Inexpensive Disk (저렴한 디스크의 복수 배열)의 약자이다. 말 그대로 RAID는 여러개의 디스크를 묶어 하나의 디스크 처럼 사용하는 기술이라고 볼 수 있다. 데이터분산 처리 방식이라고 간략하게 정리할 수 있을 것 같다.
RAID는 보통 사람들에게는 익숙하지 않다. 그럴 수 있는 것은 보통 사람들은 하드디스크를 사용하고 과거 생각해보면 컴퓨터에 하드디스크를 2개 또는 그이상 달아서 사용했다. RAID라는 것은 이러한 하드디스크를 여러개 연결해서 쓰는 방식의 디스크를 말한다. 저용량, 저성능, 저가용성인 디스크를 배열 구조로 중복 구성하여 크고 고가인 디스크 장비(SLED : Single Large Expensive Disk)를 대체하는 기술이다.
실제로 중복되는 데이터를 만들어 추가로 디스크에 저장한 뒤,이를 이용해 특정 디스크의 데이터가 손실됐을 때 데이터 복원이 가능하게 한다. 서버에서 주로 사용하는 기술이라 "성능 향상"보단 데이터 복원용으로서 비중이 더 크다.
RAID 기대 효과
- 대용량의 단일 볼륨을 사용하는 효과
- 디스크 I/O 병렬화로 인한 성능 향상 (RAID 0, RAID 5, RAID 6 등)
- 데이터 복제로 인한 안정성 향상 (RAID 1 등)
RAID는 컴퓨터를 구성하는 여러 부품 (구성품) 중 기계적인 특성 때문에 상대적으로 속도가 (많이) 느린 하드디스크를 보완하기 위해 만든 기술이다. RAID를 구성하는 디스크의 개수가 같아도, RAID의 구성 방식에 따라 성능, 용량이 바뀌게 되는데 이를 RAID Level (레이드 레벨) 이라고 부른다.
2. Standard RAID Level
먼저 기본적으로 RAID 0 ~ RAID 6까지 있지만, 최근 출시되는 RAID 컨트롤러에서 사용 가능 한 RAID Level은 RAID 0, RAID 1, RAID 5, RAID 6 이다. RAID를 구성하는 디스크의 종류와 크기는 같다고 가정하도록 하되, 실제로도 같은 크기, 종류의 디스크를 사용하는 것을 권장한다.
(1) RAID 0
RAID 0를 구성하기 위해서는 최소 2개의 디스크가 필요하다. (min(N) == 2)
RAID를 구성하는 모든 디스크에 데이터를 분할하여 저장. 전체 디스크를 모두 동시에 사용하기 때문에 성능은 단일 디스크의 성능의 N배이다. 마찬가지로 용량 역시 단일 디스크의 용량의 N배.
하지만 하나의 디스크라도 문제가 발생 할 경우 전체 RAID가 깨지는 불상사가 발생하므로, 안정성은 1/N으로 줄어든다. 성능과 용량은 최대한으로 사용하는 대신, 안정성은 극악이라 할 수 있다.
"RAID 0"의 특징은 바로 "데이터를 여러디스크에 분산 저장하고 동시에 여러개를 읽어들이는 기술"
(2) RAID 1
Mirroring (미러링) 이라고도 부르는 방식이다. RAID0과 동일하게, RAID 1을 구성하기 위해서는 최소 2개의 디스크가 필요. (min(N) == 2) RAID 1은 모든 디스크에 데이터를 복제하여 기록한다. 즉, 동일한 데이터를 N개로 복제하여 각 디스크에 저장. 때문에 여러 개의 디스크로 RAID를 구성해도, 실제 사용 가능한 용량은 단일 디스크의 용량과 동일하다.
Write 시엔 데이터를 복제하여 기록하기 때문에, RAID 컨트롤러가 복제, 연산 하는 시간을 감안하면 단일 디스크의 Write 성능보다 낮게 나올 수도 있다. 하지만 Read 시엔 전체 디스크에서 읽어오기 때문에 단일 디스크의 N배의 성능이 나온다. 그리고 RAID 1의 최대 강점은 안정성이 높다. 극단적으로, N-1개의 디스크가 고장나도 데이터 사용이 가능하다.
"RAID 1"은 바로 각 디스크에 똑같은 데이터들을 저장한다는 특성이 핵심이다.
(3) RAID 2
현재는 사용하지 않는 RAID Level 이다.bit 단위로 striping을 하고, error correction을 위해 Hamming code를 사용합니다.
복구용 디스크를 추가로 두는데, 이 때 "해밍코드(Hamming code)"를 이용하여 복구용 디스크를 만듭니다. RAID 2는 RAID 0 + 복구용 디스크가 있는데, 그 복구용 디스크는 해밍코드를 이용해 구성한다.
복구용 디스크중 하나라도 고장나면 결국 이 기술은 무용지물이기에 사용되지 않는 것이다.
(4) RAID 3
현재는 사용하지 않는 RAID Level 이다. Byte 단위로 striping을 하고, error correction을 위해 패리티 디스크를 1개 사용한다.
**패리티 디스크 : 에러 검사 디스크라고 생각하면 된다. 기존의 정보랑 동등한(똑같은) 상태인지 확인할 때 쓰이는, 즉 오류가 났는지 검사하기 위해 추가한 것을 의미
용량 및 성능이 단일 디스크 대비 (N-1) 배 증가.
(5) RAID 4
현재는 (거의) 사용하지 않는 RAID Level. Block 단위로 striping을 하고, error correction을 위해 패리티 디스크를 1개 사용한다. 용량 및 성능이 단일 디스크 대비 (N-1) 배 증가한다. Block 단위로 striping 하는 것은 RAID 5, RAID 6와 동일하지만, 패리티 코드를 동일한 디스크에 저장하기 때문에, 패리티 디스크의 사용량이 높아 해당 디스크의 수명이 줄어든다.
실제로 "RAID 3"와 거의 똑같다. 유일하게 다른 점은 바로 "RAID 3"는 "바이트 단위"로 디스크에 저장하지만 "RAID 4"는 "블록 단위"로 디스크에 저장한다는 점이다.
RAID 4의 단점을 개선시킨 것이 RAID 5 이다.
(6) RAID 5
제일 사용 빈도가 높은 RAID Level .
Block 단위로 striping을 하고, error correction을 위해 패리티를 1개의 디스크에 저장하는데, 패리티 저장 하는 디스크를 고정하지 않고, 매 번 다른 디스크에 저장한다.
용량 및 성능이 단일 디스크 대비 (N-1) 배 증가.
최소 3개의 디스크로 구성 가능하고, 그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)
RAID 0에서 성능, 용량을 조금 줄이는 대신 안정성을 높인 RAID Level이다.
이렇게 패리티 정보를 분배하는 RAID 5방식을 사용하면 어떤 디스크가 고장나도
1개만 고장났다면 복구가 가능하다.
(7) RAID 6
RAID 5에서 성능, 용량을 좀 더 줄이고, 안정성을 좀 더 높인 RAID Level.
Block 단위로 striping을 하고, error correction을 위해 패리티를 2개의 디스크에 저장하는데, 패리티 저장 하는 디스크를 고정하지 않고, 매 번 다른 디스크에 저장한다.
용량 및 성능이 단일 디스크 대비 (N-2) 배 증가한다.
RAID 5에서 성능, 용량을 조금 줄이는 대신 안정성을 높인 RAID Level이다.
조금 더 안정성을 높여야 하는 서버 환경에서 주로 사용.
Reference
-> 참고링크
-> 참고링크2
'CS STUDY > Computer Science' 카테고리의 다른 글
CPU bound VS I/O bound (0) | 2022.03.01 |
---|---|
프로세스 VS 스레드 (0) | 2021.03.20 |
Network _OSI 7계층 & TCP/IP 4계층 (0) | 2021.02.24 |
동적 페이지에 대해 정리해보자(JSP, Sevlet, ASP,PHP) (0) | 2021.01.26 |
What is 네트워크(Network)? (0) | 2021.01.17 |