본문 바로가기

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

[운영체제 OS] RAID3, RAID4, RAID5 상황 및 상세설명( RAID LEVELS 이어서..)

반응형

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

 

안녕하세요 여러분!

저저번에 'RAID의 전반적인 개념과 원리'에 대해서 다루는 포스팅을 하나 올리고,

저번에는 RAID 출현 배경과 RAID0, RAID1, RAID2 에 대해서 좀 더 자세히 파고드는 시간을 가졌었어요.

이번에는 그 시간에 연장선으로 나머지 RAID들을 이어 살펴보도록 할게요

 

저번 포스팅을 아직 읽고 오지 않으신 분은

▼RAID 개념잡기! RAID란?

 

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

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

jhnyang.tistory.com

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

 

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

[운영체제 Operating System 완정 정복 목차 링크 ] 안녕하세요~! 저번 포스팅에서 RAID의 개념, 원리, 기능 등에 대해서 전체적으로 OVERVIEW하는 시간을 가졌었어요 ㅎㅎ ▼해당 포스팅이 기억이 나지 않으면..

jhnyang.tistory.com

위의 포스팅에서 다룬 내용은 다 안다는 가정하에 갈게요! 고럼 이어서 고고!

 

RAID 3 - BIT STRIPING, PARITY

RAID3 들어가기 전에, RAID0은 스트라이핑 기법만 사용해 성능만 고려한 방법이고 RAID1은 미러링 기법을 이용해 오로지 복구에만 초점을 둔 거~

RAID2는 BIT STRIPING과 ECC, 두 개를 사용하지만 잘 사용되지 않는 기술이라는 걸 저번시간에 설명했었어요 ㅎㅎ

RAID2가 비트 스트라이핑에 ECC를 사용했다면, RAID3은 비트 스트라이핑에 ECC가 아닌 패리티를 사용한 방법입니다!

A0블럭이 0디스크에도 있고 1디스크에도 있고 2디스크에도 있고 3디스크에도 있고..

총 4개에 비트 레벨로 쪼개져서 저장되어 있습니다. 그리고 나중에 하나가 손실되었을 때 복구를 위해서 패리티 디스크를 하나 더 둔 것을 그림에서 확인할 수 있어요 

RAID 3 사용 예시:

한 디스크 fail정도면 괜찮다~~ 내가 봤더니 디스크가 고장났으면 하나 고장나지 재수없게 동시에 2개가 고장나진 않더라! 그러니까 나는 ECC처럼 막 몇개씩 갖다 두지 않고 딱 하나만 더 두겠다. ==> 요렇게 된게 RAID 3이예요 ㅎㅎ 

근데 striping은 bit level striping을 한다. 그래서 이것도 잘 쓰이진 않겠죠?! (RAID 관련 첫 번째 포스팅에서 비트레벨은 잘 안쓰인다고 설명했었어요!)

 

[정리]

- 데이터가 비트 단위로 분산 저장되기 때문에 읽기 및 쓰기 동작이 수행될 때 배열 내의 모든 데이터 디스크들이 참여하게 된다.

- 쓰기 동작마다 패리티 비트들을 갱신해야 한다는 문제가 있다 (RAID4도 겹치는 문제이므로 RAID4에서 좀 더 자세히 설명하도록 할게요)

- ECC보다 디스크를 적게 차지하니 레벨2 RAID보다는 스토리지 오버헤드가 적겠죠?

 

RAID 3 요약:

스트라이핑 기술을 사용하며 디스크를 구성하고, 패리티 정보를 저장하기 위해 별도로 하나의 디스크를 사용한다

입출력작업이 동시에 모든 디스크에 대해 이루어지므로 입출력을 겹치게 할 수는 없다. 보통 대형 레코드가 많은 시스템에서 사용된다.

 

RAID 4 - BLOCK STRIPING, PARITY

4번째는 뭘까요~~? 세 번째가 BIT LEVEL이랬는데 안좋다 했죠~

그래서 BIT가 아닌 BLOCK LEVEL STRIPING으로 바꾼게 RAID 4입니다! 쉽죠?

RAID 0, 1, 2, 3 다 훑고 4번째네요! 이쯤되면 그림을 보면 척! 이해가 될 거라 생각해요 ㅎㅎ

각 디스크별로 블락 단위로 저장이 되고 있네요! A0이 4개의 디스크에 분배되어 있던 것과 비교해보면 이 그림은 블락 레벨 스트라이핑을 하고 있음을 알 수 있어요 ㅎㅎ

block level striping을 하니까 연속된 디스크에다가 이렇게 나누어서 저장~ 거기다가 paritiy disk하나를 두는겁니다.

RAID 3, RAID 4의 문제점?

근데~~ 사람들이 나는 disk block 하나 고장날 때까지만 쓰면 되고 성능은 고려하니까, 이정도면 충분히 합리적인 configuration이다 생각을 하는데 이 configuration에 심각한 문제가 하나 있습니다.

 

예를 들어서 위 그림처럼 이렇게 저장이 되어 있어요, 근데 만약에 A0라는 디스크가 변경이 됐어! 즉 Write가 된거죠. A0가 변경이 되면 parity disk의 A parity도 변경이 되어야 합니다.

A라는 데이터는 원래 기존의 4개 A0, A1, A2, A3 가지고 패리티 디스크 블록 P를 만들었었잖아요. 즉 이 A데이터 조각 중에 하나라도 변경되면 P도 새로 만들어야 해요

 

어떤 disk block을 하나 write하라고 요청을 하면 기존에는 I/O만 변경을 하면 되는데~

RAID 4는 수정되는 데이터 조각도 변경하고 그에 따른 parity 데이터도 변경하고 총 2개를 변경해야하는거죠!

사실 Redundancy를 이용해서 신뢰도를 제공해야하니까 이건 어쩔 수 없는거죠.

근데 문제는 만약 이 disk system에는 write가 많이 발생해!!

그러면 하나의 write를 할 때마다 P가 write가 되어야 하겠죠? A0가 바뀌어도 P가 write가 되어야하고 A1이 바뀌어도 또 P가 write가 되어야해요 이 말은 무슨 말이냐 P로 write요청이 집중이 되니까 Parity disk가 엄청 바빠진다.

이런 문제가 있습니다. 사실 살짝 뒷 이야기 예고를 하자면? 이 문제를 해결한 게 RAID 5예요 ㅎㅎ

 

[정리]

- 디스크 중 하나가 fail나면 Parity disk로 인해 복구가 가능하다.

- 한 디스크에 접근해서 블락 데이터를 읽는 동안, 다른 디스크에서 또 다른 요청을 처리할 수 있다.

- RAID2나 RAID3에서는 데이터가 비트 단위로 분산 저장되었기 때문에 어떤 데이터를 읽거나 쓰기 위해서는 모든 데이터 디스크들을 동시에 access했으나, RAID 4에서는 필요한 데이터 블록이 어느 한 디스크에 모두 저장되어 있기 때문에 각 엑세스 요구가 서로 다른 디스크들에서 독립적으로 처리할 수 있다. ( 뭐 말만 다를 뿐 윗문장이랑 같은 말임) 

- 패리티 디스크에 엑세스가 집중되어 병목 현상이 발생해 성능이 저하되는 문제가 있다.

(요청이 많으면 뻑난다는걸 어렵게 표현한거죠 뭐...)

 

RAID 4 요약:

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

 

RAID 5 - BLOCK STRIPING, PARITY분산

RAID4의 문제를 해결한게 RAID5 입니다! 어떻게? 패리티 디스크에 너무 요청이 집중되니까 요 패리티 디스크를 하나에다가 다 처리하게 하지말고 이걸 나눠줘서 분산되게 하자! 요말입니다.

윗 사진을 보면 RAID4에서는 4번 디스크가 패리티 디스크였는데 RAID5는 Parity가 모든 디스크에 분산되어 있음을 볼 수 있어요. ㅎㅎ

 

상황이 어떻게 달라졌나?

이해하기 쉽게 예시를 들어볼게요 ㅎㅎ 예를 들어서 RAID4때 예시와 똑같이 A0가 바뀌었어다고 합시다.

그러면 DISK 0하고 DISK 4번이 바뀌어야 하는거죠. 그런데 만약에 A5가 바뀌었어! 그럼 1번하고 3번만 바뀌면 됩니다. 아까 RAID4에서는 A5가 바뀌면 1번하고 4번이 바뀌어야했죠 어디에 write가 되던지간에 패리티 디스크인 4번이 항상 업데이트 되어야 했었는데 이게 여러 디스크로 나뉘어진거예요 ㅎㅎ  

 

RAID 4의 문제점을 해결한 방식인 RAID5가 많이 쓰이는 그런 configuration중에 하나입니다.

 

RAID 1처럼 데이터의 안정성이 어느 정도 보장되면서, RAID 0처럼 성능도 좋은 방식을 사람들이 많이 찾게 됐는데, 이와 같은 스토리(?)로 인해 이를 어느 정도 포용하는 방식이 RAID 5입니다 ㅎㅎ

나는 성능을 높일거야 RAID0처럼 BLOCK STRIPING을 사용하니까 이게 첫 번째,

disk는 신뢰도가 중요하긴 한데 동시에 두 개 이상 고장나는 경우는 별로 없더라. 나는 하나까지만 커버하면 된다. 다만 패리티디스크 과중으로 인해 병목현상은 피한다. 이게 두 번째 ~ 돈도 아끼고 하는 방식이 RAID5가 되는거예요 ㅎㅎ

사진 출처:   http://rickardnobel.se/how-raid5-works/

 

혹시 패리티가 RAID5에서 어떻게 작동하는지 궁금한 사람들을 위해 첨부해놓은 사진 !

이렇게 세로로 패리티를 확인하기 때문에 패리티 블럭이 어디에든 위치할 수 있는거죠 ㅎㅎ

(패리티 에러 검출 방법을 알고 있으면 쉽게 이해할 수 있는 그림이예요!)

 

[정리]

- RAID5는 최소한 3개 이상의 하드디스크가 있어야만 구성이 가능하며 대게는 5개 이상의 하드디스크로 구성한다.

- 어느 정도 결함을 허용하며 저장 공간의 효율 또한 좋다.

- 하드디스크의 개수를 N개라 하면 N-1만큼 공간을 사용할 수 있다.

- 사방에 흩어져 있는 패리티 정보를 갱신하는데 생기는 성능 저하는 최근 '지능형 cache'를 내장하여 속도 저하 최소화를 수행시키는 것으로 극복하고 있다.

- 디스크 1개는 커버 되지만 2개 이상 오류가 나면 데이터가 유실될 수 있다.

- RAID 0보다 안전하다는 인식과는 달리 오히려 많은 량(보통 8개 이상)의 디스크를 스토리지로 묶으면, 패리티 연산 오류 발생 확률이 높아져서 RIAD0으로 묶은거보다 깨질 확률이 높아진다고 한다. 그러므로 대단위로 만드려면 RAID 6 또는 RAID10을 권장한다.

- 깨진 걸 복구하려고 디스크를 뽑았는데, 하필 정상이었던 하드를 잘못 뽑아서 깨지는 경우도 심심치 않게 발생하니 주의하도록 하자.

 

RAID 5 요약:

RAID4와 동일하나 패리티를 분산저장한 것이 RAID5이다.

패리티 정보는 별도의 디스크를 사용하지 않고 구성된 디스크에 분산하여 기록하지만 데이터를 중복 저장하지는 않아 가장 보편적으로 사용된다. 디스크에 쓰기 제한 주소를 지정하므로 모든 읽기 및 쓰기가 중첩될 수 있다.

작고 랜덤한 입출력이 많은 경우에 더 나은 성능을 발휘한다.

 

▼오늘 포스팅 정리 그림▼

관련 문제

[리눅스 마스터 1급 기출 1802회]

( ㄱ )은 RAID-0의 단점인 결합 허용을 지원하지 않는 점과 RAID 1의 저장 공간의 비효율성을 보완한 레벨로 디스크의 개수를 늘릴 수록 저장공간의 효율성이 좋아진다.

1. RAID-2

2. RAID-3

3. RAID-5

4. RAID-7

답: 3번 RAID-5

 

RAID를 이렇게 많이 봤지만 아직 끝이 아닙니다 후후

아직도 해야할 단계들이 많아요.... ㄷㄷ

ㅎㅎ 오늘은 RAID5에서 자르고 남은 RAID 단계들은 다음 포스팅으로 토스할게요 ㅎㅎ

공감, 댓글, 광고보답은 정성들여 포스팅을 작성하는데 언제나 힘이 됩니다 

그러면 다음에 또 봐요 :)

반응형
  • 오동통 2020.01.13 14:45

    많은 도움 얻고갑니다:)

  • 꺄악 2020.06.14 12:01

    안녕하세요! 블로그에서 글 보고 궁금했던게 있었어서 댓글 달았는데 답이 없으셔서 보니,, 티스토리로 이전하신걸 이제알았어요 ㅋㅋ!!
    블로그에 썼던 댓글 질문 그대로 쓰자면...

    안녕하세요! 운영체제 공부하다가 블로그 글 잘봤습니다!
    자세한 설명 덕분에 이해가 잘되었어요!!! 근데 궁금한게 있는데
    RAID1은 미러링기법, 2는 ECC, 34는 페리티 디스크를 이용한다고 하셨는데..
    제가 가진 책 질문중에 reliability 구현이 다른 것은? RAID 1 2 3 4 중 고르는건데요!
    1/2/34 이렇게 다른거 같은데.. 답은 하나만 고르는거라서 잘 모르겠어서 질문남깁니다!!

    • IT 양햄찌(jhnyang) 2020.06.14 17:48 신고

      안녕하세요. :)
      세밀히 나누면 말씀하신 1/2/34가 맞습니다. 그런데 1은 단순하게 똑같은걸 그대로 하나 더 두는 방식이고 2,3,4는 손상이 있어도 데이터 체크를 통해 복구시키는 것이기 때문에 하나의 범주로 묶어서 보시면 답은 1번이 됩니다. 사실 ECC에 사용되는 해밍코드를 검색해보시면 패리티 기법이 활용되기 때문에 패리키비트 사용 여부 이렇게 크게 본 것 같네요 ㅎㅎ

    • 꺄악 2020.06.14 21:40

      답변감사합니다!! 보니까 전에도 여기서 관련 정보 찾아서 다른 게시글을 읽었던 기억이 나네요!! 설명 잘해주셔서 이번학기 운영체제공부에 많이 도움되었습니다! 감사해요!

  • 절미짱 2020.06.28 12:08 신고

    운영체제 시험준비하는데 도움 많이얻고가요! 이렇게 쉽게 풀어써주시다니..감사합니다ㅜㅜ
    광고 힘껏 다 누르고 가요ㅋㅋㅋㅋㅋㅋ

  • 2021.06.18 09:58

    이어서 추가될 예정입니다 내용들은 지금 2021년인데 추가 안하나요????ㅠㅠ