본문 바로가기

별걸다하는 IT/운영체제 OS

[OS 운영체제] RAID LEVELS 레이드 단계와 배경, (RAID 0, RAID 1, RAID2)

[운영체제 Operating System 완정 정복 목차 링크 ]

 

안녕하세요~! 저번 포스팅에서 RAID의 개념, 원리, 기능 등에 대해서 전체적으로 OVERVIEW하는 시간을 가졌었어요 ㅎㅎ

▼해당 포스팅이 기억이 나지 않으면 요기▼

 

[운영체제 OS] RAID 개념잡기! RAID란? 신뢰성과 성능 두 마리 토끼 잡기, 레이드 기술

[ 운영체제 Operating System 완전 정복 목차! ] 안녕하세요~! 운영체제 포스팅을 한지 시간이 쪼끔 된 것 같아서, 오랜만에 운영체제 관련 글을 들고 왔어요 ㅎㅎ 오늘 다뤄볼까 하는 포스팅은 RAID관련입니다...

jhnyang.tistory.com

RAID 배경

저번시간에 RAID를 쉽게 풀이하는 시간을 가졌으면, 복습차원에서 RAID 정의와 나온 배경을 훑고 레이드 단계별로 살펴보도록 할게요 

 

RAID는 여러 개의 하드디스크를 하나의 하드디스크처럼 사용하는 방식이다.

비용을 절감하면서도 더 신뢰성을 높이며, 성능까지 향상시킬 수 있다.

 

RAID 개념이 나온지 30년도 더 됐어요 ㅎㅎ 현재 기하급수적으로 발전하는 IT 업계에서 지금까지도 널리 사용되고 있다는 것은 RAID가 얼마나 중요한 개념인지 짐작할 수 있게 해주죠 ㅎㅎ

 

이 RAID라고 하는 개념을 제일 처음 제안한건 버클리 대학 연구실로, David Patterson과 Garth A Gibson 그리고 Randy Katz가 기존에 있던 개념을 정리 및 확장하여 RAID라는 용어를 만들었고 이에 관한 기술적 논문을 1988년에 발표했습니다.

 

1970~80년대라~~ 이때만 해도 우리가 지금 사용하는 개인 PC, 데스크탑 이런게 상용화되어 있지 않았습니다. 커다란 메인프레임 컴퓨터가 회사에서 사용되던 시절이예요. 근데 점점 개인 컴퓨터 가격이 낮아짐에 따라 사용되기 시작했고, 하드디스크가 처음으로 메인프레임 컴퓨터가 아닌 저장장치로 사용되기 시작했고 예전 시절보다 가격이 낮아지기 시작했습니다.

 

이 사회현상이 바로 RAID가 탄생하게 된 배경이예요. 사람들은 PC 하드 드라이브를 연결해 사용함으로써 메인프레임에 있는 큰 하드에서 내는 성능을 보일 수 있을거라 생각하기 시작했어요. 여러 개 하드디스크를 동시에 연결해 사용하는게 에러를 유발하는 요인이 될 수 있지만 오히려 중복할 수 있으니 메인프레임 하나의 큰 드라이브보다 더 신뢰도를 높일 수 있을 거라 생각했습니다. 

RAID는 즉 그 시절 사용되던 메인프레임의 SLED의 반대되는 개념이예요! (SLED: Single Large Expensive Disk)

 

RAID LEVELS

그 때 당시 초기에는 RAID 방법으로 1,2,3,4,5 5개만 제안을 했었어요. 그 이후에 회사들이 생기고 상용화가 되면서 다양한 RAID level이 추가가 된 거예요. 총 9개의 RAID 레벨들이 있습니다. 어제 포스팅에 이어서 전체적인 개념은 다 정리가 된 것 같으니 이제 레이드 레벨들을 차근차근 하나씩 정리해볼까요?!

 

전 포스팅에서 다뤘던 성능을 높이는 2가지 방법과, 신뢰도를 높이는 3가지 방법에 대한 이해는 있다는 가정하에 설명을 진행할게요

 

RAID 0 - BLOCK STRIPING

일단 RAID 0는 striping만 하고 신뢰도를 고려한 redundancy는 제공하지 않는다. 즉 신뢰도는 고려하지 않고 Striping만 한다! 이러면, 신뢰도는 높아지지않지만 성능이 좋아진다. 요거예요

처음 사진만 보면 이해가 어려울 수 있어요

맨 위에 0 1 2 3은 디스크 개수입니다. 0번 디스크, 1번 디스크, 2번 디스크, 3번 디스크 총 디스크 4개가 있네요

하나의 디스크에 데이터를 쭈르륵 저장하는게 아니라, 데이터를 블럭 단위로 쪼개서 여러 디스크에 나눠 저장한다는 걸 보여주고 있어요. 

 

쉽게 예를 들어서 3개의 하드디스크를 사용한다고 하면 "말랑이몰랑이블로그"라는 내용이 저장될 때 한 디스크에 "말랑이몰랑이블로그"가 다 써지는 게 아니라, 하나의 디스크가 다 차지 않았어도, 3개의 디스크에 가각에 동시에 "말" "랑" "이"이렇게 써지는 거예요 그다음 "몰" "랑" "이" 이렇게 써지겠죠?

그럼 한 글자 쓰는데 1초가 걸린다고 가정하면 (물론 말도 안되지만..)

한 디스크에 저장할 때에는 9초가 걸리는데, 이렇게 Raid 0을 사용하면 3초면 되겠죠! -> 이렇게 성능이 높아지는 겁니다.

사실 이거는 STRIPING에 대한 이해를 돕기 위해서 예시를 과장해서 든 것이고, 실질적으로는 한 글자 단위가 아니라 블럭 단위로 데이터가 저장이 됩니다. 요 BLOCK STRIPOING기법만 적용시킨게 RAID 0이예요. 참고로 0과 반대인 1은 미러링만 적용시킨 방법입니다.

 

[정리]

- 이러한 스트라이핑 기술로 RAID 0은 빠른 입출력 속도를 제공합니다.

- 데이터 중복이나 패리티 없이 디스크에 분산하여 기록합니다.

- 처리속도는 빠르나 구성된 디스크 중에 하나라도 오류가 발생하면 데이터 복구가 불가합니다.

 

RAID 0 사용 예시

아무튼 성능에 관련 STRIPING만 이용했으니까 그럼 신뢰도는 별로인데.. 신뢰도는 그렇게 중요하지 않은데 성능이 좋아야하는 그런 application이 뭐가 있을 까요?

video와 관련된, 동영상과 관련된 것들을 예시로 들 수 있습니다. 동영상은 디스크에서 계속 데이터를 읽어내야하잖아요 그러니까 성능이 중요해요. 동영상 보다가 버퍼링 걸리면 짜증나는거 다 겪어 보셨죠? ㅎㅎ

하지만 영화데이터 같은 것은 없어져도, 디스크 날라가면 영화야 뭐 다른데서 또 다운받으면 되잖아요.

신뢰도는 중요하지 않은데 성능이 중요한 대표적인 하나의 예시라고 할 수 있겠습니다 ㅎㅎ

 

RAID 0 요약:

RAID 0은 block striping 기법으로 성능에만 초점을 둔 방식

따라서 빠른 성능을 요구하되, 혹시 전부 잃어버려도 큰 문제가 되지 않는 자료를 저장하는데 적합하다.

 

RAID 1 - MIRRORING

RAID 0는 striping 기술만 넣어서 성능을 향상시킨 거라면, 반대로 RAID 0은 성능따위 없고 미러링 기술을 이용해서 데이터 복구 능력을 향상시킨 반대되는 개념입니다.

그림에 보면 0~7 총 8개의 디스크가 있네요,

그런데 (0,4) (1,5) (2,6) (3,7) 이렇게 쌍쌍으로 동일하게 데이터가 저장되어 있죠?

이렇게 하나에 데이터를 저장시키면 이거랑 똑같은 디스크를 하나 더 두는게 미러링입니다.

만약 Striping이 되어 있으면 A데이터가 0 1 2 디스크에 나눠져 저장되어 있어야 할텐데, A디스크는 0에 순차적으로 들어가 있는걸 보면 STRIPING은 사용하지 않고 미러링 기술만 적용시킨 방법이라는걸 파악할 수 있어요 

[정리]

- 미러링 기술을 사용하여 두 개의 디스크에 데이터를 동일하게 기록한다.

- 스트라이핑 기술은 사용하지 않으며, 각 드리이브를 동시에 읽을 수 있어서 읽기 성능은 향상되나 쓰기 성능은 단일 디스크와 같다. 

- 디스크 오류 시 데이터 복구 능력은 탁월하지만, 중복 저장으로 인한 디스크의 낭비가 50%에 이른다.

- 만약 드라이브 하나가 고장나면 데이터를 다시 복구하거나 새로 만들 필요 없이 다른 하나에 있던 것을 복사만 해주면 된다.

-매우 심플한 기술로 패리티 오버헤드 이런게 읍다.

 

RAID 1 요약:

RAID 0이 스트라이핑 기법만 사용했다면 RAID 1은 미러링만 사용한 방식입니다.

따라서 성능보다는 절대적으로 신뢰도가 우선시 되는 환경에 적합합니다.

 

RAID 2 - BIT STRIPING, ECC

레이드 단계가 많아서 진행할 수록 헷갈릴 수 있어요 ㅎㅎ

잘 정리하면서 넘어가도록 합시다. RAID 0이 성능만 고려한 블럭 스트라이핑 기술이고 RAID 1이 신뢰도만 고려한 미러링이라는걸 위에서 배웠어요 ㅎㅎ RAID2는 비트 스트라이핑과 ECC를 이용한 기법입니다. 2니까 2개! 성능도 들어갔고 신뢰도도 들어갔다 이렇게 이해해도 좋아요 ㅎㅎ

사진을 보면, RAID2는 일단 하나의 디스크 블록을 4개에다가 나누어 저장시켰죠? A0이 0에도 1에도 2에도 3에도 있잖아요! 아까 block striping은 block을 여러 디스크에다가 나누어 저장을 한거고 지금 현재 RAID2에서 사용하는거는 하나의 디스크 블럭 A0를 네 개의 디스크에 나눠서 저장한거예요. 

그니까 이 그림은 bit level striping한 것을 표현하고 있습니다.

 

제일 처음에 제안할 때 개념적으로 그렇게 제안을 해놨었어요. 근데 앞 포스팅에서 BIT LEVEL STRPING이 잘 안쓰인다고 했었죠?! 네 이거는 잘 안쓰입니당..

 

사진출처: http://atozhardware.blogspot.com/2011/10/this-os-how-raid-works.html

그런데 RAID2는 스트라이핑만 있는게 아니고 에러코렉팅코드를 써가지고 redundancy를 주겠다 이 개념입니다.

이 그림은 에러 코렉팅 코드를 3개까지 쓴거죠.

이렇게 되면 요 7개의 디스크 중에서 몇 개가 고장나면 복원할 수 있을까요?

3개까지! 왜냐면 3개의 bit를 더 뒀으니까, 세 개까지 복구할 수 있는 그런 방식이고 이거를 2개만 더 둘 수도 있고 이거는 에러 correcting code의 능력에 따라서 달라지는 것이다!

아무튼 이거는 잘 안쓰입니다. Bit level 이기 때문에.. 근데 에러 correcting code도 잘 안쓰여요. 계산하려면 복잡하잖아요. 앞으로 RAID LEVEL을 차근 차근 배우면서 나오겠지만, 실제로 미러링을 하려면 미러링을 하고 패리티디스크 하나를 두려면 하나만 두지. 에러코렉팅코드를 써가지고 연산도 복잡하게 하는 경우는 많지 않습니다.

 

RAID2는 디스크 인덱스에 동시에 접근할 수 있도록 같은 방향과 각도로 회전하게 해서 컨트롤러가 디스크를 동기화합니다. 이 말은 뭐냐.. 연속된 데이터를 아주 작은 bit 레벨로 동시에 저장하려고 이렇게 만든다는건, 구현하기 어렵고 비싸다는 거예요 ㅎㅎ 예전에도 잘 안쓰였고 더 좋은 방법이 있어서 앞으로도 잘 안쓰일 예정인 RAID 2..였습니다 ㅎㅎ

 

RAID2 요약:

BIT LEVEL STRIPING과 ECC가 같이 사용된 방법이다.

현재는 구현이 복잡하고 비싸서 잘 사용되지 않는 기법이다. 복구방법은 해밍코드를 이해하면 된당

 

▼오늘 포스팅 정리 그림 ▼

앞으로 해야될 단계들이 많이 남았는데... 포스팅 길이가 벌써 여기까지 와버렸네요 ㅋㅋ

오늘은 RAID2까지 자르고 남은 RAID 단계들은 다음 포스팅에서 이어서 다루도록 할게요 !

오늘도 누군가에게는 도움이 되는 정보였길 바라면ㅅ...ㅎㅎ

좋은 주말 보내세요.

공감, 댓글, 광고보답은 더 좋은 포스팅을 이어가는 힘이됩니당

참조: https://www.ontrack.com/uk/blog/pieces-of-interest/30-years-and-counting-will-raid-systems-ever-get-old/