}

블로그 소개


*여러분들의 따듯한 댓글은 5%, 팔로우는 10% 블로그 포스팅 속도와 퀄리티를 높여줍니다.*

프로필

팔로우 해주시면 포스트할 때 큰 힘이 됩니다!!! 사실 저도 이 팔로우가 무슨 기능이 있는지는 모르겠습니다만, 팔로우 수가 늘면 '날 응원해주는 사람들이 있구나' 생각이 들어서 큰 힘이 됩니다.

팔로어

다른 페이지로 이동


리눅스 독학 페이지 운영체제 독학 페이지 네트워크 독학 페이지 하드웨어 독학 페이지 프로그래밍 독학 페이지 보안 페이지

오스 페이지 다이어트 정보 페이지 게임 정보 페이지 인생 꿀팁


****사진을 클릭하시면 페이지로 이동할 수 있습니다!****

<===***===↓↓↓You can use translate on the chrome↓↓↓===***===>

2020년 1월 11일 토요일

RAID (0, 1, 2, 3, 4, 5, 6, 10, 15) 기술 자세하고 쉽게!

안녕하세요~ 마무입니다. 오늘은 모든 RAID 기술들, "소프트웨어 RAID와 하드웨어 RAID", "RAID 패리티란", "RAID 개념과 뜻", "RAID 0, 1", "RAID 2, 3, 4", "RAID 5, 6" "RAID 10, 15"에 대해서 배워볼 겁니다.

주로 서버에서 사용하는 "디스크 백업 + 속도향상" 목적의 기술이지만, 저희들도 사용하고 싶다면 사용할 수 있는 그런 기술입니다.

특히 저희 리눅스마스터 1급을 준비하시는 분들은 서버를 운영하는 능력을 증명하기 위해
공부를 하는 것이므로 주의깊게 보시면 더욱 좋습니다~

자 오늘의 목차입니다!

--목차--

1. RAID(Redundant Array of Inexpensive/Independent Disk) 기술이란?

2. 하드웨어 RAID와 소프트웨어 RAID
i)하드웨어 RAID를 만들 때 필요한 RAID controller card
ii)소프트웨어 RAID 

3. Linear RAID 

4. RAID 0(Striping 방식)

5. RAID 1(Mirroring 방식)

6. RAID 2, 3, 4를 잘 안쓰는 이유, 그리고 레이드 기술은 복합적으로
사용가능(10, 01, 15등등) 

i)RAID 2, 해밍코드란
ii)RAID 3, Parity(패리티)란?, RAID 4
iii)RAID는 복합적으로 사용가능하여 RAID 01, 10와 같이 구성 가능

7. RAID 5
i)RAID 15

8. RAID 6

--------

여기서 못 찾은 정보는
리눅스 독학 페이지https://mamu2830.blogspot.com/p/blog-page_13.html
운영체제 독학 페이지https://mamu2830.blogspot.com/p/blog-page_14.html
에서 찾아보세요!



1. RAID(Redundant Array of Inexpensive/Independent Disk) 기술이란?


컴퓨터 공학에서 사용되는 대부분의 용어들은 영어를 해석하면 쉽게 무슨 역할의
기술인지를 알 수 있습니다. 이 "RAID"도 마찬가지이죠.

"RAID""Redundant Array of Inexpensive/Independent Disk"란 영어의 줄임말
입니다.

Redundant(중복돼 필요없는) Array of(배열한 것) Inexpensive(싼 가격의) Disk(디스크들을)

또는

Redundant(중복돼 필요없는) Array of(배열한 것) Independent(혼자서 쓰이는) Disk(디스크들을)

이런 의미입니다. 글로만으론 살짝 이해가 잘 안되죠? "중복돼 필요없는" 이라니..
여기서 "중복돼 필요없는"라는 뜻은 약간 "데이터 복원용의" 라고 의역하여 이해하면 좋을 것 같습니다.

실제로 이 "RAID"라는 기술은 중복되는 데이터를 만들어 추가로 디스크에 저장한 뒤, 
이를 이용해 특정 디스크의 데이터가 손실됐을 때 데이터 복원이 가능하게 만들거든요 

"RAID"서버에서 주로 사용하는 기술이라 "성능 향상"보단 데이터 복원용으로서
비중이 더 크기에,  Redundant(중복돼 필요없는)이라는 단어를 쓰지 않았나 싶습니다.

그래서 "non-redundant disk"라는 건 "데이터 복원기능 없이 사용하는 디스크"
의미합니다.

Array of(배열한 것)이라는 건 뜻 그대로 관리하기 쉽게 순서대로 정리하는 것
의미하는데요.




이렇게 "실제로 하드디스크들을 배열한 걸" 의미할 수도 있지만





여기선 컴퓨터 데이터들을 분리해서 차례대로 디스크에 정리하는 것"배열"의 의미가
좀 더 강한 것 같습니다.

컴퓨터 프로그래밍에서의 배열과 같은 느낌이라 생각하시면 됩니다.

Inexpensive(가격이 싼)이란 단어가 쓰인 건, 이 "RAID"기술이 옛날에 비교적 싼 하드디스크들을 합쳐서 큰 용량으로 만들어 사용할때 쓰이던 기술이라 "I"Inexpensive였던 것이고,

요즘은 하드디스크 가격이 비싸지 않기에 그냥
Independent(독립적인{말이 어려운데, 그냥 디스크})들로 만든다의 "I"
쓰입니다.

자 다시 정리하자면 "RAID" 기술은
"복원을 위해 중복되는 데이터를 만들고, 전체 데이터들을 나누어 각 독립적인 디스크들에 배열하는 기술"
이라 할 수 있겠네요~

물론! 이 "RAID"는 하드디스크 뿐만 아니라 "다른 디스크(SSD 등등)" 들에도 사용할 수 
있는 기술이란 것을 잊지마세요! (SSD로 서버를 구성하면 가격이 어마어마 하겠지만..)

하지만 같은 종류의 하드디스크끼리나 SSD으로만 RAID를 구성할 수 있어요!
(하드디스크 + SSD)나 (서로 다른 종류 하드디스크 + 하드디스크) 이렇게는 못합니다!

참고로 이 "RAID"란 기술은 크게 하드웨어적으로 구성하는 "하드웨어 RAID"
소프트웨어로 구성하는 "소프트웨어 RAID"로 나뉘어 집니다.



2. 하드웨어 RAID와 소프트웨어 RAID




"RAID"개념이 또 두개로 나뉘어지니 복잡하죠? 하지만 그렇게 복잡할 건 없습니다.
둘의 차이점은 말 그대로 "하드웨어로 구성하냐" "소프트웨어로 구성하냐" 차이거든요
나머지 개념들은 모두 같습니다.

하지만 실제 상황에선 "소프트웨어 RAID"를 쓸 일이 거의 없다는 것(뭐 쓰고 싶으면
쓰겠지만...)

왜 실제 상황에서 "소프트웨어 RAID"를 잘 안쓰는지는 바로 "하드웨어 RAID"에 대해서
배우시면 그 이후 자동으로 깨달으실겁니다.


i)하드웨어 RAID를 만들 때 필요한 RAID controller card




하드웨어 RAID는 말 그대로 "실제적으로 RAID"를 구성한 것을 말합니다.
어떻게 실제적으로 RAID를 구성한다는 것일까요?

하드웨어 RAID는 "RAID Controller card"라는 것을 통해 각 디스크들을 실제적으로
연결하여 "RAID"를 구성하는데요 "레이드 컨트롤러", "레이드 카드" 등등 취향에
맞게 부릅니다




(출처 : https://1boon.kakao.com/kbench/5a618447ed94d20001c5b291)


이런 8bay(8칸으로 나뉘어져 있단 뜻임)케이스 같은 곳에 RAID를 구성할 하드 디스크를 
여러개를 꽂은 다음케이스와





(출처 : https://www.amazon.com/Dell-Controller-Standard-Profile-J9MR2/dp/B01J4744L0)


보통 이렇게 생긴 "RAID controller card"주황색으로 표시한 곳을 "RAID 케이블"
연결을 합니다.

이렇게 하드디스크들과 RAID 컨트롤러를 연결했으면저 RAID 컨트롤러, 혹은 RAID 카드를 컴퓨터의 PCI버스(다른 장치들을 컴퓨터와 연결하는 통로)슬롯에 꽂는 것이죠.




(출처 : https://techterms.com/definition/pci)

이렇게 빨간 원으로 표시한 곳이 "PCI 버스 슬롯"입니다. 컴퓨터를 직접 조립해보셨거나
다른 부품을 갈아끼우실 때 종종 보셨을 겁니다.

이렇듯 "하드웨어 RAID"실제적으로 연결하여 RAID를 구성하는데요

하드웨어 RAID를 구성할 때 "케이스"는 꼭 필요하진 않습니다.
요즘 메인보드엔 여러 하드디스크를 꽂을 수 있기 때문이죠.(물론 서버와 같이 큰 용량을
필요로 하면 케이스가 있어야겠죠?)

하지만 이 "RAID Controller"하드웨어 RAID에 있어서 필수적으로 있어야 합니다.
왜냐하면 이 "레이드 컨트롤러"가 이름 그대로 "RAID 기술"을 "컨트롤(계산해주고 구성)
해주는 부품"이기 때문입니다.

또한 "RAID Controller"계산을 해야하기 때문에 자체적으로 CPU메모리를 갖고 
있습니다. 

이거 없이 구성하면 "소프트웨어 레이드"가 되는 것이죠

아 이런 벌써 "소프트웨어 레이드"가 뭔지 감이 오시나요?
그래도 좀 더 제대로 알고 가보죠!


ii)소프트웨어 RAID 




네 위에서 대충 감이 오셨겠지만 말 그대로 "RAID Controller 없이" RAID를 
구성하는 것을 "소프트웨어 RAID"라고 합니다.

실제로 RAID계산을 해주는 부품인 레이드 컨트롤러가 없으니까RAID계산을
현재 우리가 사용하고 있는 "CPU""프로그램"이 하게 되죠.

그래서 "소프트웨어 RAID"라고 하는 것이고, 소프트웨어적으로 RAID 구성하는 것 만큼
컴퓨터 전체 성능을 떨어뜨리며 실제로 기대했던 성능만큼 RAID기술 성능이 나오지 
않습니다

그래서 당연히 실제에선 사용을 잘 안하는 것이죠.

하지만 당연하게도 대부분의 운영체제에선 이런 소프트웨어 RAID를 지원을 합니다.
(그래서 개인이 만들고 싶으면 만들 수 있습니다.)

윈도우나 지금 제가 포스트를 주로 하고 있는 리눅스에서도 말이죠.
안 그래도 이 포스트를 쓰는 이유도 리눅스에서 소프트웨어 RAID를 구성하기 위해서라는..

소프트웨어 RAID를 구성하는 것은 다음의 리눅스 포스트에서 다루도록 하겠습니다.
참고로 리눅스마스터 시험에는 소프트웨어 RAID개념과 구성 하는 법이 나오니 알아두세요!




3. Linear RAID




이야 이제야 본격적으로 RAID 종류에 대해서 알아보게 됐네요~
제일 먼저 알아보는 RAID 기술은 "Linear(직선 형태로 구성하는) RAID"입니다.

이름 그대로 "직선 형태처럼 구성하는 RAID"인데요 그냥 데이터를 디스크에
직선 형태처럼 차례대로 차곡차곡 저장하는 걸 말합니다.






딱 이 그림과 같이 차례대로 데이터를 저장한다고 보시면 되겠습니다.

굳이 장점을 하나 꼽자면 "LVM"처럼 여러 디스크를 하나인 양 쓸 수 있다는 것
이라고 할 수 있겠네요 하지만, 이건 말 그대로 여러 디스크를 합치는 것 뿐이라
데이터 복원 기능도, 성능 향상도 없습니

다른 디스크의 파티션들을 합치고 또한 볼륨 확장까지 가능한 "LVM"에 비하면
"Linear RAID"는 구대기.. 안 좋죠 ㅎㅎ 그래서 쓸 일은 거의 없습니다.

그냥 "디스크 데이터 저장방식"에 "Linear"라는 단어가 붙으면 데이터를 차곡차곡 저장한다는 방식이라는 것만 알아두시면 될 것 같습니다~




4. RAID 0(Striping 방식)




드디어 본격적으로 "RAID"라 할 기술이 나왔습니다~
바로 "RAID 0"라는 기술인데요 이 "RAID 0"의 특징은 바로 "데이터를 여러디스크에 분산 
저장하고 동시에 여러개를 읽어들이는 기술"이라는 겁니다.

데이터를 여러 디스크에 분산 저장하고, 동시에 여러개를 읽어들인다라..
뭔가 감이 안 잡히시죠? 그림을 보시면 바로 이해하실겁니다!





이렇게 "I am man"이란 문장이 있을 때, 디스크가 RAID 0으로 되어 있다면
위 그림처럼 차례대로 분산저장이 된다는 겁니다.

각 디스크는 독립적으로 "스핀들"이나 "액츄에이터"를 갖고 있기에, 동시에 데이터를 
저장하는 것이 가능하겠죠? 이 말이 이해가 안 되신다면 "하드디스크 구동 원리"를
모르시는거니  https://mamu2830.blogspot.com/2019/10/blog-post_14.html
를 꼭 보고오시면 좋겠습니다.

계속하여, 동시에 데이터를 저장할 수 있기 때문에, "RAID 0을 맺는 디스크의 수" 만큼
"데이터의 저장 속도가 빨라진다"고 볼 수 있습니다. 위 그림처럼 3개의 디스크로
RAID 0을 맺었으면 3배로 데이터를 저장하는게 빨라진다는 것이죠.

자 말했다시피 각 디스크는 독립적으로 구동하니, 저장한 데이터를 여러개 읽는 것도
동시에 가능하겠죠? 





이렇게 말이죠~ 결국 데이터를 저장하는 것처럼, 3개의 디스크를 RAID 0을 맺으면
데이터를 읽는 속도도 3배로 빨라진다는 겁니다.

정리해서 "RAID 0"의 특징은 바로 "디스크 n개로 만들면 데이터를 읽고 쓰는 속도가
 n배가 된다는 것"

자 그런데 궁금한 게 있죠? 바로 "Striping 방식"이라는 것, 여기서 분명
'아니 내가 아는 striping은 줄무늬를 말하는데?? 디스크에서 줄무늬라니 무슨 소리지..?'
로 생각하며 이해가 잘 안되시는 분들이 있을 겁니다.

사실 그 줄무늬가 맞습니다. 여러분이 생각하는 그 줄무늬요. 이해를 돕기 위해
윗 그림을 한번 바꿔볼게요~





자 바꿨습니다. 뭔가 "줄무늬"라는 것이 느낌이 팍 오지않나요?
그렇습니다 윗 그림처럼, 데이터를 분산 저장할 경우 그림처럼 줄무늬같이 데이터들이
나눠 저장돼서 "Striping 방식"라고 하는 겁니다.  

처음에 배웠던 "Linear 방식"과 반대 개념이라고 생각하시면 됩니다.
그래서 "Linear/striped" 이런식으로 디스크공간에 어떻게 데이터가 저장됐는 지를
구분합니다.


하지만 데이터를 분산저장하기 때문에 RAID 0을 이루는 디스크중 하나라도 고장나면
전체 데이터가 못쓰게 된다는 것이 치명적인 단점입니다~(당연하죠?)





5. RAID 1(Mirroring 방식)




이야 RAID 0과 마찬가지로 중요한 기술중 하나인 "RAID 1"입니다!
RAID 1부터가 사실상 진정한 "Redundant"란 단어가 어울리는 기술인데요

"RAID 1"은 바로 각 디스크에 똑같은 데이터들을 저장하는 겁니다.
"Redundant"라는 영어 뜻대로 중복된 데이터들을 저장하는 것이죠.

그림을 보시죠!




위 그림처럼 "RAID 1"을 맺은 디스크들에게는 똑같은 데이터가 저장이 됩니다.

당연히 RAID 1을 맺은 디스크들 각각에 똑같은 데이터들을 저장하니
실제로 사용할 수 있는 공간은 그만큼 줄어듭니다. 

2개의 디스크로 RAID 1을 맺었으면 총 50%공간만 사용하는 것이고
3개의 디스크로 RAID 1을 맺었으면 총 33.33...% 공간만 사용하는 것이겠죠

당연히 똑같은 데이터를 저장하는 이유는 "데이터 복원"을 위해서겠죠?
다른 한 디스크의 데이터가 손실이 되어도, 다른 하나의 디스크의 데이터를 이용해
복원하면 되는 거니깐요~

정리해서 "RAID 1"의 특징은 바로 "n개의 디스크로 RAID 1을 만들면 각 디스크에 똑같은
데이터들이 저장되고, 실질적으로 사용하는 공간은 1/n이 된다" 입니다.

자 그럼 궁금한 거 또 나와야죠~ 바로 "Mirroring 방식"이란 무엇이냐~

영어 뜻 그대로 입니다~ 거울마냥 똑같은 데이터를 저장하는 것이고 우리가 아는 쉬운 단어로 바꾸자면 "복사"라고 말할 수 있겠네요

RAID 1은 각 디스크들에 똑같은 데이터를 저장했었죠? 그래서 "mirroring 방식"~


자 여기서 RAID 0과 RAID 1이 상당히 헷갈리실텐데요~(뭐가 복원용인지, 뭐가 분산저장
인지)

제가 외웠던 방법을 알려드릴게요~ 바로 제가 설명했던 것처럼
"RAID"라는 이름의 "R(Redundant)""중복돼 필요없는"이라는 뜻이랬잖아요?

말그대로 중복되는 데이터가 있어야 RAID인데, "RAID 0"과 "Linear RAID"는 
중복되는 데이터가 없죠~ , 중복되는 데이터가 없다고 해서  숫자 "0"...!! 

그리고 "Linear RAID"는 사용할 만한 장점이 아무것도 없기에 아무런 숫자도 없다~

그럼 자연스럽게 "똑같은 데이터를 저장하는 장점의 RAID"는 남은 숫자 "RAID 1"이죠?

또한 이 이후로 나오는 RAID 2, 3, 4, 5, 6 ... 이렇게 0이 아닌 RAID 기술들은 모두
복원기능이 있다고 보시면 됩니다.




6. RAID 2, 3, 4를 잘 안쓰는 이유, 그리고 레이드 기술은 복합적으로 사용가능(10, 01, 15등등) 




뭔가 우리는 규칙을 발견했습니다. RAID 뒤에 있는 숫자가 0 1 ... 이렇게 증가하는 것을요
그럼 당연히 생각이 나죠! 바로 "RAID 2, 3, 4"도 있겠구나! 

네! 맞아요! 있습니다!

네!

하지만 2, 3, 4는 대충 설명하고 넘어갈 겁니다. 왜냐면 현재 거의 쓰이지 않으며
또 이해하려면 다른 컴퓨터 지식들이 많이 필요하기에 포스트만 길어지기 저만 힘들기
때문이죠~


i)RAID 2, 해밍코드(Hamming code)란?




RAID 2는 ECC(Error Correcting Code, 에러 고치기위한 코드)라고도 불리는 해밍코드를 사용하여 사용할 디스크들와 복구용 디스크를 구분하고, 이 때 사용할 디스크들은 RAID 0처럼 striping(데이터 분배)방식으로 데이터들을 저장 및 읽어들여 사용한다는 게 특징입니다.

왜 이렇게 '데이터 디스크'와 '복구용 디스크'가 구분이 되냐면, 해밍코드의 특징 때문입니다.

"해밍코드"라는 개념을 모르는 분들이 꽤 있으실 겁니다.

해밍코드는 "데이터 통신" 수업을 들은 적이 없거나, 비전공자들은 모르는 개념으로
매우 간단히 설명하고 자세하게는 다른 포스트에서 다루도록 하겠습니다.

'해밍코드'기존 데이터에 패리티 데이터들을 추가하여, 기존 데이터에 오류가 발생했을 때 에러가 발생된 코드를 원래 코드로 수정하기 위해 사용하는 기술입니다. 

비단 데이터 송수신 뿐만 아니라, 모든 컴퓨터 영역에서 사용되는 데이터 복구 기술에서 'ECC'라는 이름으로 사용되고 있죠!

이 때 모든 기존 데이터에서 오류를 수정하기 위해 필요한 최소 패리티 비트 수
아래 해밍코드 공식으로 구할 수 있습니다.(^는 승을 의미, ex)2^4 = 16)

해밍코드 : 2^p(parity 비트 수) >=  d(data bit수) + p(parity 비트 수) + 1

예를 들어 80 bits 데이터가 있을시 에러 수정 기능을 넣기 위해선 
ex) 2^6(64) >= 80 + 6 + 1(만족 안됨)
ex) 2^7 >= 80 + 7 + 1(만족 됨)
최소 7bit의 패리티 비트가 필요하다는 것이죠.

다시 돌아와서 

RAID 2는 해밍코드 기술을 사용하기에 기존 디스크에 저장되는 데이터가 있으면 오류 수정에 필요한 만큼 추가 데이터(패리티 비트들)이 생기며, 이 때 추가된 패리티 비트들은 분리해 따로 복구용 디스크에 저장합니다.

그리고 이 때 RAID 2를 이루는 디스크는, 데이터를 저장하기 위한 디스크 수복구용 디스크의 수같게 한다고 하네요.

즉, RAID 2 RAID 0 방식 + 복구용 디스크가 있는데, 그 복구용 디스크는 해밍코드 때 필요한 패리티 정보들이 들어있다라 할 수 있습니다.

이러한 RAID 2는 현대에서 거~~의 사용이 안되는데요. 그러한 이유는 이러합니다.

1. 데이터 처리 단위가 비트 수준입니다.
--> 현대에서 데이터 단위는 섹터만으로도 부족해, 블록단위를 만들어 사용하고 있는데, 비트단위로 데이터를 저장 및 사용한다는 건 정말 엄청 뒷처친 기술이죠.

2. 각 디스크들의 동기화를 해주는 비싼 드라이브가 추가로 필요하다.
--> 패리티 데이터들은 따로 복구용 디스크에 저장하고, 데이터를 읽기할 때는 모든 디스크에서 striping(RAID 1) 방식으로 하기 때문에 RAID 2를 이루고 있는 디스크들 동기화를 해주는 특별한 장치가 추가로 필요하며, 그것도 안 쓰이는 이유 중 하나입니다.

3. 위에서 말한 동기화 과정과 추가적인 해밍코드 생성등 복잡한 작동 매커니즘 때문에 시스템 속도가 다운된다.
--> 데이터 복구라는 장점에 비교해서 성능 하락이 너무 심하며, 성능 면에서 더욱 월등한 RAID 3이상 기술 등장요즘 하드 디스크는 자체적으로 ECC기능을 갖춘 경우가 많기에 더더욱 RAID 2를 쓸 이유가 없어졌다고 합니다.

--지식 출처-- 
https://www.open-e.com/blog/raid-2-raid-3-raid-4-what-it-is-how-it-works-the-history-lesson/
https://www.geeksforgeeks.org/hamming-code-in-computer-network/



ii)RAID 3, 패리티비트(parity bit)란?, RAID 4





RAID 3은 RAID 0처럼 striping(데이터를 분산하는)방식으로 저장하는데, 하나의 디스크는
"패리티(parity)"용으로 만드는 것이 특징입니다.

자자 모르는 단어가 나와버렸네요! 바로 패리티(Parity)! 이건 해밍코드와 달리
앞으로 자주 보게될 정도로 알고 있어야할 지식이기 때문에 좀 자세히 설명하고
넘어가겠습니다

"Parity(패리티)""동등한 상태"란 뜻 단어인데요, 주로 봉급이나, 지위에서의
동등함을 표현하기 위해 쓰이는 단어입니다.

그럼 "컴퓨터 공학"에서 쓰이는 "패리티(Parity)란 무슨 의미일까요?"
바로 기존의 정보랑 동등한(똑같은) 상태인지 확인할 때 쓰이는, 즉 오류가 났는지
검사하기 위해 추가한 것을 의미합니다.

자 그럼 "패리티 비트(Parity bit)"란 무엇일까요? 그렇죠 바로
"기존의 데이터랑 똑같은지 확인하기 위해 추가하는(Parity) 비트(bit)"를 말하는 겁니다.

컴퓨터 공학에서는 이렇듯 오류를 검출하기 위해 패리티 비트를 추가하는 방식을
자주 사용하는데요

패리티 비트는 "홀수 패리티 비트" 또는 "짝수 패리티 비트" 이렇게 있습니다.
"짝수 패리티 비트"란 말 그대로 0과 1중, 1이 짝수가 되게끔 비트를 추가하는 것이고

"홀수 패리티 비트"란 말 그대로 0과 1중, 1이 홀수가 되게끔 비트를 추가하는 겁니다.

1이 홀수, 짝수로 되게끔 비트를 추가한다는 게 뭔소리인가 싶죠?
예시를 통해 설명해볼게요~

"3비트의 데이터"와 "1비트의 패리티 비트"가 있다고 쳐봅시다. 그리고 "짝수 패리티 방식"
구성 해볼게요

데이터 3비트가 "101" 이렇게 있다고 칩시다 현재 "1"의 개수가 2개로 이미 짝수죠?
그러므로 패리티 비트짝수를 유지하기 위해 "0"으로 정해져서 들어가는 겁니다.
그러면 "1010" 이렇게 되겠죠

여기서 데이터 비트 "101"중 가운데 "0""1" 변질됐다고 쳐봅시다
그럼 총 데이터가 "1110" 이렇게 되겠죠? 그럼 원래 "짝수 패리티 비트 방식"을 썼기에
분명 "1"의 수가 짝수여야 하는데, 3개로 홀수가 됐으니 1개 비트가 바뀌었구나!'
이렇게 알 수 있는 겁니다.

즉, "패리티 비트"를 쓰면 '정보가 변질됐구나!' 와 같이 오류가 생겼다는 것을 
검출할 수 있는 것이죠.

원래는 시리얼(serial, 직렬) 데이터 통신같은 데이터 전송 때 쓰이는 패리티 비트(parity bit)는 "오류 검사용"으로만 쓰이지만"RAID"에서의 패리티 기술은 1개의 디스크의 오류를
복구할 수 있습니다.

하지만 여기서 의문이 듭니다. 위 설명은 바로 "인간인 우리"가 봤을 때 아는거지
기계는 정보가 변질됐는지 어떻게 계산할까? 라는 의문이 말이죠

다시 말하자면, 기계"1"이 짝수인지 아닌지(짝수 패리티비트니까) 어떻게
계산하냐 이거죠

바로 여기서 쓰이는 기계가 패리티 비트 검출 때 쓰는 논리연산이 바로 
"XOR(Exclusive OR)"입니다.

"XOR"는 서로 다르면 "1", 같으면 "0"인데요
그냥 데이터 비트들을 차례대로 XOR연산을 하면 마지막에 나오는 수가
"짝수 패리티비트"입니다

위에서 예시를 들었던 "101" 데이터비트인 경우 짝수 패리티비트를 구하는 방법은






이렇게 됩니다. 주황색부터 시작해서
1과 0은 다르기에 XOR 연산을 하면 1이 나옵니다.
그 다음 나온 "1"을 다음 1과 XOR연산을 하면 "같기 때문에" "0"이 나옵니다.
그래서 최종적으로 남은 "0"이 바로 "짝수 패리티 비트"인 것이죠 이제 이 "0"을 데이터
비트 뒤에 추가만 해주면 되는 겁니다.

초반에 알려준 것처럼, 짝수 패리티비트기에 "1"의수가 이미 짝수라 "0"을 준 것과 결과가
똑같죠?

그럼 "홀수 패리티비트"는 어떻게 계산을 하느냐? 바로 위 계산에서 나온 
"짝수 패리티비트"를 "NOT"처리를 하면 됩니다. 다시 말해서 "짝수 패리티 값"으로 나온 걸
"반대 값"으로 바꿔주면 된다는 것이죠






위 사진처럼 XOR계산을 해서 나온 값이 "0"인 경우 그냥 NOT처리를 하여
1로 바꿔서 " 1을 홀수 패리티비트"라고 넣으면 되는겁니다.

XOR한 값을 NOT한 것을 패리티 비트라고 넣어주니, 1의 수를 홀수로 맞추던 방식과
똑같이 됐죠?

여기까지, 눈으로 1의 짝수, 홀수를 계산하는 방법외에도 XOR을 이용하는 방식이 있고,
컴퓨터는 이렇게 계산을 한다는 것을 알려드린겁니다.

현재 제가 패리티비트가 1개일 때를 예시로 설명했었는데, "RAID 3"에선
"바이트 단위로" 데이터가 나뉘어져 각 디스크들에게 저장되고,
"바이트 단위의 패리티 데이터"들이 패리티 디스크에 저장이 됩니다.

와,, 저흰 1개의 패리티비트만 계산했었는데 바이트 단위로는 어떻게 패리티비트를
계산을 할까요?

보통 RAID 3는 1024Byte로 나눠서 저장한다고 하는데... 이걸 제가 계산을 다 할 순 없고..

"2개의 데이터용 디스크""1개의 패리티 디스크"총 3개의 디스크가 있고
각 디스크에 "1바이트"씩 저장하며, 패리티비트는 짝수형이라 치고 같은 원리를 사용해
설명해 볼게요




이렇게 총 16비트의 데이터가 있고 원래대로면 RAID 0처럼 스트라이핑 방식으로,
사용하는 디스크에 1바이트(8비트)씩 나눠져 들어갈 겁니다.

여기서





1번처럼 10101011과 0101011을 XOR해서 나온 "11111100"이 바로 짝수 패리티비트
인 겁니다 이걸 패리티 디스크에 저장을 하는 것이죠.

만약 "홀수 패리티 비트 방식"이라면 저걸 NOT처리해서 "11111100 --> 00000011"해서
패리티 디스크에 넣으면 되는 것이죠

위 방식처럼 패리티 디스크를 만들어서 저장할 경우





이렇게 데이터용 디스크 하나의 정보가 손실되어도
남은 디스크와 패리티 디스크의 정보를 이용해 복구할 수 있는겁니다.

하지만 XOR계산을 사용하기 때문에 오직 하나의 디스크만 복구할 수 있습니다.
2개이상 고장나면 어쩔 수 없죠. 

최소 3개이상의 디스크로 구성해야 합니다. 왜냐고요? 2개만 쓸거면 사용할 디스크
1개, 패리티 디스크 1개인데 이런식이면 결국 RAID 1과 다를게 없기 때문이죠

이제 저는 예시를 1바이트로 잡았지만 실제에선 1024바이트 x 디스크 수들을
XOR 계산을 한 다음 나온 최종 값을 패리티 디스크에 넣겠죠.. (우욱)

자! 바로 "RAID 4"도 설명할게요. 아주 쉽습니다
그냥 "RAID 3"와 거의 똑같습니다

유일하게 다른 점은 바로 "RAID 3"는 "바이트 단위"로 디스크에 저장하지만
"RAID 4"는 "블록 단위"로 디스크에 저장한다는 점이 다릅니다.

블록이 뭐지...? 하시는 분들은
https://mamu2830.blogspot.com/2019/10/chs-lba.html
이 파일시스템 포스트를 읽고 오시길 바랍니다.

여기서 중요한 점.. 제가 시작할 때 RAID 3과 RAID 4도 현재 거의 안쓰인다고 했었죠?
왜 그럴까요?

그렇습니다... 바로 하나의 디스크에 만든 패리티 정보를 저장해야 하기 때문에 이 과정에서
병목현상(시스템 성능 저하)이 생기며, 또 데이터를 읽어들일 때는 패리티 디스크는 제외해야하기 때문에 속도가 약간 감소한다고 합니다. 

그리고 이후 이러한 단점들이 커버된 'RAID 5'발명됐기 때문에, 하위호환인 RAID3와 RAID4를 지금은 사용을 안하는 겁니다!

자 대충 설명한다고 했는데 또 제 성격상 쓸데없이 자세하게 설명한 것 같네요..(에효)

긴 글 읽느라 몽롱해졌을테니 정리하고 다음으로 넘어가겠습니다!


RAID 2 : 해밍코드를 이용하여 구성하며, 데이터 저장 방식은 RAID 0과 같이 striping 방식

RAID 3 : 패리티 디스크 하나를 두어 바이트 단위로 저장함, 데이터 저장방식은 striping

RAID 4 : RAID 3와 똑같은데, 블록 단위로 저장한다는게 다르다




iii)RAID는 복합적으로 사용가능하여 RAID 01, 10와 같이 구성 가능




RAID를 보다보면 가끔 "RAID 10", "RAID 15"막 이런 숫자를 보기도 하는데요.
RAID를 잘 모르시는 분들은 이걸 보고 '세상에! 벌써 RAID 15까지 기술이 발전한
건가...!? 어떡하지.. 15까지 언제 공부해...' 이렇게 지레겁을 먹으실 겁니다.

하지만 그럴 걱정 전혀~~ 없습니다. 왜냐면
그 "RAID 10, 15"는 진짜 숫자 10과 15가 아닌 "RAID 1과 RAID 0의 조합" 그리고
"RAID 1과 RAID 5의 조합"이기 때문입니다.

RAID란 기술은 복합적으로 사용할 수 있기 때문에 생긴 숫자라고 볼 수 있죠 ㅎㅎ

속도가 배가 되지만 복구 기능이 없고 위험 부담이 커지는 "RAID 0"과
안정성은 배가 되지만 사용 용량이 배로 줄어드는 "RAID 1"을
복합적으로 조합하여 구성을 하여 효율을 늘리는 겁니다.






위 사진처럼 RAID 0을 먼저 구성한 다음 RAID 1을 구성하면
이걸 "RAID 0+1" 또는 "RAID 01" 이라고 부릅니다.

총 6개의 디스크가 RAID 0으로 맺어졌으니 6배 빠르겠지만
RAID 1로 절반을 묶었으니 실제로 사용하는 양은 2분의 1배가 되어

결론적으로 3배가 빠르고, RAID 0으로 맺어진 3개의 디스크중 하나가 고장나면
다른 RAID 0 디스크들을 통해 복구를 할 수 있죠


그럼 이번엔 RAID 1을 먼저 맺은 다음 RAID 0을 맺는 RAID 10 방식을 봐보겠습니다.





이처럼 RAID 1을 먼저 맺고 그 다음 RAID 0을 맺은 방식을
"RAID 1+0" 또는 "RAID 10"이라고 부릅니다.

이것또한 총 6개의 디스크가 2개씩 RAID 1을 맺어 총 용량이 2배 나눠져
총 3개의 디스크와 같지만, 그 3개의 RAID 1묶음에 RAID 0을 맺어
속도는 3배 증가한 모습을 볼 수 있습니다.

벌써 감이 오시다시피 "RAID 10"이 "RAID 01"보다 더 좋습니다.
RAID 10은 복구용 디스크가 3개라 볼 수 있고, 한 레이드에 엮인 디스크도 2개밖에 
안되는데,

RAID 01은 복구용 디스크가 2개라고 볼 수 있고, 한 레이드에 엮인 디스크는 3개나
되기 때문입니다!(읽기도 별로임 01이 뭐야 01이...)

그래서~~ 당연히 RAID 01보단 RAID 10을 더 자주 사용합니다~
그리고 앞서 설명한 것처럼 RAID 1의 장점을 이용하여 "RAID 5"와 결합한
RAID 15도 있다는 걸 알아두세요~





7. RAID 5





이야 중요한 RAID 5가 드디어 나왔습니다~  RAID 5는 현재 제일 많이 쓰이는
RAID 기술이며, 그만큼 유명해 들어본 사람들도 많으실 겁니다

하지만 RAID 5를 또 이해하려니 이미 많이 지치셨죠 ㅠㅠ..
그런데 저희는 RAID 3을 이해했기 때문에 RAID 5는 그냥~ 쉽게 이해하고 넘어갈 수
있습니다

RAID 5는 그냥 RAID 3, 4의 방식을 조금 변형했을 뿐이기 때문입니다!

어떻게 변형을 했냐면 바로 RAID 3과 4는 한 디스크에 패리티 정보를 몰빵했다면
RAID 5데이터 처리를 할 때마다  각 디스크들이 돌아가며 패리티 정보를 저장을 합니다.
당연히 RAID 5도 RAID 0처럼 striping 방식이구요~

어휴 말로는 뭔소리인가 싶죠? 그림을 보시죠!






이렇게 한 디스크에 8비트씩 데이터를 넣는다고 쳤을 때, RAID 3과 4처럼
패리티 비트들을 만든 다음, 패리티 비트를 번갈아가며 디스크들에게 저장하는 겁니다.

왜 이렇게 하느냐? 패리티정보를 한 디스크에 몰빵했던 RAID 3와 4같은 경우
패리티 디스크가 고장나면 복구가 불가능해지는 문제가 있지만

이렇게 패리티 정보를 분배하는 RAID 5방식을 사용하면 어떤 디스크가 고장나도
1개만 고장났다면 복구가 가능한 겁니다.

누가봐도 이것이 RAID 3과 4보다 안정성이 더욱 높죠?

RAID 3와 4와 마찬가지로 RAID 5도 패리티 비트 방식을 사용하기 때문에 최소 
디스크가 3개 이상이여야 합니다만 보통 5개 이상으로 구성합니다.

하지만 결국 돌아가면서 저장하는 패리티 정보들을 모두 모으면 한 디스크 분량만큼
용량을 차지하기에, 실제로 사용하는 디스크량은 "전체 디스크 수 - 1"이라는 걸 알아두세요~




i)RAID 15




RAID 5는 RAID 2, 3, 4에 비교하면 훨씬 안정적인 방식이지만 결국 
디스크 1개밖에 복구를 못한다는 단점이 있기에 안전하게
RAID 1과 복합적으로 구성을 하여 사용합니다.

RAID 01, 10때와 마찬가지로, RAID 15처럼 "1"로 시작을 한다는 건
먼저 RAID 1로 구성을 한 다음 RAID 5로 구성한다는 것을 이제 저희는 압니다.





이렇게 말이죠~ 이렇게 구성을 하면 디스크가 2개이상 고장나도 복구가 가능하겠죠?

물론 당연히 RAID 5+1도 있습니다~

다시 한번 정리를 하자면

RAID 3, 4, 5패리티 방식을 사용하기 때문에 최소 3개 이상의 디스크로 구성해야하며,
1개의 디스크만 복구할 수 있다

RAID 5도 당연히 RAID 1과 복합적으로 사용하는 RAID 15가 있다





8. RAID 6




사실 제 맘 같아선 6까지 하고 싶지 않았는데(저도 이해할 수 없는 영역이라...)
리눅스 마스터 시험에서 RAID 6이 시험에 나왔기에 결국 알려드리기로 마음을 먹었습니다.

물론 원리를 묻거나 하지 않습니다 그냥 RAID 6의 특징과 RAID 6을 사용할 시 
사용가능한 용량크기 비율정도? 그러니 그냥 가벼운 마음으로 보시면 되고
저도 자세히는 알려드릴 수가 없습니다... 노력은 해봤으나 현재 제 수준에서 이해할 수
있는 지식이 아니더군요...

RAID 6RAID 3,4,5와 마찬가지로 패리티 비트 방식입니다.
하지만 RAID 5에서 한 단계 더 나아가 패리티 데이터를 2중으로 만든다는 것에서
차이가 있습니다.

패리티 데이터를 2중으로 만든다는 게 무슨소리냐?






이런식으로 패리티 비트를 2중으로 만드는 겁니다.
이렇듯 RAID 6은 패리티 비트를 2중으로 만들었기 때문에, RAID 3,4,5와 달리
디스크 2개까지 복구 가능합니다.

그리고 RAID 6은 패리티 비트 2개를 쓰는 건 결과적으로 2개의 디스크 분량을 패리티로 
사용하는 것과 같기 때문에, 실제적으로 사용하는 용량은 "전체 디스크 - 2"입니다.

어떤 원리로 패리티 비트를 2중으로 만드는지, 또한 복구하는지는 저의 능력 밖이므로
정 궁금한 능력자가 계시다면...

https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_6

이곳에 가셔서 RAID 6 부분을 보시면 됩니다! 저는 도저히 못하겠어요 ㅠㅠ




자 진짜 이번에도 생각보다 길어져서 3일이 걸렸네요...
힘들지만 아주 가끔 따듯한 댓글과 팔로우, 광고 클릭을 해주시는 분들이 있기에
힘을 내어 리눅스 마스터 1급 독학을 위해 멈추지 않고 끝까지 마무리 해보겠습니다!

따듯한 댓글, 팔로우 저에게 정말 큰 힘이 되어 포스트의 퀄리티를
향상 시킵니다!

긴 글 읽느라 고생하셨습니다~



댓글 26개:

  1. 댓글이 없다니 도움이 많이된 글이였습니다.

    답글삭제
    답글
    1. 도움이 됐다니 다행입니다 !! 이 포스트의 첫 댓글을 달아주셔서 감사합니다!

      삭제
  2. 저도 도움 많이 받고갑니다. ㅎㅎ

    답글삭제
  3. 이런 엄청난 정보를 주셔서 감사합니다

    답글삭제
    답글
    1. 도움이 돼 다행입니다! 따뜻한 댓글 감사해요~

      삭제
  4. raid5, raid6 가 많이 어려웠는데 작성해주신 raid0부터 읽으며 확인하니 이해가 훨씬 수월했습니다. 정보 감사드립니다~

    답글삭제
  5. 와우 감사합니다!ㅎㅎ혹시 제 블로그에 조금 인용하고 여기 블로그 링크 남겨도 될까용?

    답글삭제
    답글
    1. 조금 인용하는 정도에서 그치고, 제 블로그 링크를 글에 남겨주시면 괜찮습니다~

      삭제
  6. 이해하기 너무 쉽게 작성해주신 것 같아요! 이거보다 쉬운 글이 없는 것 같아요 ㅋㅋ 포스팅 하는데 링크 남깁니다!!

    답글삭제
    답글
    1. 이해가 쉽게 됐다니 정말 다행입니다!! 따뜻한 댓글 감사합니다~

      삭제
  7. 와 정말 설명 잘 해주시네요! 근데 궁굼한 점이 하나 있습니다. RAID4에서 "패리티 디스크가 고장나면 복구는 물건너 가기 때문" 라고 하셨잖아요
    왜 그런건가요? 패리티 디스크는 XOR한 결과값이니까 다시 XOR 연산해서 만들면 되는 거 아닌가요?

    답글삭제
    답글
    1. 이야... 정말 예리한 질문이네요.. 저는 당시에 왜 이런 의문이 안 들었을까요..
      저도 사실 이 포스트를 할 당시에는, 단순히 RAID4가 안 쓰이는 이유는 패리티가 하나의 디스크에 몰빵되니까 그렇다라고 배웠었기에 당연히 그리 알고 넘어갔었는데요.
      지금 달아주신 댓글을 보고 저도 의문이 들어 알아봤습니다!

      'RAID4'는 디스크에서 write(저장행위)를 할 때, 패리티 데이터들을 하나의 디스크에 저장해야해서 병목현상(시스템 성능 저하)가 일어나고 또 데이터를 read(읽는 행위)
      할 때는 패리티 디스크를 읽지 않아야하기에 전체적으로 읽기 속도가 약간 감소한다고 합니다.

      이러한 RAID4 단점들이 모두 커버된 RAID5가 등장했고, 당연히 성능면에서 훨씬 좋기 때문에 RAID5를 쓴다고 하네요!
      지식 출처 : https://www.quora.com/Why-choose-RAID-5-instead-of-RAID-4

      예리한 질문을 해주셔서 저 또한 새로운 지식을 얻었네요!

      아쉽게도 바로 RAID4 부분 포스트 내용을 고치고 싶지만... 포스트 내용을 수정하면 구글 검색 순위가 내려가기 때문에 ㅠㅠ 나중에 구글 검색 순위가 더 높아졌거나, 수정할 내용이 더 쌓이면 수정하도록 하겠습니다.

      삭제
    2. 오 그런 이유가 있었군요 정말 감사합니다. 공부 하는데 정말 많은 도움이 됩니다!!

      삭제
  8. 한 수 배우고 갑니다 ㅎㅎ 패리티 비트가 어떻게 사용되는지 애매했는데 너무 잘알려주셔서 감사해요

    답글삭제
    답글
    1. 도움이 돼 다행입니다!! 따뜻한 댓글 감사해요~

      삭제
  9. raid2 는” 복구용 디스크중 하나라도 맛이가면 결국 이 기술은
    무용지물이기에 안 쓰입니다.” 라고하셨는데 4개디스크 중 3개가 복구용으로 사용되면 하나 고장나면 나머지 두개는 살아있는거아닌가요~?

    답글삭제
    답글
    1. 안녕하세요~ RAID 4와 마찬가지로 이 포스트를 쓸 당시에는 저의 지식이 많이 부족했고, RAID 2인 경우에도 정확히 알아보지 않고 대충 배웠던 정보를 바탕으로 포스트를 해서 잘못된 정보를 적은 것 같습니다.
      지적 덕분에 다시 제대로 알아보고 저의 RAID2가 틀렸다는 것을 알았습니다 ㅠㅠ

      제대로 된 RAID4와 RAID2 정보를 적어 포스트를 수정하도록 하겠습니다!

      삭제
    2. 아 그리고 루이뭅지님이 질문하신대로, RAID 2는 패리티 비트들을 이용하는 해밍코드로 만들기 때문에, 복구용 디스크가 하나 고장나도 나머지 디스크들을 이용해서 복구할 수 있다고 합니다!

      다시 한번, 잘못된 정보를 적었어서 죄송합니다ㅠㅠ

      삭제
  10. 다른분들 설명은 말로만 돼있어 좀 어려웠는데 그림까지 그려주시니까 쉽게 이해되네요. 감사합니다!

    답글삭제
    답글
    1. 열심히 그린 그림들이 이해에 도움이 돼 정말 다행입니다 ㅎㅎ

      삭제
  11. 정말로 유용한 정보를 쉽게 이해 할 수 있었습니다 감사합니다!!!!

    답글삭제
    답글
    1. 쉽게 이해가 되었다니 정말 다행입니다!!! 따뜻한 댓글들 감사해요~

      삭제
  12. 이렇게 복잡한 내용을 잘 설명해주시니 감사할 따름입니다 ...최고

    답글삭제
    답글
    1. 제 노력을 알아 주셔서 감사할 따름입니다 ㅎㅎ! 따뜻한 댓글 감사해요!

      삭제

#1 여러분들이 소중한 시간을 투자해 달아주시는 따뜻한 댓글들은 저에게 정말 큰 힘이 됩니다!

#2 저의 각 포스트들은 엄청난 노력과 시간 투자를 통해 만들어진 포스트들로, 무단 복제나 모방하는 것을 금지합니다.

#3 저의 포스트에도 틀린 정보가 있을 수도 있습니다. 그럴 경우 친절한 말투로 근거와 함께 댓글로 달아주시면 정말 감사하겠습니다!

* 바쁜 개인 일정으로 댓글 답변이 많이 느립니다 *