RAID

IrudaYoon (토론 | 기여)님의 2015년 7월 27일 (월) 13:40 판 (→‎RAID 01)

개요

Redundant Arrays of Independent Disks의 약자. RAID라는 약자로 더 잘 알려져 있다. 약자이므로 소문자를 사용해서는 안되며, 모두 대문자로 적어 주어야 한다.

가용성과 성능을 향상시키기 위해 여러 개의 하드디스크를 하나의 그룹으로 묶어서 사용하는 기술으로 디스크를 묶는 방법에 따라 가용성과 성능을 하나만 혹은 둘다 취할것인지의 여부와 얻을 수 있는 가용성과 성능의 수준이 달라진다.

속도만 치자면야 고속으로 동작하는 디스크를 RAID 0으로 묶는게 최고지만 그랬다가는 디스크가 손상되는 경우 모든 자료가 날아가게 되므로 사용가능한 디스크의 수량이 적은 개인 PC가 아닌 이상은 보통 저렇게 구성하지는 않는다. 기업에서 사용되는 서버/스토리지에서 이 문제는 여러 종류의 디스크를 여러 종류의 RAID로 묶어서 '저장단계'를 구축하고, 각 자료의 요청빈도에 따라 서버/스토리지의 관리 SW/HW가 자료의 위치를 조정하는 방법으로 해결하곤 한다.

이 경우 동작속도가 빠르지만 비싸고 용량이 작은 디스크를 고성능을 발휘하는 RAID로 지정해서 소규모만 구축하고, 이보다는 느리지만 싸고 용량이 큰 디스크를 상대적으로 느린 RAID로 묶어서 대용량으로 구축하게 된다. 서버/스토리지의 관리 SW/HW는 오가는 자료를 확인해서 자주 사용되는 자료가 무엇인지를 파악하고, 이 자료를 더 빠른 구역으로 보낸다. 물론 빠른 구역에 있는 자료의 사용빈도도 체크해서 사용이 자주 일어나지 않을 경우 느린 구역으로 밀어보내게 된다. 물론 이런 작업이 가능하게 되려면 처음 자료를 저장한 이후 한동안 사용빈도를 분석하는 시간이 필요하므로 어느 정도의 시간이 지난 이후에야 장비가 생각한대로 돌아가는 것을 볼 수 있다.

'어, 이거 SSHD랑 퓨전드라이브에서 쓰는 방법 아닌가요?'라고 생각한다면 맞다. RAID로 구성을 하지 않았을 뿐이지 양쪽 모두 '자주쓰는 자료를 분석해서 빠르게 동작하는 저장공간으로 보낸다'라는 동작 방식은 동일하다.

물론 기업에 팔리는 장비라고 해서 RAID 0에 SSD로 구성된 물건이 없지는 않다. 기성 하드디스크나 SSD가 아닌 기판에 플래시메모리와 이를 관리하기 위한 HW를 단 것을 저장장치로 사용하는 올플래시 스토리지 시장의 경우 뒤져보면 들어있는 모든 저장공간을 RAID 0으로 묶는 물건도 있기는 있다.남자의 로망

역사

원래는 Redundant Arrays of Inexpensive Disks의 약자였다. 자료를 저장하는 데이터 센터의 업그레이드를 하게되면, 기존 장비에서 떼어낸 용량이 작고 속도도 느린 구형 디스크들이 많이 생겨나는데 이 것들을 재활용 할 방법을 찾다가 나온 것이 RAID의 시작이였다고 알려진다.

1987년 캘리포니아 대학교 버클리 캠퍼스의 데이비드 패터슨(David Patterson)과 가스 A. 깁슨(Garth A. Gibson) 그리고 랜디 카츠(Randy Katz)가 1877년 6월에 "A Case for Redundant Arrays of Inexpensive Disks(RAID)"라는 논문을 ACM SIGMOD(Assosication for Computing Machinery's Special Interest Group on Management of Data) 컨퍼런스에서 발표했다. 그들은 이 논문에서 메인프레임에 사용되는 고성능 디스크의 성능을 일반적으로 사용되는 개인용 PC의 디스크 여러개를 묶어서 넘어서는 방법을 발표했고, 이 논문을 통해 현재의 RAID라는 개념이 탄생했다.

위의 논문이 발표되기 전에도 RAID라는 명칭을 사용하지 않았을 뿐 이후 규정되는 몇개의 공식 RAID 레벨들이 개별적으로 발표 혹은 운용되고 있었다고 한다. 영문 위키피디아의 RAID 페이지에서는 이 중 아래 4가지의 사례가 소개되어 있다.

  • 1977년, IBM의 노만 켄 오우치(Norman Ken Ouchi)가 추후 RAID 4로 알려지는 기법의 특허를 출원한다.
  • 1983년경, DEC에서는 HSC50 서브시스템의 한 부분으로 미러링된 RA8X 디스크 드라이브를 출고했는데, 이는 RAID 1의 기법과 같다.
  • 1986년, IBM의 클라크 엣 알(Clark et al)이 이후 RAID 5로 알려지는 기법의 특허를 출원한다.
  • 1988년경, 씽킹 머신스 코퍼레이션의 데이타볼트 제품에서 오류 정정부호(error correction code)를 하나의 어레이로 묶인 디스크에서 사용했다.

이 기술은 학계의 아이디어에서 업계 표준으로 발달했으며, RAID가 단순히 기존의 디스크를 재활용 하는것을 넘어 장치에 설치된 디스크들의 가용성과 성능을 향상시키는 목적으로 사용되면서 RAID를 지원하는 장비를 만드는 업체들에 의해 RAID의 약자가 Redundant Arrays of Inexpensive Disks에서 Redundant Arrays of Independent Disks로 변경되었다.

RAID의 목표

일반적으로 RAID가 추구하는 것은 성능과 가용성으로 쉽게 말해서 최대한 빠른 읽기/쓰기 속도를 확보하고(성능) 디스크 파손시에도 자료를 보존(가용성) 하는 것을 목표로 삼고 있다. 이 목표들을 달성할 수 있는지의 여부는 디스크를 어떤 RAID로 구성하느냐에 달려있다.

관련 용어

레벨

디스크를 어떻게 묶어서 RAID를 구성하느냐에 따라 RAID의 종류가 갈리며, 이것을 RAID 레벨이라고 부른다. 레이드 레벨은 숫자를 사용해서 표현하며, 보통 한자리의 수로 표시되나 하나 이상의 RAID 레벨을 조합하는 경우 두자리 수로 표기하기도 한다.

산업 표준으로 정해진 RAID 레벨이 몇 있으며, 이것을 표준 RAID 레벨(Standard RAID Level)이라 부른다. 표준 RAID 레벨을 두개 이상 묶어서 사용하는 경우 네스티드 RAID 레벨(Nested RAID Level)이라는 명칭으로 부르며, 하이브리드 RAID 레벨(Hybrid RAID Level)이라 부르는 경우도 있다.표준이 아닌 RAID 레벨은 당연히 비표준 RAID 레벨(Non-standard RAID Level)이라 부르고 있다.

경우에 따라서는 서버용 스토리지 디스크 제조사가 독자적으로 비표준 RAID 레벨을 만들어서 사용하기도 하는데, 대체로 하이엔드 중에서도 상위급 스토리지의 자료를 찾아보면 이런 기술들이 사용되었다는 안내가 나오는 편이다. 로우엔드/미드레인지나 일반적인 하이엔드 스토리지는 표준 RAID 레벨이나 네스티드 RAID 레벨이 사용되는게 일반적이다.

대표적인 RAID 레벨

각 RAID 레벨의 첫부분에 달린 표는 각 RAID의 기본적인 특성을 정리한 것이다.

  • 최소 요구 디스크 수는 이 RAID를 구성하는데 필요한 최소한의 디스크 수량을 의미한다.
  • 저장소 효율은 구성에 사용된 디스크의 전체 물리용량 중에서 실제로 사용자가 자료 저장에 사용가능한 공간의 비율이다. 예를 들어서 저장소 효율이 50%라고 하면, 500GB 디스크 두개를 묶어서 1TB를 확보해도, 실제로 자료 저장에는 500GB밖에 쓰지 못한다는 의미이다.
  • 손실 대응 가능 디스크 수는 해당 RAID가 몇개의 디스크 파손에도 자료를 보존할 수 있는지를 나타낸다. 이 수치가 0이면 디스크가 하나만 파손되어도 모든 자료가 유실되며, 1이면 한개까지는 파손되어도 괜찮다.

참고로 손실 대응 가능 디스크 수에는 함정이 있는데, 디스크 1개가 파손된 상황에서 손상된 디스크를 새 디스크로 교체하고, 이 디스크에 있어야하는 자료를 복구하는 과정에서 기존 디스크에 걸리는 부하로 인해 디스크가 추가로 사망하는 경우가 발생할 수 있다. 실제 사례로 RAID 6에서 디스크 하나가 파손되어서 이를 교체했는데, 복구 과정에서 디스크가 하나 더 죽어버린 경우가 있다. 그게 아니더라도 복구 과정에서 기존 디스크에 걸리는 부하가 다른 작업에 지장을 주게 되므로 기업용 스토리지 장비들 중에는 이를 해결하기 위한 변칙적인 RAID 구조를 사용하는 경우도 있다.

표준 RAID 레벨

RAID 0
최소 요구 디스크 수 2
저장소 효율 100%
손실 대응 가능 디스크 수 0

※ n은 전체 드라이브 구성 수량

기록 방식을 그대로 따서 디스크 스트라이핑이라고 부르는 경우도 있다.

하나로 묶인 모든 디스크들에 데이터를 스트라이핑으로 기록한다. 즉, 데이터가 들어오면 이를 분할해서 여러개의 디스크에 동시에 기록하게 된다.

여러개의 디스크에 데이터를 동시에 기록하고 읽어올 수 있기 때문에 전체적인 성능은 크게 증가하고, 구성에 사용된 디스크의 저장공간을 전부 자료저장에 쓸 수 있는 장점이 있지만 그 대가로 하나로 묶인 디스크 중에 단 하나라도 고장날 경우 모든 자료가 유실된다.

서버용 스토리지에서는 자료 유실의 위험성 때문에 자료를 정말 극단적으로 빠르게 주고받아야 하는 경우에 한해 간혹 구성이 가능한 경우가 있지만, 디스크의 입출력 속도를 대가로 안정성을 완전히 포기하는 극단성 때문에 아무래도 사용하기가 힘든 면이 있다. 차라리 유사한 성능을 내는 RAID 5나 디스크를 더 많이 쓰더라도 속도와 안정성을 모두 확보 가능한 RAID 10을 사용하는 편.

개인 사용자의 경우는 서버에 달아쓰는 스토리지 처럼 디스크를 여러개 사용할 수 없고, 어차피 자료를 많이 읽고쓰는 편도 아니기 때문에 자료의 읽기쓰기 속도를 늘리기 위해 단 2개의 디스크만 있어도 구성이 가능한 RAID 0을 구성하는 경우가 있다. 이마저도 2013년 이후 SSD의 가격이 급속도로 낮아지면서 SSD를 하나 설치하고 마는 경우가 일반적이다.

RAID 1
최소 요구 디스크 수 2
저장소 효율 50%
손실 대응 가능 디스크 수 1/n

※ n은 전체 드라이브 구성 수량

기록 방식을 그대로 따서 디스크 미러링이라고 부르는 경우도 있다. 하나의 그룹으로 묶인 디스크에 동일한 자료를 기록한다. 즉, 데이터가 들어오면 이를 모든 디스크에 똑같이 기록한다. 이 때문에 자료를 쓰는 속도는 다른 RAID보다 느리지만, 자료를 읽을때는 여러 디스크에서 똑같이 읽어오므로 속도에서 득을 보게된다.

RAID 0과는 반대로 자료의 안정성을 극단적으로 추구하는 형태로 하나의 그룹에 묶인 디스크에 저장된 자료는 단 하나의 디스크만 살아남아도 자료가 그대로 보존된다. 대신 수십개의 디스크를 하나로 묶어도 저장공간은 1/디스크 수로 정말 코딱지만하게 떨어지므로 정말 극단적으로 안정성을 추구해야하는 동시에 비용과 설치공간의 문제가 없는 경우에 한해만 제한적으로 사용된다.

재정문제로 인해 하드디스크를 많이 쓰기 힘든 개인용 NAS나 스토리지에서는 정말 중요한 자료의 보존에 RAID 0를 사용하기도 한다. 가족사진 같은걸 보관할때는 디스크 하나에만 저장하자니 영 안심이 안되는 -하드디스크도 엄연히 소모품이다- 경우가 있는데, 이럴때 RAID 0를 활용하면 근심을 좀 덜 수 있다. 참고로 가족사진 같은걸 CD/DVD/BD등의 광학매체에 백업하는게 낫지 않겠냐고 한다면... 그거 은근히 약하다. 싸게만든 매체의 경우는 자료의 유실확률이 상당히 높으며 실제로도 CD-R이 한창 보급되었던 시기에 백업한 CD들의 상태가 10여년쯤 지나니 영 불안하게 되더라라는 경험담을 간간히 찾아볼 수 있다.

RAID 2
최소 요구 디스크 수 3
저장소 효율 [(n-1)/n] X 100
손실 대응 가능 디스크 수 1

※ n은 전체 드라이브 구성 수량

여러 디스크에 걸쳐 연속적으로 자료를 저장(스트리핑)하면서, 자료 유실에 대비해 오류 정정 코드(ECC, Error Correction Code)를 별도의 디스크에 저장하는 방식. 디스크 한개 까지는 손실되어도 자료의 유지가 가능하다.

기본적으로는 RAID 1과 마찬가지로 여러 디스크에 걸쳐 연속적으로 자료를 저장(스트리핑)하지만, 만약을 대비해 기록 과정에서 오류 정정 코드를 생성하고, 이를 별도로 지정된 오류 정정 코드 저장용 디스크에 저장한다. 오류 정정 코드로 사용되는 것은 해밍 코드로, 이를 계산하기 위해 기록되는 자료를 비트단위로 묶어서 저장하게 된다.

읽기/쓰기 작업시 모든 드라이브에 있는 자료토막에 동시에 접근을 해야하고, 이 때문에 여러 사용자가 동시에 작업을 진행하는 것이 불가능하다. A라는 사용자가 RAID 2로 구성된 공간에 작업을 하고 있다면, B라는 사용자는 이 공간에 대해서는 아무것도 하지 못하게 된다는 이야기. 아예 RAID 컨트롤러가 모든 디스크를 정확히 같은 각도(Angular Orientation)만큼 움직이도록 동기화 시켜서 동작하도록 되어있다.

ECC를 쓰는 방식이 패리티를 쓰는 것대비 나을게 없기 때문에 2015년 기준으로 초기에 제안된 5개의 RAID 레벨중에 유일하게 사용되지 않는 레벨이다.

RAID 3
최소 요구 디스크 수 3
저장소 효율 [(n-1)/n] X 100
손실 대응 가능 디스크 수 1

※ n은 전체 드라이브 구성 수량

여러 디스크에 걸쳐 연속적으로 자료를 저장(스트리핑)하면서, 자료 유실에 대비해 패리티를 별도의 디스크에 저장하는 방식. 디스크 한개 까지는 손실되어도 자료의 유지가 가능하다.

RAID 2에서 오류 정정 코드 대신 패리티를 사용하는 형태라고 봐도 무방하다. 자료를 나누는데 사용되는 스트리핑 크기는 바이트로 비트 단위로 작업하던 RAID 2보다 단위가 커졌다. RAID 2와 마찬가지로 입출력 작업시 모든 드라이브에 동시에 접근해서 작업해야하기 때문에 다중 작업 처리가 불가능하다.

RAID 2의 상위 호환, 패리티 버전이라고 봐도 무방할 정도의 특성을 지니는 셈.

RAID 4
최소 요구 디스크 수 3
저장소 효율 [(n-1)/n] X 100
손실 대응 가능 디스크 수 1

※ n은 전체 드라이브 구성 수량

여러 디스크에 걸쳐 연속적으로 자료를 저장(스트리핑)하면서, 자료 유실에 대비해 패리티를 별도의 디스크에 저장하는 방식. 디스크 한개 까지는 손실되어도 자료의 유지가 가능하다.

자료를 나누는데 사용되는 스트리핑 크기는 특정 용량이 아닌 '블록'단위로 되어있다.

설명 차제는 RAID 3와 같고, 패리티 전용 디스크를 사용하는 것도 동일하지만 RAID 2/3과는 달리 읽기작업에 한해서는 여러명의 사용자가 동시에 작업을 진행하는 것이 가능해졌다. 정확히는 자료가 서로 다른 드라이브에 있을 경우 이를 동시에 읽어오는 것이 가능해졌다. 다만 자료를 기록할 경우에는 패리티 디스크의 수정이 필요하므로 입력과 출력을 동시에 사용하는 것은 불가능 하다고 한다.

RAID 5
최소 요구 디스크 수 3
저장소 효율 [(n-1)/n] X 100
손실 대응 가능 디스크 수 1

※ n은 전체 드라이브 구성 수량

여러 디스크에 걸쳐 연속적으로 자료를 저장(스트리핑)하면서, 자료 유실에 대비해 패리티를 여러개의 디스크에 돌아가면서 저장하는 방식. 디스크 한개 까지는 손실되어도 자료의 유지가 가능하다.

RAID 4와 유사하지만, 패리티 전용 디스크를 사용하지 않고, 모든 디스크에 패리티를 돌아가면서 저장한다. 이를 통해 모든 읽기/쓰기 작업을 동시에 처리하는 것이 가능해졌다. RAID 2~4의 읽기/쓰기 관련 문제와 패리티 디스크의 수명 저하 문제를 해결하는 깔끔한 RAID 구성으로 2015년 기준으로 상당히 널리 사용된다.

RAID 6
최소 요구 디스크 수 4
저장소 효율 [(n-2)/n] X 100
손실 대응 가능 디스크 수 2

※ n은 전체 드라이브 구성 수량

여러 디스크에 걸쳐 연속적으로 자료를 저장(스트리핑)하면서, 자료 유실에 대비해 패리티 2개를 여러개의 디스크에 돌아가면서 저장하는 방식. 디스크 두개 까지는 손실되어도 자료의 유지가 가능하다.

RAID 5의 패리티 2개 버전. RAID 5보다 성능이 조금 떨어지지만 그 대가로 안정성을 추가로 확보했다. 별것 아닌것 같지만 같이 구매한 디스크는 엇비슷한 시기에 사망하는 경향이 있고, 그게 아니더라도 손실된 디스크의 복구과정에서 걸리는 부하로 인해 디스크가 추가로 손실될 위험성이 항시 존재하므로 RAID 5보다 디스크 손상을 하나 더 버텨낼 수 있다는 것을 결코 나쁜 조건이 아니다.

저속의 대용량 디스크를 사용해서 자주 사용하지 않는 정보를 저장할 공간을 구축하거나, 백업용 자료를 저장하는 공간을 구축할때 유용하다. 이 밑단으로는 슬슬 테이프 스토리지가 등장할 차례.

네스티드 RAID 레벨

RAID 10
최소 요구 디스크 수 4
저장소 효율 스트라이프 수/n
손실 대응 가능 디스크 수 구성에 따라 다름

※ n은 전체 드라이브 구성 수량

RAID 10, RAID 1+0, RAID 1&0등 여러가지고 표시한다.

일단 디스크를 2개씩 RAID 1로 묶고, 이 묶음을 모아서 RAID 0으로 묶는 형태다. 자료가 들어오면 처음에는 RAID 0의 동작 방식에 따라 자료를 존재하는 RAID 1묶음 들에 토막내서 보낸다. 그러면 이걸 받은 RAID 1묶음 에서는 자료를 양쪽 디스크에 동일하게 저장(RAID 0)하게 된다.

RAID 0를 제외한 대부분의 RAID 구성에 비해 성능면에서 이득을 본다고 하는데, RAID 0이 자료의 안정성을 완전히 포기하는 구조임을 생각해보면 사실상 성능을 극한으로 추구할 경우의 선택지는 RAID 10이 된다는 결론이 나온다. 실제로도 SSD나 15K RPM급 디스크를 RAID 10으로 묶어서 속도를 극한으로 뽑아내는 경우가 많다.

RAID 01
최소 요구 디스크 수 4 (nested) / 3 (hybrid)
저장소 효율 구성에 따라 다름
손실 대응 가능 디스크 수 구성에 따라 다름

※ n은 전체 드라이브 구성 수량

디스크를 2개씩 RAID 0으로 묶고, 이걸 다시 RAID 1로 묶는다.

자료가 들어오면 RAID 1의 동작 방식에 맞춰 RAID 0으로 묶인 모든 장소에 그 자료를 동일하게 기록하게 되고, 이걸 받은 RAID 0단에서는 자료를 양쪽에 나눠서 저장하게 된다.

비표준 RAID 레벨

RAID DP(Double-Parity)

RAID 3~4에서 사용되던 '패리티 전용 디스크를 사용한다'라는 구조를 패리티 2개를 사용하는 형태로 만들어서 디스크 2개의 손실까지 버틸 수 있게 한 것이다. RAID 3~4의 고질적인 문제인 패리티가 저장되는 디스크에 입출력 작업이 과도하게 걸려 패리티 디스크의 수명이 빠르게 줄어드는 문제는 해결할 수 없지만, 디스크를 2개까지 잃어도 자료가 보존될 수 있게 함으로서 가용성을 늘리는 비표준 RAID 레벨이다.

2015년 기준으로는 동일한 수준의 가용성을 제공하는 RAID 6로 대체된 상태다. 다만 2010년대 초반까지도 이 RAID 규격을 지원하는 장비들이 소수나마 있었으므로 기존에 도입된 장비를 확인하다 보면 접할 가능성이 있는 규격이다.

한예로 이 규격이 지원되지 않는 장비들이 주류가 된 2013년 언저리에도 간혹 RAID DP장비를 제공할 것을 규격서에 명시하는 경우가 있었다.

참고자료

  • 영문 위키피디아 'RAID' 문서 #
  • 영문 위키피디아 'Standard RAID levels' 문서 #
  • 영문 위키피디아 'Nested RAID levels' 문서 #
  • 영문 위키피디아 'Non-Standard RAID levels' 문서 #
  • EMC 교육 서비스저 김기성 옮김 (2014. 01. 16). '정보 스토리지와 관리 - 클라우드 컴퓨팅 시대의 정보 저장과 관리, 보호 기법'(Information Storage and Management: Storing, Managing, and Protecting Digital Information in Classic, Virtualized, and Cloud Environments). 3장 데이터 보호: RAID 에이콘 출판사. ISBN 9788960775121.
  • 시게이트 NAS OS가 제공되는 시게이트 비즈니스 스토리지용 온라인 메뉴얼. RAID 모드 항목. #
  • 텀즈, 'RAID' 문서 #