Tuesday, April 10, 2018

CentOS 6.6 리눅스 관리] 4.1 RAID - RAID 기술


안녕하세요. 썬구루입니다. 이 게시물에서는 Disk RAID에 대해 알아보도록 하겠습니다. 그리고 리눅스 RAID 구성 명령을 통해 소프트웨어적으로 RAID를 구성하는 방법에 대해 알아보겠습니다.

사무실에서 컴퓨터를 사용하다가 중요한 데이터를 저장하고 있는 하드디스크가 노후화로 인해 또는 미세한 전기적인 충격으로 인해 하드디스크 장애가 발생하였다고 가정을 해보죠.

그러면 어떻게 될까요?

간단하게 말하면 더 이상 업무를 볼 수 없는 지경이 이를 수 있을 것입니다. 운 좋게 디스크 제어 기판 부분만 문제가 발생하였다면 그것만 동종 모델로 교체하여 데이터를 살릴 수 있을 것입니다.

만약 하드디스크 플래터 장애로 인해 그 디스크의 데이터를 읽어드릴 수 없다면 어떻게 될까요? 그때는 정말 인생의 종을 땡땡 치셨다고 보면 됩니다. 땡~ 땡!!! 땡땡땡!!!


그러면 이러한 디스크 단일 장애(Disk single failure)에 대처하려면 어떻게 해야 할까요? 그것은 데이터 백업 및 RAID 기술 적용입니다. 백업은 원본에 대한 사본을 별도의 저장 장치에 저장, 보관해두는 것이죠. 같은 디스크에 백업본이 존재한다는 것은 그 디스크가 문제가 발생했을 때 금방 알 수 있죠. 디스크 장애 나면 눈물이 뚝뚝!! 회사에서 그런 일이 발생한다면 엄청 큰일 나겠죠.

아무튼 백업은 또 별도로 배울 것이기 때문에 일단 RAID 기술에 대해 알아보도록 하겠습니다.

■ RAID란?

Redundant Array of Independent Disks의 약자로서 디스크의 논리적인 조합을 통해 용량, I/O 성능, 데이터 사용성을 높이기 위해 사용하되는 기술이다. 운영체제에서 제공하는 또는 상용 응용프로그램 볼륨 매니저를 통해 소프트웨어적으로 구성할 수 있고 또는 하드웨어 RAID 컨트롤러를 통해 구현이 가능하다. 소프트웨어적인 구성은 디스크 I/O가 많이 발생하면 서버 CPU에 많은 부하를 주기 때문에 별도의 CPU와 캐시메모리를 장착한 전용 디스크 스토리지가 나온 것이다.



처음 RAID 기술은 하드디스크 용량 대비 가격이 고가였을 때 디스크 단일 장애(Single Point of Failure) 대비가 아닌 단순히 논리적인 방법을 통해 디스크 용량을 늘리기 위해 사용되었는 것.. 데이터의 가치는 산정할 수 없는 것이기 때문에 기술이 발전하여 단일 디스크 장애에 대비할 수 있는 기술로 발전 한 것이죠. 15년 전만 하더라도 72GB 용량 스토리지 FC 디스크가 개당 300만 원 할 때가 있었는데.. 그때가 하드웨어 전성기였죠.. ㅎㅎ..



Stripe가 들어간 기술 경우 데이터를 블록 단위(솔라리스 SVM에서는 Interlace라고 함)로 쪼개어 RAID 그룹의 디스크에 분산 저장을 해야 하기 때문에 여기에 대한 연산처리가 들어간다. 때문에 쓰기 성능이 떨어지게 된다. Parity 경우 오류 검증에 대한 또 다른 연산처리가 들어가기 때문에 쓰기 성능이 일반 Stripe 구성보다 더 떨어지게 된다. Mirror은 원본에 대한 사본을 만들어 저장하는데 쓰기 성능은 떨어지지만 구조가 단순하고 디스크 단일 장애에 대해 지속적인 데이터 서비스를 할 수 있다.




여기서 떨어진다는 것은 성능이 저질이다. 저급하다. 나쁘다는 뜻이 아니다. 상대적으로 낮다는 것이다. 소프트웨어적으로 RAID 기술을 처리하면 서버의 부하가 클 경우 데이터 서비스 성능이 떨어지기 때문에 또는 데이터 서비스 부하가 높으면 서버 성능이 떨어지기 때문에 서비스 품질에 문제가 생길 수밖에 없다. 주요한 데이터 서비스를 처리하는 서버라면 이를 보완하기 위해 별도의 전용 저장 장치인 디스크 스토리지(Disk Storage)를 사용하는 것이다.

서버에 한정하여 어떤 I/O 컨트롤러를 사용하는지 잠깐 알아보자.

 ▶ JBOD I/O Controller : 단지 하나의 컨트롤러에 7 또는 15개의 디바이스를 연결할 수 있는 컨트롤러. 과거에 사용하였으며 지금은 거의 사용하지 않는다. RAID는 소프트웨어적으로 구성해야 한다.

 ▶ On board RAID I/O Controller : 메인보드에 내장된 RAID 컨트롤러를 말하며 보통 RAID 0과 RAID 1을 지원한다. 단지 서버에는 OS에 관련된 파일만 저장된다면 OS Disk Mirroing (RAID 1) 을 구성하기 위해 좋은 기능이다.



▶ RAID I/O Controller : 메인보드 PCI 슬롯에 별도로 장착되는 카드이며 RAID 0, RAID1을 지원하는 컨트롤러와 기존 컨트롤러에 256MB 또는 512MB 캐시메모리(Cache Memory)와 배터리를 추가 장착하여 RAID 0, 1, 5, 6, 10을 지원하는  컨트롤러로 나누어진다.

어떤 것을 사용할 것인가 이것을 결정짓는 것은 서버 용도, 성능, 가용성 그리고 도입 비용이다. 참고로 VMware Workstation에서 사용되는 I/O Controller는 JBOD로 동작한다.




■ RAID 0 ( Concatenation & Stripe )


RAID 구성의 구성 요소는 Disk, Partition, LUN이 될 수 있다.

RAID 0은 다시 두 개로 분류되는데 Concatenation과 Stripe이다.

 ▶ RAID 0 Concatenation

물리적인 용량 한계를 뛰어넘기 위해 디스크를 직렬 형식으로 묶었다고 생각하면 쉽게 기억된다. 데이터는 순차적으로 저장된다. 디스크 단일 장애에 대한 대처를 할 수 없는 구조이다. 구성을 위한 디스크 최소 요구 개수는 1개이다.

 ▶ RAID 0 Stripe

물리적인 용량 한계를 뛰어넘기 위해 디스크를 병렬 형식으로 묶었다고 생각하면 된다. 데이터는 특정 블록 단위로 쪼개어져서 저장된다. Concatenation과 마찬가지로 디스크 단일 장애에 대처를 할 수 없는 구조이다. 쓰기 성능은 조금 떨어지지만 읽기 성능이 향상된다. 구성을 위한 디스크 최소 요구 개수는 2개이다.

■ RAID 1 ( Mirroring )

원본에 대한 사본을 가지는 구조이다. 쓰기 성능은 낮아지지만 읽기 성능은 조금 빨라진다. 그리고 RAID 1 구성 속성에 따라 Round Robin 형식으로 읽을 것인지, First로 읽을 것인지에 달라진다.

하나의 디스크가 장애 나더라도 데이터 서비스를 지속할 수 있는 즉 디스크 단일 장애에 대처를 할 수 있는 구조이다.

보통 2 Way Mirroring (원본+사본) 방식을 사용하지만 데이터 중요도에 따라 또는 필요에 의해 3 Way Mirroring (원본+사본+사본) 방식을 사용하기도 한다.

■ RAID 5 ( Stripe with Parity )


기본 구조는 Stripe이지만 블록에 대한 패러티(Parity)를 가지는 구조로 되어 있다. 데이터를 특정 블록 단위로 쪼개고 패러티 처리까지 해야 하기 때문에 쓰기 성능은 Stripe보다 떨어진다.

Stripe와는 달리 디스크 단일 장애에 대처를 할 수 있는 구성으로 되어 있다. 만약 하나의 디스크에 장애가 발생한다면 패러티(Parity) 연산을 통해 데이터 서비스를 계속할 수 있다.

하지만 패러티(Parity) 연산은 높은 연산처리 능력을 필요로 하기 때문에 데이터 서비스 성능이 떨어진다. 디스크 최소 요구 개수는 3개이다.

■ RAID 6 ( Stripe with Dual Parity )


RAID 5와 유사한 구조이지만 패러티(Parity)를 하나 더 가지는 구조이다. RAID5는 디스크가 2개가 장애 나면 더 이상 데이터 서비스를 계속할 수 없는 구조이다. 그래서 2개의 디스크가 장애 나더라도 서비스를 계속할 수 있는 RAID 6을 사용할 수 있다.

하지만 전체 용량 대비 사용 용량이 RAID 5 보다 떨어지기 때문에 정말 중요한 데이터를 저장할 때 사용된다. 디스크 최소 요구 개수는 4개이지만 그렇게 되면 전체 용량 대비 50%만 사용 가능하기 때문에 보통 5개 이상으로 구성한다.

■ Hot Spare


RAID 1, 5, 6은 단일 디스크 장애에 대처를 할 수 있는 구조이다. 하지만 디스크 장애가 발생한다면 그것에 대에 어떻게 처리를 할까? 장애가 언제 난다고 시간 알려주면서 나는 것이 아니다. 언제 날지 모르는 상태에서 나게 된다. 시간이 새벽일 수 있고 업무 시간일 수도 있다. 그리고 담당자가 스토리지만 바라보고 장애 날지 안 날지 구경하고 있을 수만 없다.

자동차가 도로를 달리다가 공압에 의해 터질 수 있고 도로에 있는 뾰쪽한 물체가 박혀 서서히 바람이 빠질 수도 있다.

바퀴에 바람이 없는 상태로 가면 휠이 망가지거나 자동차가 망가질 수 있다. 그러면 그때 어떻게 하는가? 자동차 보험을 부를 수도 있겠지만 차량 트렁크 쪽에 있는 스페어 타이어로 바꿀 것이다. 이것처럼 RAID 그룹의 디스크에 장애가 난다면 예비 디스크로 자동 교체가 될 수 있도록 만드는데 그것이 Hot Spare이다. Hot Spare는 논리 개체이고 구성 요소로 물리 디스크를 1개 이상 둘 수 있다. Local / Global Hot Spare가 있는데 여기서는 그런 것까지 다루지 않는다. 그것은 관련 분야에 취업하면 얼마든지 볼 수 있다.

위에 언급한 RAID 종류 이외에도 RAID 2, 3, 4, 1+0, 0+1 이 있지만 이 게시물에서는 다루지 않습니다. 위에 언급한 RAID 종류만 알아도 엔지니어 하는데 별지장은 없습니다. RAID 10은 RAID 1+0을 말하는 것이고 실제 사용할 수 있는 용량은 전체 용량에 50% 밖에 되지 않습니다. 정말 데이터가 중요한 곳에서 사용하는 기술이고 RAID 10은 저도 실 환경에서 한 번 밖에 구성 안 해봤습니다. 용량 대비 비용이 비싸서 별로..

여기까지 자주 사용하는 RAID 기술 종류에 대해 알아보았습니다. 다음 게시물에서는 CentOS 리눅스의 기술을 사용하여 RAID를 구성하는 방법에 대해 알아보도록 하겠습니다.






No comments:

Post a Comment