1980년대 후반에 비즈니스 프로세스에 컴퓨터를 많이 사용하면서 새로운 애플리케이션과 데이터베이스가 등장했고, 이에 스토리지 용량과 성능에 대한 수요가 빠르게 증가했다. 그 당시에는 단일 대용량 고비용 드라이브(SLED, Single Large Expensive Drive)라는 크고 비싼 디스크 드라이브 1개를 사용해 데이터를 저장했다. 단일 드라이브는 제한된 수의 I/O를 제공할 수밖에 없기 때문에 필요한 성능 수준을 맞출 수 없었다.
오늘날의 데이터 센터는 수백 개의 디스크 드라이브를 사용한다. 디스크 드라이브는 기계적인 수명과 환경적인 요인으로 인해 장애가 발생하며, 이는 데이터 손실을 의미한다. 스토리지 어레이에 디스크 드라이브의 개수가 늘어날수록 디스크 고장의 확률도 증가한다. 예를 들어 평균 기대 수명이 750,000시간인 디스크 드라이브 100개를 가진 스토리지 어레이를 생각해보자. 이 어레이의 평균 기대 수명은 750,000/100, 즉 7,500시간이다. 이는 이 어레이의 디스크 드라이브 중 1개가 최소 7,000시간 내에 고장 날 것임을 의미한다.
RAID는 디스크 고장으로부터 데이터를 보호하기 위해 여러 드라이브를 집합으로 사용하는 기술이다. 일반적으로 RAID 구성은 여러 디스크로부터 I/O를 동시에 수행해 스토리지 시스템의 성능도 향상시킨다. 최신 플래시 메모리를 사용하는 어레이도 RAID를 사용해 데이터 보호와 성능 향상을 얻고 있다.
1987년 캘리포니아대학교 버클리 캠퍼스의 패터슨(Patterson)과 깁슨(Gibson), 카츠(Katz)는 'A Case for Redundant Arrays of Inexpensive Disks(RAID)'라는 제목의 논문을 발표했다. 이 논문은 작은 용량의 저렴한 디스크 드라이브를 메인프레임에서 많이 사용하는 대용량 드라이브를 대체하는 방법을 제안했다. 그 후 RAID 용어는 최신 스토리지 기술의 발전을 반영하기 위해 독립적인(independent) 디스크로 변경됐다. RAID 기술은 현재 학계의 아이디어에서 산업 표준으로 발전했으며, 오늘날 스토리지 어레이를 구현하는 데 많이 사용된다.
RAID를 구현하는 방법으로 하드웨어와 소프트웨어 두 가지가 있다. 두 방법 모두 각기 장단점이 있다.
1. 소프트웨어 RAID
소프트웨어 RAID는 호스트 기반 소프트웨어를 사용해 RAID 기능을 제공한다. 운영체제 레벨에서 구현되며, RAID 어레이를 제어하기 위해 전용 하드웨어 컨트롤러를 사용하지 않는다.
소프트웨어 RAID는 하드웨어 RAID에 비해 비용이 저렴하고 단순하다는 장점이 있다. 그러나 다음과 같은 제한이 있다.
- 성능
소프트웨어 RAID는 전체 시스템 성능에 영향을 끼친다. 이는 RAID 계산을 위해 부가적인 CPU 사이클을 사용하기 때문이다.
- 기능
소프트웨어 RAID는 모든 RAID 레벨을 지원하진 않는다.
- 운영체제 호환성
소프트웨어 RAID는 호스트 운영체제와 긴밀하게 연결돼 있다. 따라서 소프트웨어 RAID나 운영체제를 업그레이드할 때는 호환성을 검증해야 한다. 이는 데이터 프로세싱 환경의 유연성을 떨어뜨린다.
2. 하드웨어 RAID
하드웨어 RAID에서는 호스트나 어레이에 전용 하드웨어 컨트롤러를 사용한다. 컨트롤러 카드 RAID는 호스트 기반 하드웨어 RAID로, 전용 RAID 컨트롤러를 호스트에 설치하고 디스크 드라이브를 이곳에 연결한다. 제조사는 RAID 컨트롤러를 마더보드에 통합하기도 한다. 호스트 기반 RAID 컨트롤러는 많은 호스트를 사용하는 데이터 센터에는 효율적이지 않다.
외장 RAID 컨트롤러는 어레이 기반 하드웨어 RAID이다. 이는 호스트와 디스크 사이의 인터페이스로 동작한다. 호스트에 스토리지 볼륨을 제공하며, 호스트는 이 볼륨을 물리적 드라이브로 취급한다. RAID 컨트롤러의 주요 기능은 다음과 같다.
- 디스크 집합(aggregation)의 관리와 제어
- 논리적 디스크와 물리적 디스크 사이의 I/O 요청 변환
- 디스크 고장 시 데이터 복구
RAID 어레이(RAID array)는 여러 개의 디스크 드라이브와 RAID를 구현하기 위한 하드웨어로 구성된다. RAID 어레이의 디스크를 그룹화해 RAID 집합 또는 RAID 그룹이라고 하는 논리적 어레이를 형성할 수 있다.
스트라이핑과 미러링, 패리티 같은 RAID 기술은 여러 RAID 레벨을 정의하는 데 기초가 된다. 이 기술은 RAID 집합의 데이터 가용성과 성능을 결정한다.
스트라이핑(striping)은 데이터를 1개 이상의 드라이브에 저장해 드라이브를 병렬로 사용할 수 있게 하는 기술을 말한다. 여러 읽기/쓰기 헤드가 동시에 일을 하기 때문에 1개의 디스크를 사용했을 때보다 데이터를 좀 더 빠르게 처리하고 성능을 향상시킬수 있다.
RAID 집합의 각 디스크에서 정해진 개수의 연속적인 주소 디스크 블록을 스트립(strip)으로 정의한다. RAID 집합에 있는 모든 디스크의 같은 위치의 스트립을 스트라이프(stripe)라고 한다.
스트립 크기(strip size[스트라이프 깊이 stripe depth라고도 함])는 스트립에 있는 블록의 개수를 말하고, 액세스하려는 데이터가 스트립의 시작 위치에 있다고 가정하면 한 디스크에서 읽거나 쓸 수 있는 데이터의 최대량이 된다. 스트라이프의 모든 스트립은 같은 개수의 블록을 갖는다. 스트립의 크기가 작을수록 데이터를 더 작은 크기로 잘라 분산시킨다.
'IT > Storage' 카테고리의 다른 글
파일 시스템 -2- (0) | 2022.06.29 |
---|---|
미러링과 패리티 (0) | 2022.06.29 |
볼륨 매니저와 파일 시스템 (0) | 2022.06.29 |
DBMS와 호스트 (0) | 2022.06.29 |
가상화와 클라우드 컴퓨팅 (0) | 2022.06.29 |