본문 바로가기
Develop/Server

[Linux] 여러 개의 하드디스크를 하나 인 것처럼 사용하기 (feat. RAID)

by 코딩의성지 2020. 9. 1.

만약 운영하는 서버의 스토리지 공간이 부족하다면 여러분들은 아마 하드디스크 구매를 생각할 것이다. 그런데 이게 구매만 한다고 되는 것은 아니다. 각 하드디스크가 용량이 넘치지 않도록 저장할 파일을 잘 분배해서 저장해줘야 하드디스크를 효율적으로 사용할 수 있다.

 

이때 여러개의 하드 디스크를 하나의 하드디스크처럼 사용할 수 있는 방법으로 RAID와 LVM 이라는게 있다. 여기서 오늘은 RAID라는걸 정리해보려고한다.

 

RAID 의 종류

 

RAID는 Redundant Array of Inexpensive/independent Disks 의 줄임말이다.

RAID는 크게 하드웨어 RAID 와 소프트웨어 RAID로 나눌 수 있다. 

 

하드웨어 RAID는 말 그대로 핟하드웨어 RAID는 말그대로 하드웨어 제조사에서 하드디스크를 연겨해서 만든 장비를 공급하는 것이다. 당연히 이러한 방식이 소프트웨어 RAID 보다 안정적이고 유지보수도 편하다. 대신 돈이 많이든다. 보통 고가의 경우 SA-SCSI 하드디스크를 중저가의 경우 SATA 하드디스크를 이용해서 만든다.

 

소프트웨어 RAID는 하드디스크만 여러개 있으면 운영체제에서 지원하는 방식으로 RAID를 구성할 수 있는 방법이다. 하드웨어 RAID에 비해선 신뢰도나 속도가 떨어질수 있지만, 비용이 적게 들기에 많은 기업들이 선택해서 사용하고 있는 방식이다.

 

RAID는 레벨

 

RAID는 구성하는 방식에 따라 Linear RAID, RAID 0, RAID 1, RAID 2, RAID 3, RAID 4 , RAID 5 로 나뉘는데, 보통 실무에선 Linear RAID, RAID 0, RAID 1, RAID 5가 많이 쓰이고 RAID 5를 개선한 RAID 6 과 RAID 0 과 1을 합친 RAID 1+0 이 많이 쓰인다. 

 

Linear RAID & RAID 0

비교를 위해 Linear RAID와 RAID 0은 2개 이상의 하드디스크가 필요하다. 두 방식의 가장 큰 차이점은 바로 데이터가 저장되는 방식이다. 아래의 그림을 먼저 보자.

 

 

위의 그림처럼 만약에 "나는아이티알려주는은행원"이라는 내용을 저장한다고 가정하자. (보통 데이터는 블록 혹은 비트 단위로 저장되나 설명의 편의성을 위해 위처럼 글자로 저장된다고 가정했다.) 

Linear RAID는 설치된 하드웨어들에 순차적으로 데이터가 저장된다. 즉 1~3번까지의 하드웨어가 있으면 1번을 다 써야 2번, 3번으로 넘어가서 저장이된다. 즉 1~3번 하드디스크를 다 쓸 수 있다. 

 

이와는 다르게 RAID 0는 1번째, 2번째, 3번째 하드디스크에 동시에 저장된다. 위의 그림처럼 '나' 라는 글자는 1번에, '는' 이라는 글자는 2번에, '아' 라는 글자는 3번 째에... 다시 '이'라는 글자를 1번째에, '티'는 2번째, '알' 은 3번째에 ... 다시 이렇게 반복해서 한글자씩 저장하는 방식을 RAID 0 이라 한다. 

 

글자하나를 저장하는데 걸리는 시간은 1초라고도 가정했을 때 Linear RAID 가 글자를 다 저장하는데 12초 걸린다면 RAID 0 은 12/3 = 4 초 밖에 걸리지 않는다는 계산이 나온다. 동시에 각 하드디스크에 접근에서 저장을 하니깐 말이다. 허나 하나의 디스크라도 고장나버리면 데이터는 망가져버리기도 한다. 즉 데이터의 안정성을 보장하지 못한다. 하지만 Linear RAID 나 다음에 설명할 RAID 1에 비해 모든 디스크를 효율적으로 쓰므로 공간의 효율성은 굉장히 좋다고 볼수 있다.

 

RAID 1

RAID 1 방식은 단순히 데이터를 미러링하는 것이다. 

이 방식은  RAID 0 에 비해 2배의 욜량을 사용한다. 그렇다면 이방법을 왜 쓰는 것일까? 바로 데이터의 안정성을 사용하기 위함이다. 디스크가 하나 고장나도 데이터의 안정성은 보장된다. 이를 결함 허용 (Fault-tolerance) 을 제공한다고도 표현한다. 하지만 이는 공간을 2배나 잡아먹기위해 공간 효율은 떨어진다.

 

RAID 1+0

이 두가지를 섞은 방식도 존재한다. 바로 RAID 1+0 방식이다. 안정성과 속도를 동시에 확보하는 방법이다.

RAID 1로 구성한 데이터를 RAID 0으로 구성하는 방법이다.

 

 

RAID 5

RAID 1 처럼 데이터의 안정성을 보장하면서도 RAID 0 처럼 공간효율성도 좋은 방식이다. RAID 5는 최소 3개 이상의 하드디스크가 있어야한다. 보통 실무에서는 5개 이상의 하드디스크를 장착시킨다. RAID 5에 주요한 특징은 바로 Parity 이다. 하드디스크에 문제가 생기면 이 Parity를 이용해 데이터를 복구한다.

 

예를 들어 아래처럼 "111 001 100 000" 이라는 12비트 짜리 데이터를 저장한다고 하자.

여기서 ㅁ으로 표시된 데이터를 Parity 데이터라고 하는데 , 여기서 우리는 짝수 Parity로 데이터를 저장한다고 가정해보자.

짝수패리티는 각 행과 패리티값을 더했을때 짝수가 되야한다는 뜻이다. 

즉, 1+ 1+ 1 + ㅁ(1행 Parity) = 짝수 여야하기에 1행 Parity 는 1 이다.

두번째 행은 0+ 0 + ㅁ(2행 Parity) + 1 = 짝수 여야하기에 2행 Parity 역시 1이다.

세번째 행은 1+ ㅁ(3행 Parity) + 0 + 0 = 짝수 여야하기에 3행 Parity 도 1이다.

네번째 행은 ㅁ(4행 Parity) + 0 + 0+ 0 = 짝수 이기 때문에 4행 Parity 는 0 이된다.

 

 

이제 한 디스크가 고장나도 충분히 그 값을 찾아낼 수 있을 것이다. RAID 5에서 하드디스크 갯수가 n개이면 공간은 패리티를 채울 공간을 제외하고 n-1 개의 하드디스크 만큼 공간을 사용할 수 있다.

 

RAID 6 

극단적으로 하드디스크가 2개가 고장날때도 있다.. RAID 5도 이럴때는 복구가 불가능하다. 여기서 2개의 패리티를 사용하면 어떨까? 공간효율은 RAID5보다 낮지만 2개의 하드디스크가 고장나도 복구가 가능할 것이다. 이게 바로 RAID 6 방식이다. RAID6은 최소 4개 이상의 하드디스크로 구성되어야한다. RAID 5 보다 속도와 공간효율은 약간 낮지만 신뢰도는 더욱 높일 수 있는 효과를 가진다.

 

끝.

 

 

 

 

 

참고자료 - 우재남, <이것이 리눅스다>, 한빛미디어(2019)

 

반응형

댓글