"레이드 (서버)"의 두 판 사이의 차이
leejia1222 (토론 | 기여) (→구성기술) |
|||
(사용자 3명의 중간 판 4개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | [[파일:레이드 이미지.jpg|썸네일| | + | [[파일:레이드 이미지.jpg|썸네일|300 픽셀|'''하드웨어 레이드'''(Hardware Raid)]] |
− | '''레이드'''(RAID)란 가격이 저렴한 소용량의 [[디스크]] 여러 대를 배열로 묶어서 대용량 저장장치처럼 사용하는 기술이다. 레이드 | + | |
+ | '''레이드'''(RAID)란 가격이 저렴한 소용량의 [[디스크]] 여러 대를 배열로 묶어서 대용량 저장장치처럼 사용하는 기술이다. RAID(레이드)는 Redundant Array of Independent Disks 또는 Redundant Array of Inexpensive Disks의 약자로서, 흔히 디스크 어레이(disk array)라고도 부른다 | ||
==개요== | ==개요== | ||
− | 레이드는 하드디스크 | + | 레이드는 [[하드디스크 드라이브]]의 [[데이터]] 저장을 더욱 효율적으로 하기 위해 나온 기술이다. 하드디스크는 원판 모양의 플래터가 빠른 동작으로 회전하고 그 위를 헤드가 기록하는 원리로 데이터가 저장된다. 흔히 집에서 쓰는 가정용 컴퓨터의 경우에는 하드디스크 드라이브에 저장하는 데이터의 양이 많지 않을뿐더러 하루에 여러가지 일을 수행하지 않는다. 하지만 큰 회사나 공장, [[데이터센터]]를 가지고 있는 경우에는 달라진다. 하루에도 수많은 데이터를 [[입출력]](I/O)하고 저장하는 데이터의 양은 갈수록 쌓이기 마련이다. 해서 하드디스크의 수명이 금세 줄어들고 내구성이 쉽게 약해져 데이터의 손실이 발생하기도 한다. 이렇게 하드디스크의 데이터 손실을 막고 더 좋은 사용 효과를 얻기 위해 하드디스크를 중복해서 사용하는 레이드라는 기술이 나타나게 되었다. 당연히 초창기에는 조금 오래되었거나 그렇다고 버리기에는 애매한 디스크를 모아서 사용했다. 현재는 여러 가지 방식의 레이드 기법이 나왔고, 흔히 방식은 레이드 0 방식을 사용한다. 레이드는 저장 방법에 따라 여러 가지 버전으로 나뉘게 된다. 레이드는 저장장치이긴 하지만 그렇다고 [[백업]]용 장치는 아니다. 데이터를 [[미러링]]하여 저장하는 방식이 있어 오해 할 수 있지만, [[랜섬웨어]]나 [[악성코드]]의 공격을 받으면 디스크는 당연히 감염이 된다. 그리고 디스크의 특성상 백업처럼 데이터를 오래 보관하기도 어렵고 I/O를 많이 하다 보면 플래터가 많이 긁혀서 데이터를 올바른 값으로 읽기에 무리가 생기는 경우가 있다. 레이드는 여러 개의 디스크를 배열하여 사용하기 때문에 속도 및 안정성이 증가하고 하드 디스크를 최대한 효율적으로 사용 할 수 있으며 가용성 측면에서도 우수하다.<ref> RAID 나무위키 -https://namu.wiki/w/RAID</ref> |
+ | |||
+ | 레이드를 사용하기 위해서는 서로 같은 종류의 하드디스크가 필요하다. 다른 회사의 제품과도 연결이 가능하지만, 내부 구조와 설정이 달라 조금은 불안하기 때문에 되도록 같은 제품을 사용해야 한다. 그리고 성능도 같아야 하는데 그 이유는 디스크의 성능이 떨어지면 레이드를 구현할 때 디스크의 스펙이 하향 평준화 되기 때문이다. 레이드를 구성하기에는 단순 하드디스크만 있다고 해서 구성이 되진 않는다. 레이드 [[컨트롤러]](controller)가 필요하다. 근래에 나온 대부분의 메인보드는 보드에 온 보드 레이드 칩셋이 내장되어 있다. 예를 들면 [[인텔]] [[CPU]]를 사용하는 보드는 인텔 계열의 레이드 칩셋이 들어있는데, 사용하는 컴퓨터 메인보드가 내장 레이드 칩셋이 있는지 없는지 확인하려면 메인보드 설명서를 읽어보거나 제조사에 전화해서 확인하면 된다. 인텔 계열 보드의 경우는 ICHxR 이라 불리는 내장 레이드 칩셋이 있는 경우가 대부분이다. 내장 레이드 칩셋이 없는 경우에는 외장 레이드 컨트롤러가 필요한데, 외장 레이드 컨트롤러는 컴퓨터의 메인보드 PCI 혹은 PCI-E 슬롯에 끼우는 카드이다. 대부분 싼가격으로 형성되어있다. 마지막으로 하드디스크를 연결하는 SATA 포트가 레이드를 지원하는 포트인지 확인해야 한다. 대부분 메인보드에 달려있는 SATA 포트는 전부 레이드를 지원하고 있기에 연결이 가능하고 지원하지 않을경우에는 포트를 바꾸어야 한다.<ref name="홈피"> 아래스, 〈[https://ares1.tistory.com/entry/%EB%A0%88%EC%9D%B4%EB%93%9CRAID-%EA%B5%AC%EC%84%B1%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95 레이드(RAID) 구성하는 방법]〉, 《티스토리》, 2010-05-27</ref> | ||
+ | |||
+ | ==특징== | ||
+ | ===레벨=== | ||
+ | ====하드웨어 레이드==== | ||
+ | * '''레이드 0''' | ||
+ | [[파일:레이드0.png|썸네일|200 픽셀|레이드 0]] | ||
+ | [[파일:레이드1.png|썸네일|200 픽셀|레이드 1]] | ||
+ | |||
+ | : 레이드 0은 줄무니(Striping)방법을 사용한다. 레이드 0은 두 개 이상의 하드디스크를 이용해서 데이터를 각각의 하드디스크에 분산 시켜 저장하는 것이다. 예를 들면 하드디스크를 2개 사용한다고 가정한다면, 두 개의 하드디스크를 레이드 0으로 묶는다면 앞으로 데이터들은 각각의 하드디스크에 분산저장이 된다. 레이드 0의 장점은 개별적으로 하드디스크를 사용할 때보다 전반적인 성능이 2배가량 좋아진다. 이는 컴퓨터의 부팅속도, 폴더를 여는 속도, 프로그램을 실행하고 종료하는 속도, 등등 대부분의 컴퓨터 작업에서 빠른 속도를 느낄 수 있다. 만약 3개를 묶으면 대략 3배 정도 향상될 것이다. 반면 레이드 0은 작은 데이터도 분산 시켜 저장하기 때문에 한쪽 하드디스크가 갑자기 망가지면 모든 자료가 복구가 불가능하게 된다. 하드디스크가 망가지지 않아도 사용자의 실수나 하드웨어적 오류로 인해 레이드 0이 수정되면 자료가 전부 날아가 버려 복구를 할 수 없는 경우도 발생한다. 컴퓨터를 사용하는데 가장 큰 영향을 주는 것은 하드디스크이다. CPU의 성능은 많이 발전했지만, 데이터를 입출력하는 하드디스크의 발전을 더딘 편이라 아무리 좋은 CPU를 써도 성능이 낮은 하드디스크를 쓴다면 속도를 보장할 수 없게 된다. | ||
+ | |||
+ | : 레이드 0은 속도가 제일 빠르기 때문에 정말 빠른 속도의 PC를 원한다면 레이드 0을 사용해야 한다.<ref name="홈피"></ref> 실제로 데이터가 컴퓨터 내부에 전송되는 속도보다 하드디스크에 저장되는 속도가 느리기 때문에 이를 상쇄하기 위해 병렬연결을 고려하는 것이다. 또한, 하드디스크는 원형의 판이 고속으로 회전하고 있고 그 표면의 전기 신호를 읽거나 쓰는 처리를 하는 원리로 이루어져 있는데, 이런 처리 속도보다 회전 속도가 더 빠르기 때문에 실제 하드디스크는 데이터가 인접하게 저장되지 않는다. 하나의 원을 원 중심을 기준으로 8등분하여 각 등분마다 1부터 8까지 번호를 주었을 때, 실제 데이터는 A1, A2, A3, A4...A8과 같이 순차적으로 저장되지 않고 A1, A3, A2, A4... A8 과 같이 일정한 간격을 두고 저장하게 된다. 그러므로 당연히 건너뛰는 거리만큼 처리 시간이 지연되는 것이다. 이것을 만회하기 위해 처리 지연이 일어나는 동안 다른 하드디스크에 저장을 시킬 수 있게 고안된 것이 레이드 0 기술이다.<ref> 세아향, 〈[https://thebetterday.tistory.com/m/entry/COMPUTER-%EB%A0%88%EC%9D%B4%EB%93%9CRAID-10-%EA%B5%AC%EC%84%B1 COMPUTER 레이드(RAID) 10 구성]〉, 《티스토리》, 2008-08-16</ref> | ||
+ | |||
+ | * '''레이드 1''' | ||
+ | : 레이드 1은 미러링(Mirroring) 방법을 사용한다. 말그 대로 데이터를 복사하여 저장하는 방식이다. 레이드1을 구성하기 위해서는 최소 2개의 디스크를 사용해야한다. 레이드 컨트롤러에 따라서 2개의 디스크로만 구성 능할 수도, 그 이상의 개수를 사용하여 구성할 수도 있다. 레이드1은 모든 디스크에 데이터를 복제하여 기록한다. 즉, 동일한 데이터를 N개로 복제하여 각 디스크에 저장하기 때문에 여러 개의 디스크로 레이드를 구성해도, 실제 사용 가능한 용량은 단일 디스크의 용량과 동일하다. ‘1기가 + 1기가 = 1기가’가 되기 때문이다. 디스크에 데이터를 저장할 때 데이터를 복제하여 기록하기 때문에, 레이드 컨트롤러가 복제, 연산하는 시간을 고려하면 단일 디스크의 성능보다 낮게 나올 수도 있다. 하지만 데이터를 읽을때 는 전체 디스크에서 읽어오기 때문에 단일 디스크의 N배의 성능이 나오게 된다. 그리고 레이드1의 최대 강점은 안정성이 매우 높다는 것이다. 디스크가 고장이나 데이터가 손실되어도 미러링 방식을 사용하기 때문에 데이터의 복구 및 사용이 가능하다. 레이드1은 안정성이 중요한 시스템에서 사용 할 수 있겠으나, 비용 문제로 인해 현재에는 거의 사용하지 않는다.<ref> 해리팍, 〈[https://harryp.tistory.com/806 (스토리지) RAID 정리 1. RAID 기본 설명 및 RAID Level (레이드 레벨)]〉, 《티스토리》, 2018-08-31</ref> | ||
+ | |||
+ | * '''레이드 2''' | ||
+ | : 레이드 0과 같은 방식을 사용한다. 하드 디스크에는 오류검출 코드가 따로 없기에 레이드 2는 오류 검출과 수정이 가능한 해밍코드를 부여한다. 하드디스크는 본래 에러 코드를 지원하지 않기에 ECC(Error Correction Code)를 별도의 드라이브에 저장한다. 디스크 1개의 오류시 에는 복구가 가능하며 디스크 2개의 오류 시에는 복구가 불가하다. 만약 ECC가 손실되었면 에러검사를 하지 못하게 되는 경우가 발생한다. 현재에 나오는 하드디스크에 기본적으로 에러 코드가 있기 때문에 레이드 2 방식은 현재 사용하지 않는다. | ||
+ | |||
+ | * '''레이드 3''' | ||
+ | : 레이드 3은 레이드 1과 같이 스트라이핑 기술을 사용하여 디스크들을 구성하고, 별도의 디스크에 패리티 비트(오류검사 비트) 정보를 저장한다. 바이트(Byte)단위로 여러 개를 쪼개어 움직이고 패러티 디스크가 있기 때문에 용량은 디스크의 사용개수에서 1개를 제외해야 한다. 입출력 작업이 동시에 모든 디스크에 대해 이루어지므로, 입출력을 겹치게 할 수 없고, 최소 3개의 디스크가 필요하며 디스크 1개까지만 오류를 복구할 수 있다. 일반적으로 많이 사용하지 않고 대형 레코드가 많은 시스템에 이용된다. 레이드 0과 거의 동일한데 패리티 디스크가 하나 더 물린 형태로 생각하면 된다. 읽는 속도는 동일하지만 쓰기는 패리티를 같이 처리하므로 속도가 좀 더 느리다.<ref> 아이들링,〈[https://raisonde.tistory.com/entry/RAID0%EB%B6%80%ED%84%B0-RAID7%EA%B9%8C%EC%A7%80-%EB%AA%A8%EB%93%A0-RAID%EA%B5%AC%EC%84%B1%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 RAID0부터 RAID7까지. 모든 RAID구성을 알아보자]]〉, 《티스토리》, 2018-01-23</ref> | ||
+ | |||
+ | * '''레이드 4''' | ||
+ | : 레이드 4는 레이드 3과 동일하게 스트라이핑 기술을 사용하여 데이터를 블록 단위로 저장한다. 레이드 4도 에러 검출 코드가 없기 때문에 패리티 비트 사용을 위한 별도의 디스크를 필요로 한다. 따라서 패리티 코드의 값을 기록하고 연산해야 되어 병목현상이 발생한다. 레이드 3과 마찬가지로 오늘날 대부분 사용하지 않는다. | ||
+ | |||
+ | * '''레이드 5''' | ||
+ | [[파일:레이드5.png|썸네일|300픽셀|레이드 5]] | ||
+ | |||
+ | : 레이드 5는 레이드 3, 4에서 별도의 패리티 정보 디스크를 사용함으로써 발생하는 문제점을 보완하는 방식으로 스트라이핑으로 구성된 디스크 내에서 처리하게 만들었다. 특정 디스크에 저장된 데이터가 손상되거나 유실되면, 그다음 디스크에 저장된 패리티 정보를 토대로 손상, 유실 데이터를 복구할 수 있다. 흔히 가정용 컴퓨터보단 대용량 서버가 있는 데이테 센터에서 많이 사용한다. 데이터는 블록 단위로 쪼개져서 디스크에 저장되지만, 이때 패리티 정보 데이터가 함께 저장된다. 여기서 바로 옆 디스크의 정보를 기록하기 위해, 각 디스크에 번갈아 한 번씩 저장되게 된다. 특정 디스크에 문제가 발생하면 그 옆의 디스크에 저장된 패리티에서 정보를 참조해 데이터를 복구하는 것이다. 그래서 레이드 5를 패리티가 있는 스트라이프 세트라고도 한다. 레이드 5 역시 스트라이프 세트이다 보니 입출력 성능이 향상된다. 단 레이드 0 만큼은 아닌데 그 이유는 바로 패리티 연산 때문이다. 데이터 입출력이 엄청난 환경에서 레이드 5 구성을 사용하려면, 사양이 제법 높은 고가의 레이드 컨트롤러를 사용해야 한다. 그 비용은 카드 한 장에 50~100만 원 정도이다. 그런데도 가장 확실하고 안전하게 데이터를 보존할 수 있는 레이드 레벨로 인식되어, 데이터베이스 스토리지 구성에 일반적으로 적용되고 있다. 레이드 5 구성을 위해서는 디스크가 최소 3개 이상 필요하다. 아울러 디스크의 용량도 전체 용량의 70%밖에 사용하지 못한다. 나머지 30%는 패리티 정보를 저장해야 하기 때문이다. 디스크 1개에 문제가 발생하면 복구가 가능하고, 두 개 이상이면 인접 디스크에서 패리티 정보를 읽어와야 하는데 읽을 수 없게 되어 복구가 불가하다. | ||
+ | |||
+ | : 사실 이 때문에 레이드 5 구성 시에는 두 개 디스크 동시 장애를 대비해 여분의 디스크를 하나 더 연결해 두기도 한다. 이걸 레이드 5S(스페어-spare)라고 하는데, 레이드 5를 지원하는 레이드 컨트롤러 설정 화면을 보면 흔히 'S'로 표기된다. 예를 들어, 디스크 3개를 레이드 5로 묶으면서 나머지 하나를 '스페어'로 구성하면 스페어 디스크는 데이터 저장에 사용될 수 없고, 2개 디스크 장애 시 스페어 디스크가 자동 투입되어 시스템 다운을 방지하게 된다. 물론 이런 경우에는 즉시 장애 디스크를 교체해야 한다. 문제, 장애가 발생한 디스크를 새 동일 제품으로 교체해 레이드 컨트롤러에 연결하면, 자동으로 원래의 레이드 레벨 설정으로 재구성한다. 레이드 1이라면 디스크 내용을 그대로 복사해 전송할 것이고, 레이드 5라면 인접 디스크의 패리티 정보를 가지고 데이터를 복원, 저장하는 작업이 백그라운드로 진행된다. 레이드 5는 안전성과 속도 모두 추가한, 가장 무난하여 가장 많이 사용되는 방식이다. 최소한 3개 이상의 하드가 있어야 구현할 수 있다. 패리티를 사용하지만 레이드 2, 3, 4와 다르게 여러 하드에 분산 저장하여 병목 현상을 해결한다.<ref> 이문규 기자, 〈[https://www.donga.com/news/article/all/20100702/29574188/5 하드디스크도 합체한다 - 레이드(RAID) 디스크 구성의 이해]〉, 《동아일보》, 2010-07-02</ref> | ||
+ | |||
+ | * '''레이드 6''' | ||
+ | : 레이드 5와 같은 개념이지만 디스크에 추가적인 2차 패리티 정보를 넣어 2개의 하드에 문제가 생겨도 복구할 수 있게 설계되었다. 레이드 5보다 매우 높은 안정성을 가지고 있으며 2개의 디스크 오류에도 복구할 수있다. 최소 4개의 디스크로 구성이 되며 데이터 공간이나 속도는 조금 떨어지지만 그만큼 데이터를 보호한다. 레이드 5 보다 더 높은 서버나 시스템에서 주로 사용한다. | ||
− | == | + | ====소프트웨어 레이드==== |
− | [[ | + | 소프트웨어 레이드는 레이드에 운영체제가 포함되어 있는 것을 의미한다. 따라서 사용자는 구성하는 단일 디스크에 대한 분석(볼륨)이 가능하다. 소프트웨어 레이드가 동작하기 위해서는 중앙처리장치([[CPU]])의 자원을 사용하기 때문에 하드웨어 레이드보다 성능에 제약이 있다. 소프트웨어 레이드의 경우 레이드 기능 처리는 모두 CPU가 담당한다. 따라서 패리티 계산과 같은 많은 처리를 필요로 하는 레이드 구성은 적절치 않다. 레이드 구성의 신뢰성과 성능 향상이 호스트에게는 성능 하락으로 나타나면 안 되기 때문이다. 그래서 대부분의 소프트웨어 레이드는 레이드 기능 처리에 부담이 되지 않는 레이드 0, 레이드 1 방식만 지원한다. 최근에는 레이드 5도 지원하기는 하지만 호스트 성능이 매우 좋지 않은 이상 사용하기에는 무리가 있다. 그리고 기존의 운영체제를 변경하게 되면 기존 레이드 볼륨의 유지가 거의 불가능하다. 소프트웨어 레이드의 경우에도 순수 소프트웨어로 구현한 방식과 하이브리드(Hybrid) 구현 방식이 있다. |
− | |||
− | * | + | * '''순수 소프트웨어 구현 방식''' : 하드웨어 없이 오로지 소프트웨어로만 구현된 방식이다. 각 드라이브의 I/O 인터페이스나 HBA(Host Bust Adapter)을 사용하여 동작하게 된다. 그리고 레이드 소프트웨어는 부팅 후 운영체제에 로드된다. 별도의 하드웨어 없이 소프트웨어로만 구현되었기 때문에 하드웨어 구현 방식보다 비용이 저렴하다. 소프트웨어가 로드되기 전인 부팅 시 일어나는 데이터의 손실이나 에러 바이러스에 취약하다. 후 기록(write-back)을 위한 캐시가 없고 추가적인 배터리도 추가하기 어렵다. |
− | : | ||
− | * | + | * '''하이브리드 모델'''(Hybrid Model) : 순수한 소프트웨어 방식이 [[데이터]] [[무결성]]에 취약하기 때문에 이를 보완하기 위해 하드웨어의 도움을 받는 방식이다. 엄밀히 말하면 하이브리드이지만 레이드의 기능은 실제 소프트웨어로 동작하기 때문에 소프트웨어 방식으로 보는 것이 적절할 것이다. 하드웨어의 도움을 받는다는 것은 메인보드 등의 별도로 구현된 레이어드 바이어스의 도움을 받는 것이다. 바이어스에 구현되어 있기 때문에 부팅되기 전 바이어스 셋업 유틸리티에 의해 동작이 가능하다. 따라서 부팅 전에 발생하는 시스템의 에러에도 기존 모델보다 효과적인 대처가 가능하다. 그리고 다양한 드라이버를 포함할 수 있기 때문에 기존 모델보다 운영체제와 독립적이다. 이는 부팅 시 일어나는 부트 드라이브의 에러나 부팅 시 일어나는 악의적인 공격으로 부터 보호된다.<ref> 프로니어, 〈[http://forensic-proof.com/archives/549 RAID 포렌식 (Hardware RAID vs. Software RAID, Acquistion)]〉, 《포렌식 프루프》, 2010-07-08</ref> |
− | |||
− | |||
− | *레이드 | + | ====기타==== |
− | : 레이드 | + | * '''레이드 01''' |
− | + | : 레이드 0(스트라이프)와 레이드 1(미러)를 혼용한 방식이다. 스트라이핑한 디스크 두 개를 서로 미러링하므로 속도 향상과 복사본 생성이라는 두 가지 목적을 동시에 어느 정도 구현할 수 있다. 반면 레이드 0과 레이드 2가 동시에 나갈 경우 전체 디스크가 깨진다. 레이드 0 하드디스크가 깨진 경우, 레이드 0 하드 교체 후 재부팅을 하면 전체 데이터를 레이드 1로 복사한다. | |
− | |||
− | |||
− | + | * '''레이드 10''' | |
− | *레이드 | + | : 레이드 1(미러링)과 레이드 0(스트라이핑)을 혼용한 방식이다. 4개의 하드디스크를 사용해 레이드1 방식으로 데이터를 미러링하고, 이를 다시 레이드 0 방식으로 스트라이핑하는 방식이다. 예를 들어, 레이드 10에 있는 4개의 400GB 하드디스크는 운영체제에서 하나의 800GB 하드디스크로 나타난다. 레이드 10은 레이드 0의 속도적인 장점을 살리고, 레이드 1으로 안전성을 보강한다. 한 디스크에서 장애가 발생할 경우, 데이터 무결성에 영향을 주지 않고 모든 데이터를 다른 미러에서 제공할 수 있고 고장 난 드라이브만 교체하면 된다. 레이드 10은 디스크 0과 디스크 2가 동시에 나가더라도 전체 디스크가 깨지지 않는다. 레이드 10의 경우도 디스크 0과 디스크 1이 동시에 나가면 전체 디스크가 깨지지만, 레이드 01에 비해 레이드10이 깨질 확률이 더 낮으므로 상대적으로 레이드 10의 안정성이 더 높다고 할 수 있다. 반면 레이드 10의 경우 레이드 0 하드가 깨진 경우, 레이드 0 하드 교체 후 재부팅을 하면 레이드 1에서 레이드 0으로 복사를 하게 되고 레이드 01과 비교했을 때 입출력 비용이 적기 때문에 시간이 엄청나게 단축된다. 결과적으로 레이드 10의 성능이 더 뛰어나다.<ref> 갓우리코딩 , 〈[https://hellowoori.tistory.com/53 (레이드(RAID) 개념 정리) RAID 0, RAID 1, RAID 01 vs RAID 10]〉, 《티스토리》, 2019-04-11</ref> |
− | : 레이드 | ||
− | + | ===구성기술=== | |
− | : | + | ; 비트 스트라이핑(Bit Striping) |
+ | [[파일:비트스트라이핑.jpg|썸네일|400 픽셀|비트스트라이핑(Bit Striping)]] | ||
− | + | 스트라이핑은 성능 향상을 위해 데이터를 1개 이상의 디스크 드라이브에 저장하여 드라이브를 병렬로 사용할 수 있는 기술이다. 즉, 논리적으로 연속된 데이터들이 물리적으로 여러 개의 디스크 드라이브에 나뉘어 기록될 수 있는 기술이다. 이렇게 함으로써, 하나의 디스크에서 데이터의 입출력하는 것보다 여러 디스크로 빠르게 입출력이 가능하다. 하나의 디스크에서 처리하는 시간 동안 동시에 여러 디스크에서 처리할 수 있기 때문이다. 비트 스트라이핑 기술은 하나의 디스크 블록을 여러 개로 쪼개어서 다른 디스크에 저장하는 방식을 이야기한다. 예를 들어 블록이 4기가이면 4개의 디스크에 저장한다면 1기가씩 나누어 저장한다. 그리고 난 후 해당 디스크에 저장한 데이터를 요청하게 되면 4개의 디스크가 동시에 데이터값을 읽고 출력을 한다. 디스크 4대가 동시에 일하기 때문에 속도가 매우 빨라진다. 보통 데이터는 순서대로 값을 읽고 주게 되는데 스트라이핑 방식을 사용하면 훨씬 더 빠른 속도는 느낄 수 있다.<ref name="출처"> 양햄찌, 〈[https://jhnyang.tistory.com/157 (운영체제 OS) RAID 개념잡기! RAID란? 신뢰성과 성능 두 마리 토끼 잡기, 레이드 기술]〉, 《티스토리》, 2019-10-03</ref> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ; 블록 스트라이핑(Block Striping) | |
− | + | [[파일:블럭스트라이핑.jpg|썸네일|300 픽셀|블록 스트라이핑(Block Striping)]] | |
− | : | + | 디스크에 블록이 0, 1, 2, 3번 여러 개가 있다면 본래는 순차적으로 데이터를 저장한다고 하지만 블록 스트라이핑을 하면 0번 블록은 디스크1에 저장하고 1번 블록은 디스크2에 저장한다. 이 또한 마찬가지로 하나의 디스크에서 값을 읽는 것 보다 여러 개의 디스크를 통해 값을 읽음으로 성능이 좋아진다.<ref name="출처"></ref> |
− | + | ; 미러링(Mirroring) | |
− | + | 미러링은 복제한다는 의미인 거울(mirror)이라는 뜻으로 데이터를 복제할 때 사용되는 단어이다. 흔히 쉐도잉(Shadowing)이라고 하며 에러를 대비하여 백업용으로 데이터를 복제한다. 디스크에 에러가 발생해도 백업용 디스크의 데이터는 그대로 보존되기 때문에 미러링기술을 결함허용이라고도 한다. 레이드1에서 사용되는 기술이다<ref name="출처"></ref> | |
− | + | ; 에러 검출 코드 | |
+ | 에러 검출 코드ECC(Error Correction Code) 라고 한다. 흔히 데이터를 전송하는 데 있어 통로(BUS)가 항상 안전한 것은 아니다. 전기적인 문제, 신호 간섭 그로 인한 노이즈 발생, 전파 방해 등 항상 위험에 노출되어 있는데 이는 라디오나 TV 송수신 시 많이 이야기하지만 컴퓨터 내에서 데이터 패킷을 서로 주고받을 때도 발생한다. 전송 중 데이터가 변질되면 수신 측은 데이터를 검증하지 않은 채 수행하기 때문에 이 데이터가 잘못 전달되면 큰 오류를 범하게 된다. 이런 오류를 막고자 데이터가 올바르게 전달되었는지 확인하기 위해 특별한 코드를 같이 전송하는 방식을 에러 검출 코드(ECC)라고 한다. | ||
− | + | 주 기억 장치인(HDD) 메모리 중에 에러 검출 코드가 붙어 있는 것을 확인하실 수 있다. 이것은 전달받은 데이터 중 에러가 발생한 코드가 있는지 검출하여 정정하는 기능을 가진 제품이라는 뜻이다. 에러를 검출하는 방법에는 여러 가지가 있으며 그중 가장 기본적인 '패리티 검사'와 진보된 'CRC(Cyclic Redundancy Checking)'를 널리 사용한다. 간혹 압축 파일을 풀거나 멀티미디어 파일을 재생하려 할 때 CRC 에러가 났다는 메시지를 보여주는데 바로 전송 받은 파일내에 오류난 코드가 있다는 뜻이다. 이 때는 해당 파일을 다시 구하거나 시스템을 정비해 보아야 한다.<ref> 토모걸4507, 〈[https://m.blog.naver.com/PostView.nhn?blogId=tomogirl4507&logNo=120122888315&proxyReferer=https:%2F%2Fwww.google.com%2F ECC (Error Correction Code)]〉, 《네이버 블로그》, 2011-01-127</ref> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ; 패리티 비트(Parity bit) | |
− | + | 패리티 비트는 정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가된 비트이다. 문자열 내 1비트의 모든 숫자가 짝수 또는 홀수인지를 보증하기 위해 전송하고자 하는 데이터의 각 문자에 1비트를 더하여 전송하는 방법으로 2가지 종류의 패리티 비트(홀수, 짝수)가 있다. 패리티 비트는 오류 검출 부호에서 가장 간단한 형태로 쓰인다. 짝수(even) 패리티는 전체 비트에서 1의 개수가 짝수가 되도록 패리티 비트를 정하는 것인데, 이를테면 데이터 비트에서 1의 개수가 홀수이면 패리티 비트를 1로 정한다. 홀수(odd) 패리티는 전체 비트에서 1의 개수가 홀수가 되도록 패리티 비트를 정하는 방법이다. 7비트의 0010110 이라는 데이터에서 짝수 패리티가 되게 하기 위해서는 1의 패리티 비트를 붙여 10010110 으로 한다. 또 같은 데이터에 대해 홀수 패리티 비트가 되게 하려면 0의 패리티 비트를 붙인다. 이렇게 패리티 비트를 정하여 데이터를 보내면 받는 쪽에서는 수신된 데이터의 전체 비트를 계산하여 패리티 비트를 다시 계산함으로써 데이터 오류 발생 여부를 알 수 있다. 그러나 패리티 비트는 오류 발생 여부만 알 수 있지 오류를 수정할 수는 없다. | |
:{|class=wikitable width=600 | :{|class=wikitable width=600 | ||
!align=center rowspan=2|7 비트 데이터 | !align=center rowspan=2|7 비트 데이터 | ||
85번째 줄: | 103번째 줄: | ||
== 참고자료 == | == 참고자료 == | ||
− | * 세아향, 〈[https://thebetterday.tistory.com/m/entry/COMPUTER-%EB%A0%88%EC%9D%B4%EB%93%9CRAID-10-%EA%B5%AC%EC%84%B1 COMPUTER 레이드(RAID) 10 구성]〉, 《티스토리》, 2008-08-16 | + | * 세아향, 〈[https://thebetterday.tistory.com/m/entry/COMPUTER-%EB%A0%88%EC%9D%B4%EB%93%9CRAID-10-%EA%B5%AC%EC%84%B1 COMPUTER 레이드(RAID) 10 구성]〉, 《티스토리》, 2008-08-16 |
* 아래스, 〈[https://ares1.tistory.com/entry/%EB%A0%88%EC%9D%B4%EB%93%9CRAID-%EA%B5%AC%EC%84%B1%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95 레이드(RAID) 구성하는 방법]〉, 《티스토리》, 2010-05-27 | * 아래스, 〈[https://ares1.tistory.com/entry/%EB%A0%88%EC%9D%B4%EB%93%9CRAID-%EA%B5%AC%EC%84%B1%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95 레이드(RAID) 구성하는 방법]〉, 《티스토리》, 2010-05-27 | ||
− | *이문규 기자, 〈[https://www.donga.com/news/article/all/20100702/29574188/5 하드디스크도 합체한다 - 레이드(RAID) 디스크 구성의 이해]〉, 《동아일보》, 2010-07-02 | + | *이문규 기자, 〈[https://www.donga.com/news/article/all/20100702/29574188/5 하드디스크도 합체한다 - 레이드(RAID) 디스크 구성의 이해]〉, 《동아일보》, 2010-07-02 |
* 프로니어, 〈[http://forensic-proof.com/archives/549 RAID 포렌식 (Hardware RAID vs. Software RAID, Acquistion)]〉, 《포렌식 프루프》, 2010-07-08 | * 프로니어, 〈[http://forensic-proof.com/archives/549 RAID 포렌식 (Hardware RAID vs. Software RAID, Acquistion)]〉, 《포렌식 프루프》, 2010-07-08 | ||
* 토모걸4507, 〈[https://m.blog.naver.com/PostView.nhn?blogId=tomogirl4507&logNo=120122888315&proxyReferer=https:%2F%2Fwww.google.com%2F ECC (Error Correction Code)]〉, 《네이버 블로그》, 2011-01-12 | * 토모걸4507, 〈[https://m.blog.naver.com/PostView.nhn?blogId=tomogirl4507&logNo=120122888315&proxyReferer=https:%2F%2Fwww.google.com%2F ECC (Error Correction Code)]〉, 《네이버 블로그》, 2011-01-12 | ||
* 아이들링,〈[https://raisonde.tistory.com/entry/RAID0%EB%B6%80%ED%84%B0-RAID7%EA%B9%8C%EC%A7%80-%EB%AA%A8%EB%93%A0-RAID%EA%B5%AC%EC%84%B1%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 RAID0부터 RAID7까지. 모든 RAID구성을 알아보자]〉, 《티스토리》, 2018-01-23 | * 아이들링,〈[https://raisonde.tistory.com/entry/RAID0%EB%B6%80%ED%84%B0-RAID7%EA%B9%8C%EC%A7%80-%EB%AA%A8%EB%93%A0-RAID%EA%B5%AC%EC%84%B1%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 RAID0부터 RAID7까지. 모든 RAID구성을 알아보자]〉, 《티스토리》, 2018-01-23 | ||
* 해리팍, 〈[https://harryp.tistory.com/806 (스토리지) RAID 정리 1. RAID 기본 설명 및 RAID Level (레이드 레벨)]〉, 《티스토리》, 2018-08-31 | * 해리팍, 〈[https://harryp.tistory.com/806 (스토리지) RAID 정리 1. RAID 기본 설명 및 RAID Level (레이드 레벨)]〉, 《티스토리》, 2018-08-31 | ||
− | * 갓우리코딩 , 〈[https://hellowoori.tistory.com/53 | + | * 갓우리코딩 , 〈[https://hellowoori.tistory.com/53 (레이드(RAID) 개념 정리) RAID 0, RAID 1, RAID 01 vs RAID 10]〉, 《티스토리》, 2019-04-11 |
* 양햄찌, 〈[https://jhnyang.tistory.com/157 (운영체제 OS) RAID 개념잡기! RAID란? 신뢰성과 성능 두 마리 토끼 잡기, 레이드 기술]〉, 《티스토리》, 2019-10-03 | * 양햄찌, 〈[https://jhnyang.tistory.com/157 (운영체제 OS) RAID 개념잡기! RAID란? 신뢰성과 성능 두 마리 토끼 잡기, 레이드 기술]〉, 《티스토리》, 2019-10-03 | ||
* RAID 나무위키 -https://namu.wiki/w/RAID | * RAID 나무위키 -https://namu.wiki/w/RAID | ||
102번째 줄: | 120번째 줄: | ||
* [[소프트웨어]] | * [[소프트웨어]] | ||
− | {{하드웨어| | + | {{하드웨어|검토 필요}} |
2020년 8월 11일 (화) 16:06 기준 최신판
레이드(RAID)란 가격이 저렴한 소용량의 디스크 여러 대를 배열로 묶어서 대용량 저장장치처럼 사용하는 기술이다. RAID(레이드)는 Redundant Array of Independent Disks 또는 Redundant Array of Inexpensive Disks의 약자로서, 흔히 디스크 어레이(disk array)라고도 부른다
개요[편집]
레이드는 하드디스크 드라이브의 데이터 저장을 더욱 효율적으로 하기 위해 나온 기술이다. 하드디스크는 원판 모양의 플래터가 빠른 동작으로 회전하고 그 위를 헤드가 기록하는 원리로 데이터가 저장된다. 흔히 집에서 쓰는 가정용 컴퓨터의 경우에는 하드디스크 드라이브에 저장하는 데이터의 양이 많지 않을뿐더러 하루에 여러가지 일을 수행하지 않는다. 하지만 큰 회사나 공장, 데이터센터를 가지고 있는 경우에는 달라진다. 하루에도 수많은 데이터를 입출력(I/O)하고 저장하는 데이터의 양은 갈수록 쌓이기 마련이다. 해서 하드디스크의 수명이 금세 줄어들고 내구성이 쉽게 약해져 데이터의 손실이 발생하기도 한다. 이렇게 하드디스크의 데이터 손실을 막고 더 좋은 사용 효과를 얻기 위해 하드디스크를 중복해서 사용하는 레이드라는 기술이 나타나게 되었다. 당연히 초창기에는 조금 오래되었거나 그렇다고 버리기에는 애매한 디스크를 모아서 사용했다. 현재는 여러 가지 방식의 레이드 기법이 나왔고, 흔히 방식은 레이드 0 방식을 사용한다. 레이드는 저장 방법에 따라 여러 가지 버전으로 나뉘게 된다. 레이드는 저장장치이긴 하지만 그렇다고 백업용 장치는 아니다. 데이터를 미러링하여 저장하는 방식이 있어 오해 할 수 있지만, 랜섬웨어나 악성코드의 공격을 받으면 디스크는 당연히 감염이 된다. 그리고 디스크의 특성상 백업처럼 데이터를 오래 보관하기도 어렵고 I/O를 많이 하다 보면 플래터가 많이 긁혀서 데이터를 올바른 값으로 읽기에 무리가 생기는 경우가 있다. 레이드는 여러 개의 디스크를 배열하여 사용하기 때문에 속도 및 안정성이 증가하고 하드 디스크를 최대한 효율적으로 사용 할 수 있으며 가용성 측면에서도 우수하다.[1]
레이드를 사용하기 위해서는 서로 같은 종류의 하드디스크가 필요하다. 다른 회사의 제품과도 연결이 가능하지만, 내부 구조와 설정이 달라 조금은 불안하기 때문에 되도록 같은 제품을 사용해야 한다. 그리고 성능도 같아야 하는데 그 이유는 디스크의 성능이 떨어지면 레이드를 구현할 때 디스크의 스펙이 하향 평준화 되기 때문이다. 레이드를 구성하기에는 단순 하드디스크만 있다고 해서 구성이 되진 않는다. 레이드 컨트롤러(controller)가 필요하다. 근래에 나온 대부분의 메인보드는 보드에 온 보드 레이드 칩셋이 내장되어 있다. 예를 들면 인텔 CPU를 사용하는 보드는 인텔 계열의 레이드 칩셋이 들어있는데, 사용하는 컴퓨터 메인보드가 내장 레이드 칩셋이 있는지 없는지 확인하려면 메인보드 설명서를 읽어보거나 제조사에 전화해서 확인하면 된다. 인텔 계열 보드의 경우는 ICHxR 이라 불리는 내장 레이드 칩셋이 있는 경우가 대부분이다. 내장 레이드 칩셋이 없는 경우에는 외장 레이드 컨트롤러가 필요한데, 외장 레이드 컨트롤러는 컴퓨터의 메인보드 PCI 혹은 PCI-E 슬롯에 끼우는 카드이다. 대부분 싼가격으로 형성되어있다. 마지막으로 하드디스크를 연결하는 SATA 포트가 레이드를 지원하는 포트인지 확인해야 한다. 대부분 메인보드에 달려있는 SATA 포트는 전부 레이드를 지원하고 있기에 연결이 가능하고 지원하지 않을경우에는 포트를 바꾸어야 한다.[2]
특징[편집]
레벨[편집]
하드웨어 레이드[편집]
- 레이드 0
- 레이드 0은 줄무니(Striping)방법을 사용한다. 레이드 0은 두 개 이상의 하드디스크를 이용해서 데이터를 각각의 하드디스크에 분산 시켜 저장하는 것이다. 예를 들면 하드디스크를 2개 사용한다고 가정한다면, 두 개의 하드디스크를 레이드 0으로 묶는다면 앞으로 데이터들은 각각의 하드디스크에 분산저장이 된다. 레이드 0의 장점은 개별적으로 하드디스크를 사용할 때보다 전반적인 성능이 2배가량 좋아진다. 이는 컴퓨터의 부팅속도, 폴더를 여는 속도, 프로그램을 실행하고 종료하는 속도, 등등 대부분의 컴퓨터 작업에서 빠른 속도를 느낄 수 있다. 만약 3개를 묶으면 대략 3배 정도 향상될 것이다. 반면 레이드 0은 작은 데이터도 분산 시켜 저장하기 때문에 한쪽 하드디스크가 갑자기 망가지면 모든 자료가 복구가 불가능하게 된다. 하드디스크가 망가지지 않아도 사용자의 실수나 하드웨어적 오류로 인해 레이드 0이 수정되면 자료가 전부 날아가 버려 복구를 할 수 없는 경우도 발생한다. 컴퓨터를 사용하는데 가장 큰 영향을 주는 것은 하드디스크이다. CPU의 성능은 많이 발전했지만, 데이터를 입출력하는 하드디스크의 발전을 더딘 편이라 아무리 좋은 CPU를 써도 성능이 낮은 하드디스크를 쓴다면 속도를 보장할 수 없게 된다.
- 레이드 0은 속도가 제일 빠르기 때문에 정말 빠른 속도의 PC를 원한다면 레이드 0을 사용해야 한다.[2] 실제로 데이터가 컴퓨터 내부에 전송되는 속도보다 하드디스크에 저장되는 속도가 느리기 때문에 이를 상쇄하기 위해 병렬연결을 고려하는 것이다. 또한, 하드디스크는 원형의 판이 고속으로 회전하고 있고 그 표면의 전기 신호를 읽거나 쓰는 처리를 하는 원리로 이루어져 있는데, 이런 처리 속도보다 회전 속도가 더 빠르기 때문에 실제 하드디스크는 데이터가 인접하게 저장되지 않는다. 하나의 원을 원 중심을 기준으로 8등분하여 각 등분마다 1부터 8까지 번호를 주었을 때, 실제 데이터는 A1, A2, A3, A4...A8과 같이 순차적으로 저장되지 않고 A1, A3, A2, A4... A8 과 같이 일정한 간격을 두고 저장하게 된다. 그러므로 당연히 건너뛰는 거리만큼 처리 시간이 지연되는 것이다. 이것을 만회하기 위해 처리 지연이 일어나는 동안 다른 하드디스크에 저장을 시킬 수 있게 고안된 것이 레이드 0 기술이다.[3]
- 레이드 1
- 레이드 1은 미러링(Mirroring) 방법을 사용한다. 말그 대로 데이터를 복사하여 저장하는 방식이다. 레이드1을 구성하기 위해서는 최소 2개의 디스크를 사용해야한다. 레이드 컨트롤러에 따라서 2개의 디스크로만 구성 능할 수도, 그 이상의 개수를 사용하여 구성할 수도 있다. 레이드1은 모든 디스크에 데이터를 복제하여 기록한다. 즉, 동일한 데이터를 N개로 복제하여 각 디스크에 저장하기 때문에 여러 개의 디스크로 레이드를 구성해도, 실제 사용 가능한 용량은 단일 디스크의 용량과 동일하다. ‘1기가 + 1기가 = 1기가’가 되기 때문이다. 디스크에 데이터를 저장할 때 데이터를 복제하여 기록하기 때문에, 레이드 컨트롤러가 복제, 연산하는 시간을 고려하면 단일 디스크의 성능보다 낮게 나올 수도 있다. 하지만 데이터를 읽을때 는 전체 디스크에서 읽어오기 때문에 단일 디스크의 N배의 성능이 나오게 된다. 그리고 레이드1의 최대 강점은 안정성이 매우 높다는 것이다. 디스크가 고장이나 데이터가 손실되어도 미러링 방식을 사용하기 때문에 데이터의 복구 및 사용이 가능하다. 레이드1은 안정성이 중요한 시스템에서 사용 할 수 있겠으나, 비용 문제로 인해 현재에는 거의 사용하지 않는다.[4]
- 레이드 2
- 레이드 0과 같은 방식을 사용한다. 하드 디스크에는 오류검출 코드가 따로 없기에 레이드 2는 오류 검출과 수정이 가능한 해밍코드를 부여한다. 하드디스크는 본래 에러 코드를 지원하지 않기에 ECC(Error Correction Code)를 별도의 드라이브에 저장한다. 디스크 1개의 오류시 에는 복구가 가능하며 디스크 2개의 오류 시에는 복구가 불가하다. 만약 ECC가 손실되었면 에러검사를 하지 못하게 되는 경우가 발생한다. 현재에 나오는 하드디스크에 기본적으로 에러 코드가 있기 때문에 레이드 2 방식은 현재 사용하지 않는다.
- 레이드 3
- 레이드 3은 레이드 1과 같이 스트라이핑 기술을 사용하여 디스크들을 구성하고, 별도의 디스크에 패리티 비트(오류검사 비트) 정보를 저장한다. 바이트(Byte)단위로 여러 개를 쪼개어 움직이고 패러티 디스크가 있기 때문에 용량은 디스크의 사용개수에서 1개를 제외해야 한다. 입출력 작업이 동시에 모든 디스크에 대해 이루어지므로, 입출력을 겹치게 할 수 없고, 최소 3개의 디스크가 필요하며 디스크 1개까지만 오류를 복구할 수 있다. 일반적으로 많이 사용하지 않고 대형 레코드가 많은 시스템에 이용된다. 레이드 0과 거의 동일한데 패리티 디스크가 하나 더 물린 형태로 생각하면 된다. 읽는 속도는 동일하지만 쓰기는 패리티를 같이 처리하므로 속도가 좀 더 느리다.[5]
- 레이드 4
- 레이드 4는 레이드 3과 동일하게 스트라이핑 기술을 사용하여 데이터를 블록 단위로 저장한다. 레이드 4도 에러 검출 코드가 없기 때문에 패리티 비트 사용을 위한 별도의 디스크를 필요로 한다. 따라서 패리티 코드의 값을 기록하고 연산해야 되어 병목현상이 발생한다. 레이드 3과 마찬가지로 오늘날 대부분 사용하지 않는다.
- 레이드 5
- 레이드 5는 레이드 3, 4에서 별도의 패리티 정보 디스크를 사용함으로써 발생하는 문제점을 보완하는 방식으로 스트라이핑으로 구성된 디스크 내에서 처리하게 만들었다. 특정 디스크에 저장된 데이터가 손상되거나 유실되면, 그다음 디스크에 저장된 패리티 정보를 토대로 손상, 유실 데이터를 복구할 수 있다. 흔히 가정용 컴퓨터보단 대용량 서버가 있는 데이테 센터에서 많이 사용한다. 데이터는 블록 단위로 쪼개져서 디스크에 저장되지만, 이때 패리티 정보 데이터가 함께 저장된다. 여기서 바로 옆 디스크의 정보를 기록하기 위해, 각 디스크에 번갈아 한 번씩 저장되게 된다. 특정 디스크에 문제가 발생하면 그 옆의 디스크에 저장된 패리티에서 정보를 참조해 데이터를 복구하는 것이다. 그래서 레이드 5를 패리티가 있는 스트라이프 세트라고도 한다. 레이드 5 역시 스트라이프 세트이다 보니 입출력 성능이 향상된다. 단 레이드 0 만큼은 아닌데 그 이유는 바로 패리티 연산 때문이다. 데이터 입출력이 엄청난 환경에서 레이드 5 구성을 사용하려면, 사양이 제법 높은 고가의 레이드 컨트롤러를 사용해야 한다. 그 비용은 카드 한 장에 50~100만 원 정도이다. 그런데도 가장 확실하고 안전하게 데이터를 보존할 수 있는 레이드 레벨로 인식되어, 데이터베이스 스토리지 구성에 일반적으로 적용되고 있다. 레이드 5 구성을 위해서는 디스크가 최소 3개 이상 필요하다. 아울러 디스크의 용량도 전체 용량의 70%밖에 사용하지 못한다. 나머지 30%는 패리티 정보를 저장해야 하기 때문이다. 디스크 1개에 문제가 발생하면 복구가 가능하고, 두 개 이상이면 인접 디스크에서 패리티 정보를 읽어와야 하는데 읽을 수 없게 되어 복구가 불가하다.
- 사실 이 때문에 레이드 5 구성 시에는 두 개 디스크 동시 장애를 대비해 여분의 디스크를 하나 더 연결해 두기도 한다. 이걸 레이드 5S(스페어-spare)라고 하는데, 레이드 5를 지원하는 레이드 컨트롤러 설정 화면을 보면 흔히 'S'로 표기된다. 예를 들어, 디스크 3개를 레이드 5로 묶으면서 나머지 하나를 '스페어'로 구성하면 스페어 디스크는 데이터 저장에 사용될 수 없고, 2개 디스크 장애 시 스페어 디스크가 자동 투입되어 시스템 다운을 방지하게 된다. 물론 이런 경우에는 즉시 장애 디스크를 교체해야 한다. 문제, 장애가 발생한 디스크를 새 동일 제품으로 교체해 레이드 컨트롤러에 연결하면, 자동으로 원래의 레이드 레벨 설정으로 재구성한다. 레이드 1이라면 디스크 내용을 그대로 복사해 전송할 것이고, 레이드 5라면 인접 디스크의 패리티 정보를 가지고 데이터를 복원, 저장하는 작업이 백그라운드로 진행된다. 레이드 5는 안전성과 속도 모두 추가한, 가장 무난하여 가장 많이 사용되는 방식이다. 최소한 3개 이상의 하드가 있어야 구현할 수 있다. 패리티를 사용하지만 레이드 2, 3, 4와 다르게 여러 하드에 분산 저장하여 병목 현상을 해결한다.[6]
- 레이드 6
- 레이드 5와 같은 개념이지만 디스크에 추가적인 2차 패리티 정보를 넣어 2개의 하드에 문제가 생겨도 복구할 수 있게 설계되었다. 레이드 5보다 매우 높은 안정성을 가지고 있으며 2개의 디스크 오류에도 복구할 수있다. 최소 4개의 디스크로 구성이 되며 데이터 공간이나 속도는 조금 떨어지지만 그만큼 데이터를 보호한다. 레이드 5 보다 더 높은 서버나 시스템에서 주로 사용한다.
소프트웨어 레이드[편집]
소프트웨어 레이드는 레이드에 운영체제가 포함되어 있는 것을 의미한다. 따라서 사용자는 구성하는 단일 디스크에 대한 분석(볼륨)이 가능하다. 소프트웨어 레이드가 동작하기 위해서는 중앙처리장치(CPU)의 자원을 사용하기 때문에 하드웨어 레이드보다 성능에 제약이 있다. 소프트웨어 레이드의 경우 레이드 기능 처리는 모두 CPU가 담당한다. 따라서 패리티 계산과 같은 많은 처리를 필요로 하는 레이드 구성은 적절치 않다. 레이드 구성의 신뢰성과 성능 향상이 호스트에게는 성능 하락으로 나타나면 안 되기 때문이다. 그래서 대부분의 소프트웨어 레이드는 레이드 기능 처리에 부담이 되지 않는 레이드 0, 레이드 1 방식만 지원한다. 최근에는 레이드 5도 지원하기는 하지만 호스트 성능이 매우 좋지 않은 이상 사용하기에는 무리가 있다. 그리고 기존의 운영체제를 변경하게 되면 기존 레이드 볼륨의 유지가 거의 불가능하다. 소프트웨어 레이드의 경우에도 순수 소프트웨어로 구현한 방식과 하이브리드(Hybrid) 구현 방식이 있다.
- 순수 소프트웨어 구현 방식 : 하드웨어 없이 오로지 소프트웨어로만 구현된 방식이다. 각 드라이브의 I/O 인터페이스나 HBA(Host Bust Adapter)을 사용하여 동작하게 된다. 그리고 레이드 소프트웨어는 부팅 후 운영체제에 로드된다. 별도의 하드웨어 없이 소프트웨어로만 구현되었기 때문에 하드웨어 구현 방식보다 비용이 저렴하다. 소프트웨어가 로드되기 전인 부팅 시 일어나는 데이터의 손실이나 에러 바이러스에 취약하다. 후 기록(write-back)을 위한 캐시가 없고 추가적인 배터리도 추가하기 어렵다.
- 하이브리드 모델(Hybrid Model) : 순수한 소프트웨어 방식이 데이터 무결성에 취약하기 때문에 이를 보완하기 위해 하드웨어의 도움을 받는 방식이다. 엄밀히 말하면 하이브리드이지만 레이드의 기능은 실제 소프트웨어로 동작하기 때문에 소프트웨어 방식으로 보는 것이 적절할 것이다. 하드웨어의 도움을 받는다는 것은 메인보드 등의 별도로 구현된 레이어드 바이어스의 도움을 받는 것이다. 바이어스에 구현되어 있기 때문에 부팅되기 전 바이어스 셋업 유틸리티에 의해 동작이 가능하다. 따라서 부팅 전에 발생하는 시스템의 에러에도 기존 모델보다 효과적인 대처가 가능하다. 그리고 다양한 드라이버를 포함할 수 있기 때문에 기존 모델보다 운영체제와 독립적이다. 이는 부팅 시 일어나는 부트 드라이브의 에러나 부팅 시 일어나는 악의적인 공격으로 부터 보호된다.[7]
기타[편집]
- 레이드 01
- 레이드 0(스트라이프)와 레이드 1(미러)를 혼용한 방식이다. 스트라이핑한 디스크 두 개를 서로 미러링하므로 속도 향상과 복사본 생성이라는 두 가지 목적을 동시에 어느 정도 구현할 수 있다. 반면 레이드 0과 레이드 2가 동시에 나갈 경우 전체 디스크가 깨진다. 레이드 0 하드디스크가 깨진 경우, 레이드 0 하드 교체 후 재부팅을 하면 전체 데이터를 레이드 1로 복사한다.
- 레이드 10
- 레이드 1(미러링)과 레이드 0(스트라이핑)을 혼용한 방식이다. 4개의 하드디스크를 사용해 레이드1 방식으로 데이터를 미러링하고, 이를 다시 레이드 0 방식으로 스트라이핑하는 방식이다. 예를 들어, 레이드 10에 있는 4개의 400GB 하드디스크는 운영체제에서 하나의 800GB 하드디스크로 나타난다. 레이드 10은 레이드 0의 속도적인 장점을 살리고, 레이드 1으로 안전성을 보강한다. 한 디스크에서 장애가 발생할 경우, 데이터 무결성에 영향을 주지 않고 모든 데이터를 다른 미러에서 제공할 수 있고 고장 난 드라이브만 교체하면 된다. 레이드 10은 디스크 0과 디스크 2가 동시에 나가더라도 전체 디스크가 깨지지 않는다. 레이드 10의 경우도 디스크 0과 디스크 1이 동시에 나가면 전체 디스크가 깨지지만, 레이드 01에 비해 레이드10이 깨질 확률이 더 낮으므로 상대적으로 레이드 10의 안정성이 더 높다고 할 수 있다. 반면 레이드 10의 경우 레이드 0 하드가 깨진 경우, 레이드 0 하드 교체 후 재부팅을 하면 레이드 1에서 레이드 0으로 복사를 하게 되고 레이드 01과 비교했을 때 입출력 비용이 적기 때문에 시간이 엄청나게 단축된다. 결과적으로 레이드 10의 성능이 더 뛰어나다.[8]
구성기술[편집]
- 비트 스트라이핑(Bit Striping)
스트라이핑은 성능 향상을 위해 데이터를 1개 이상의 디스크 드라이브에 저장하여 드라이브를 병렬로 사용할 수 있는 기술이다. 즉, 논리적으로 연속된 데이터들이 물리적으로 여러 개의 디스크 드라이브에 나뉘어 기록될 수 있는 기술이다. 이렇게 함으로써, 하나의 디스크에서 데이터의 입출력하는 것보다 여러 디스크로 빠르게 입출력이 가능하다. 하나의 디스크에서 처리하는 시간 동안 동시에 여러 디스크에서 처리할 수 있기 때문이다. 비트 스트라이핑 기술은 하나의 디스크 블록을 여러 개로 쪼개어서 다른 디스크에 저장하는 방식을 이야기한다. 예를 들어 블록이 4기가이면 4개의 디스크에 저장한다면 1기가씩 나누어 저장한다. 그리고 난 후 해당 디스크에 저장한 데이터를 요청하게 되면 4개의 디스크가 동시에 데이터값을 읽고 출력을 한다. 디스크 4대가 동시에 일하기 때문에 속도가 매우 빨라진다. 보통 데이터는 순서대로 값을 읽고 주게 되는데 스트라이핑 방식을 사용하면 훨씬 더 빠른 속도는 느낄 수 있다.[9]
- 블록 스트라이핑(Block Striping)
디스크에 블록이 0, 1, 2, 3번 여러 개가 있다면 본래는 순차적으로 데이터를 저장한다고 하지만 블록 스트라이핑을 하면 0번 블록은 디스크1에 저장하고 1번 블록은 디스크2에 저장한다. 이 또한 마찬가지로 하나의 디스크에서 값을 읽는 것 보다 여러 개의 디스크를 통해 값을 읽음으로 성능이 좋아진다.[9]
- 미러링(Mirroring)
미러링은 복제한다는 의미인 거울(mirror)이라는 뜻으로 데이터를 복제할 때 사용되는 단어이다. 흔히 쉐도잉(Shadowing)이라고 하며 에러를 대비하여 백업용으로 데이터를 복제한다. 디스크에 에러가 발생해도 백업용 디스크의 데이터는 그대로 보존되기 때문에 미러링기술을 결함허용이라고도 한다. 레이드1에서 사용되는 기술이다[9]
- 에러 검출 코드
에러 검출 코드ECC(Error Correction Code) 라고 한다. 흔히 데이터를 전송하는 데 있어 통로(BUS)가 항상 안전한 것은 아니다. 전기적인 문제, 신호 간섭 그로 인한 노이즈 발생, 전파 방해 등 항상 위험에 노출되어 있는데 이는 라디오나 TV 송수신 시 많이 이야기하지만 컴퓨터 내에서 데이터 패킷을 서로 주고받을 때도 발생한다. 전송 중 데이터가 변질되면 수신 측은 데이터를 검증하지 않은 채 수행하기 때문에 이 데이터가 잘못 전달되면 큰 오류를 범하게 된다. 이런 오류를 막고자 데이터가 올바르게 전달되었는지 확인하기 위해 특별한 코드를 같이 전송하는 방식을 에러 검출 코드(ECC)라고 한다.
주 기억 장치인(HDD) 메모리 중에 에러 검출 코드가 붙어 있는 것을 확인하실 수 있다. 이것은 전달받은 데이터 중 에러가 발생한 코드가 있는지 검출하여 정정하는 기능을 가진 제품이라는 뜻이다. 에러를 검출하는 방법에는 여러 가지가 있으며 그중 가장 기본적인 '패리티 검사'와 진보된 'CRC(Cyclic Redundancy Checking)'를 널리 사용한다. 간혹 압축 파일을 풀거나 멀티미디어 파일을 재생하려 할 때 CRC 에러가 났다는 메시지를 보여주는데 바로 전송 받은 파일내에 오류난 코드가 있다는 뜻이다. 이 때는 해당 파일을 다시 구하거나 시스템을 정비해 보아야 한다.[10]
- 패리티 비트(Parity bit)
패리티 비트는 정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가된 비트이다. 문자열 내 1비트의 모든 숫자가 짝수 또는 홀수인지를 보증하기 위해 전송하고자 하는 데이터의 각 문자에 1비트를 더하여 전송하는 방법으로 2가지 종류의 패리티 비트(홀수, 짝수)가 있다. 패리티 비트는 오류 검출 부호에서 가장 간단한 형태로 쓰인다. 짝수(even) 패리티는 전체 비트에서 1의 개수가 짝수가 되도록 패리티 비트를 정하는 것인데, 이를테면 데이터 비트에서 1의 개수가 홀수이면 패리티 비트를 1로 정한다. 홀수(odd) 패리티는 전체 비트에서 1의 개수가 홀수가 되도록 패리티 비트를 정하는 방법이다. 7비트의 0010110 이라는 데이터에서 짝수 패리티가 되게 하기 위해서는 1의 패리티 비트를 붙여 10010110 으로 한다. 또 같은 데이터에 대해 홀수 패리티 비트가 되게 하려면 0의 패리티 비트를 붙인다. 이렇게 패리티 비트를 정하여 데이터를 보내면 받는 쪽에서는 수신된 데이터의 전체 비트를 계산하여 패리티 비트를 다시 계산함으로써 데이터 오류 발생 여부를 알 수 있다. 그러나 패리티 비트는 오류 발생 여부만 알 수 있지 오류를 수정할 수는 없다.
7 비트 데이터 8비트 데이터 홀수 짝수 0000000 00000000 10000000 1010001 (3) 11010001 01010001 1101001 (4) 01101001 11101001 1111111 (7) 11111111 01111111
각주[편집]
- ↑ RAID 나무위키 -https://namu.wiki/w/RAID
- ↑ 2.0 2.1 아래스, 〈레이드(RAID) 구성하는 방법〉, 《티스토리》, 2010-05-27
- ↑ 세아향, 〈COMPUTER 레이드(RAID) 10 구성〉, 《티스토리》, 2008-08-16
- ↑ 해리팍, 〈(스토리지) RAID 정리 1. RAID 기본 설명 및 RAID Level (레이드 레벨)〉, 《티스토리》, 2018-08-31
- ↑ 아이들링,〈RAID0부터 RAID7까지. 모든 RAID구성을 알아보자]〉, 《티스토리》, 2018-01-23
- ↑ 이문규 기자, 〈하드디스크도 합체한다 - 레이드(RAID) 디스크 구성의 이해〉, 《동아일보》, 2010-07-02
- ↑ 프로니어, 〈RAID 포렌식 (Hardware RAID vs. Software RAID, Acquistion)〉, 《포렌식 프루프》, 2010-07-08
- ↑ 갓우리코딩 , 〈(레이드(RAID) 개념 정리) RAID 0, RAID 1, RAID 01 vs RAID 10〉, 《티스토리》, 2019-04-11
- ↑ 9.0 9.1 9.2 양햄찌, 〈(운영체제 OS) RAID 개념잡기! RAID란? 신뢰성과 성능 두 마리 토끼 잡기, 레이드 기술〉, 《티스토리》, 2019-10-03
- ↑ 토모걸4507, 〈ECC (Error Correction Code)〉, 《네이버 블로그》, 2011-01-127
- ↑ 패리티 비트 위키백과 -https://ko.wikipedia.org/wiki/%ED%8C%A8%EB%A6%AC%ED%8B%B0_%EB%B9%84%ED%8A%B8
참고자료[편집]
- 세아향, 〈COMPUTER 레이드(RAID) 10 구성〉, 《티스토리》, 2008-08-16
- 아래스, 〈레이드(RAID) 구성하는 방법〉, 《티스토리》, 2010-05-27
- 이문규 기자, 〈하드디스크도 합체한다 - 레이드(RAID) 디스크 구성의 이해〉, 《동아일보》, 2010-07-02
- 프로니어, 〈RAID 포렌식 (Hardware RAID vs. Software RAID, Acquistion)〉, 《포렌식 프루프》, 2010-07-08
- 토모걸4507, 〈ECC (Error Correction Code)〉, 《네이버 블로그》, 2011-01-12
- 아이들링,〈RAID0부터 RAID7까지. 모든 RAID구성을 알아보자〉, 《티스토리》, 2018-01-23
- 해리팍, 〈(스토리지) RAID 정리 1. RAID 기본 설명 및 RAID Level (레이드 레벨)〉, 《티스토리》, 2018-08-31
- 갓우리코딩 , 〈(레이드(RAID) 개념 정리) RAID 0, RAID 1, RAID 01 vs RAID 10〉, 《티스토리》, 2019-04-11
- 양햄찌, 〈(운영체제 OS) RAID 개념잡기! RAID란? 신뢰성과 성능 두 마리 토끼 잡기, 레이드 기술〉, 《티스토리》, 2019-10-03
- RAID 나무위키 -https://namu.wiki/w/RAID
- 패리티 비트 위키백과 -https://ko.wikipedia.org/wiki/%ED%8C%A8%EB%A6%AC%ED%8B%B0_%EB%B9%84%ED%8A%B8
같이 보기[편집]