1 컴퓨터의 시작/1 3 컴퓨터 내 디스크란/1 3 3 디스크의 확장 RAID
RAID는 보통 사람들에게는 익숙하지 않다. 그럴 수 있는 것은 보통 사람들은 하드디스크를 사용하고 과거 생각해보면 컴퓨터에 하드디스크를 2개 또는 그이상 달아서 사용했다. RAID라는 것은 이러한 하드디스크를 여러개 연결해서 쓰는 방식의 디스크를 말한다. 데이터를 분할해서 복수의 자기 디스크 장치에 대해 병렬로 데이터를 읽는 장치 또는 읽는 방식으로 여러 디스크를 병렬로 연결하여 사용하는 기법으로 접근 속도와 가용성이 증가되며 물리적 디스크 용량의 제약을 벗어나 하나 대용량 디스크처럼 사용 가능하도록 하는 기법이다. 저용량, 저성능, 저가용성인 디스크를 배열 구조로 중복 구성하여 크고 고가인 디스크 장비(SLED : Single Large Expensive Disk)를 대체하는 기술이다. 복수의 드라이브 집합을 하나의 저장장치처럼 다룰 수 있고 장애 발생시 데이터 무결성을 보장하고 디스크 각각이 독립적으로 동작할 수 있도록 구현된 저장장치 기술이다. 여분의 디스크(Redundant Disk)는 디스크 오류 발생시 데이터 복구를 보장하기 위한 패리티(Parity)정보를 저장하는데 사용된다.
왜 여러개를 연결하려고 했을까? 과거 하나의 하드디스크의 용량에 한계가 있는데, 이러한 디스크를 한계보다 많은 대용량이 필요했을 것이다. 물론 진짜로 하드디스크를 여러개 붙혔다고 생각하면 안되고, 그러한 방식으로 연결 되어 있다고 이쯤해서 약어를 얘기하면 기억이 될 것으로 생각된다.
redundant array of inexpensive disks 저렴한 디스크의 연결의 의미이다. 또는 redundant array of independent disks 독립된 디스크들의 어레이이다. 어레이는 프로그램에서 병렬로 선언된 공간을 의미한다. 집합이다.
패리티 비트 (오류를 체크하기 위한 비트)나 미러이미지(복제된 이미지)를 저장한다고 해서 컴퓨터 쪽에서 리던던트는 예비 여분이란말에 쓰인다고 한다. 여기서 왜 싼 값의 디스크 여러개를 묶었는가? 사실 그때 당시도 고용량의 디스크는 있었을 것이다. 하지만 고용량의 디스크과 싼 값의 디스크 여러개 지금도 그렇겠지만, 디스크이든 메모리이든 용량이 높아지면서 가격은 익스포넨셜하게 증가한다. 또 고장에 대비하기 위함도 있었다. 패리티 비트, 미러 이미지라는 것이 디스크를 여러개 두면서도 상호간에 어떤 방식으로 백업을 해두는 의미이다. 물론 동일한 이미지를 한군데 둔다기 보다는 여러 곳에 둠으로써 리스크를 줄이는 것이다. RAID에는 여러가지 방식이 있다. 이 방식에 따라서 구성이 조금씩 달라지게 된다.
RAID의 Level RAID 0 Level –Striping 중복이 없이 데이터를 여러 개의 디스크에 분할하여 저장하는 방식이다. 단순 Disk Striping, 즉 하나의 파일을 여러 블록으로 나누어 여러 디스크에 저장 저비용이나 장애 대처 기능이 없다. 데이터를 Segment 단위로 각각의 디스크에 분산 저장한다. 높은 I/O 성능, 데이터는 병렬로 Write, 디스크는 비동기 동작한다. 중복 저장 및 오류 교정정보를 위한 검사 디스크를 두지 않았다. 패리티가 없어서 일부 디스크 고장 시 복구할 수 없다. 단순 데이터 블록의 손실을 생각하지 않고 I/O성능만 생각한 방법이다. 장애발생에 대비한 여분의 공간을 갖지 않으므로 데이터 복구 기능 부재하다. 여러 가지 응용 프로그램을 동작시키는데 있어서 I/O성능을 높이기 위하여 사용되는 일종의 Mapping 기법이다. 가용 용량이 전체 용량의 100%이다. 대용량 객체의 병렬 입출력이 가능하며 저 비용이고 빠른 성능요구 업무 대용량 구현에 적합하다.
RAID 1 Level – Mirroring and Duplexing 모든 디스크마다 하나의 중복 디스크를 설치하여 동일 데이터를 중복으로 저장하는 방식이다. 데이터를 Physical Disk에 복사하여 저장하므로 높은 데이터의 가용성을 보장하고 동시에 빠른 I/O성능을 보장한다. 디스크 고장 시 자동 전환 가능, 최소한의 Array 구성으로 되어 있다. 장애에 대한 대책 기능이 가장 안정적이다. 하지만 경제성을 고려하지 않은 구조이다. 가격이 고가, 이중 데이터 저장한다. 데이터 읽기에 대한 성능 향상을 시킨 구조이다. 1차 Disk가 Busy일 때 2차 Disk이용할 수 있다. 최소 2개의 드라이브로 구성된다. 가용 용량이 전체 용량의 50%이다. 고비용이지만 데이터의 이중화로 장애 시 안정성을 확보할 수 있다. 높은 신뢰도를 필요로 하는 고장 허용성(Fault Tolerant) 응용에 적합하다. 금융 기관 등 Mission Critical한 업무를 진행하는데 적합하다.
3) RAID 2 Level – Hamming Code ECC(Error Correction) 자료를 비트별로 각 디스크에 순서적으로 저장하는 방식이다. 비트 수준에서 모든 드라이브의 Parity는 오류를 식별하는 해밍코드와 함께 저장한다. 오류 정정을 위해서 해밍 코드를 사용하며 이를 위해 여러 개의 검사 디스크가 존재한다. 데이터의 분할하여 Bit단위의 Interleaving으로 검사 Disk를 사용한다. 다중 전용 패리티 디스크 사용한다. 한 개의 Disk 고장 시 패리티 디스크 사용으로 데이터 복구한다. 오버헤드 낮으나 Random I/O시에 패리티 디스크에 병목 현상이 발생할 수 있다. 모든 디스크들이 Lock-Step으로 동작한다. 자료 분실을 막기 위해서 Hamming오류정정 코드를 사용한다. 4개의 저장 디스크를 위해 3개의 오류 정정디스크 사용한다. Hamming Code를 이용한 오류 검출과 정정을 위한 것으로 검사에 많은 Overhead와 SCSI 드라이브의 경우 에러 검출 능력이 있으므로 사용되지 않고 개념만 있다. 대용량 객체의 병렬 입출력하며 오류 교정이 가능하므로 높은 신뢰도를 필요로 하는 응용분야에 사용된다. 상업적으로 구현이 안되어 있다.
RAID 3 Level – Single Check Disk Per Group RAID, Parallel transfer with parity 한 개의 그룹당 중복디스크를 하나만 할당하는 방식이다. 여러 개의 디스크에 데이터에 관련된 정보를 저장하고 독립적으로 단일 Parity 디스크를 사용하는 방식이다. 데이터 디스크에 Segment 단위로 저장하며 별도의 디스크에 Parity 데이터를 저장한다. 데이터에 대한 모든 요청을 동기화된 디스크에서 병렬로 Read/Write한다. 각각의 Disk에 데이터를 Bit단위로 Stripping하여 기록하며 안정성 확보를 위해 별도의 Disk에 Parity Disk를 저장한다. Management S/W가 Disk Array를 통합적으로 관리한다. 최소 3개의 드라이브가 필요하다. 대용량데이터 처리에 적합하다.
세그먼트 단위로 I/O발생하며 Bit/Byte Interleaving을 하며 특정 검사 디스크 지정한다. 모든 디스크들이 Lock- Step으로 동작한다. 그룹당 한 개의 패리티 디스크 할당한다. 모든 드라이브에 걸쳐 있는 데이터 Stripping과 한 드라이브 상에 유지되는 Parity데이터 생성한다.
RAID 4 Level - Independent Data disks with shared Parity disk / Independent Disk Array RAID 3 Level과 비슷한 방식으로 별도의 디스크에 Block 단위로 저장한다. RAID 3 Level과 데이터 MAPPING 과 보호 방식이 비슷하다. 차이점은 RAID 3 Level은 Management S/W 가 disk array 를 통합적으로 관리하고 RAID 4 Level은 각각의 디스크 그룹들을 독립적으로 관리하는 차이가 있다. 한 디스크로 Read/Write시 그룹의 모든 디스크로 Read/Write가 필요하다.
독립적인 입출력을 가지며 블록단위로 I/O가 발생된다. 단일 검사 디스크가 존재한다. 그룹당 한 개의 별도 패리티 디스크 할당한다. 대용량 객체의 병렬 입출력이 가능하며 소량 데이터를 사용하는 정보 검색응용에 가능하다. 단일 오류 교정 기능이 가능하며 NAS에 적용되고 있다.
RAID 5 Level - Rotating Independent Disk Array / Independent Data disks with distributed parity blocks RAID 4의 Parity의 병목현상을 해결하기 위한 방식으로 데이터와 Parity를 함께 Striping하여 각 디스크에 저장하는 방식이다. 하나의 Parity Chunk 를 여러 개의 데이타 Chunk 와 같은 Level 에 저장하여 데이터를 보호한다. 패리티 디스크가 별도로 있지 않고, 패리티 데이터를 데이터 디스크에 다른 데이터들과 함께 저장한다는 특징이다. 최소 3개 이상의 디스크 필요이다. 가용 용량이 전체 용량의 약 75%이다. Parity 구성에 따라 가변적이다. 분산 검사 디스크를 사용하며 패리티 정보를 위한 블록을 분산하여 저장한다. 패리티는 모든 드라이브에 기록, 패리티 계산시 XOR알고리즘 사용하고 단일 실패지점 존재하지 않는다. 대용량 객체의 병렬 입출력 가능하며 높은 처리속도를 보장하며 I/O가 빈번한 곳에 적합하다. 소량 데이터를 사용하는 온라인 트랜잭션에 적합하다. OLPT성 업무, 일반 기업 업무에 사용된다.
RAID 0+1 Level RAID 0의 장점인 빠른 처리속도와 RAID 1의 Mirroring을 이용한 구성방식이다. RAID DP(Dual Parity) DP는 이중 패리티(Dual Parity)의 약자인데, RAID-DP라는 것은 넷앱이 독자적 기술로 개발해 새로 발표한 기술이다. RAID-DP는 기본적으로 RAID-4가 가지는 모든 장점을 그대로 가져간다. RAID-DP가 RAID-4를 기반으로 만들어졌기 때문이다. 이중 패리티라는 말 자체가 알려주듯이 패리티를 이중으로 가져간다는 것이다. 좀 더 정확히 말하면 패리티 디스크가 하나의 RAID 그룹에 두 개가 들어간다. 그렇다면 두 개의 디스크에 장애가 발생해도 데이터는 멀쩡히 살아 있을 수 있다. 한 개의 디스크에 장애가 생기면 RAID-4나 RAID-5에는 보통 여유분의 디스크인 스페어 디스크(Spare Disk)가 있기 때문에 자동으로 이 스페어 디스크에 기존의 데이터 정보를 기초로 한 패리티 연산을 통해 그대로 원래의 데이터를 100% 살려 낼 수 있다. 문제는 이 데이터를 살려내는 시간 동안 또 다른 디스크가 장애가 나는 최악의 사태가 흔하지는 않지만 발생은 한다는 것이다. 더군다나 요즘처럼 해가 갈수록 단위 디스크 모듈의 크기가 날로 증가하는 추세에 있어서 이러한 데이터 재생 시간도 비례해서 증가하게 된다. 단순한 확률적인 계산으로 따지면 RAID-DP는 RAID-5에 비해 70만 배정도 안정성이 향상된다. 물론 어디까지나 확률적인 문제이다. 그럼 여기서 한가지 의문이 생긴다. 일반적으로 대용량의 볼륨은 몇 개의 RAID그룹으로 나뉘게 된다. RAID 4의 예를 들면, 파이버채널 기반의 스토리지를 기준으로 데이터디스크 7개에 패리티디스크 1개의 8개 디스크를 하나의 RAID그룹으로 묶는 것이 일반적이다. 여기에 RAID-DP를 적용하면 데이터디스크 6개에 패리티디스크 2개가 돼 결국 디스크 한 개의 용량만큼 가용량이 줄어들게 된다. 하지만 실제적으로는 그렇지 않다. RAID-DP를 적용할 때에는 데이터디스크 12개에 패리티디스크 2개를 하나의 RAID그룹으로 묶는 것이 권장 사항이다. 그렇다면 결국 가용할 수 있는 데이터 공간은 동일하고 안정성은 훨씬 향상되는 두 마리 토끼를 동시에 잡을 수 있게 된다.
개발자, 기술사, 삼성, 외국계 IT기업 20년차 기술노트 알렉이 직접 작성한 IT기업 기술 면접을 위한 CS + 면접 노하우 PDF <https://kmong.com/self-marketing/539751/LUA54VnQsP> 자주 나오는 CS 질문과 답변 그리고 100번 이상 면접관으로 참여하면서 느꼈던 면접자가 알아야 할 팁 13가지 포함
백엔드 개발자를 위한 클라우드 강의, AWS <https://inf.run/o1NX>
이제는 비전공자도, 일반이도 개발할 수 있다. ChatGPT를 이용한 누구나 앱개발 with 알렉 <https://inf.run/rpX4>
백엔드 직접 번역한 도서 <https://www.yes24.com/Product/Goods/122536127>
IT기술의 거의 모든 것을 다루는 기술노트with알렉 유투브 <https://www.youtube.com/c/%EA%B8%B0%EC%88%A0%EB%85%B8%ED%8A%B8with%EC%95%8C%EB%A0%89>