티스토리 뷰
본 포스팅은 RAID (Redundant Array Inexpensive Disk & Redundant Array Independent Disk) Level에 관한 것입니다.
먼저 RAID에 대해 알아보겠습니다.
처음 개념이 등장할 때는 여러 개의 저렴한 디스크를 하나로 모아 고성능의 디스크처럼 사용하기 위해 나타났습니다.
하지만 현재는 꼭 저렴한 디스크라기보다 여분의 독립적인 디스크들을 하나로 모아 고 성능 혹은 고 가용성을 위한 개념입니다.
데이터를 분할해서 복수의 자기 디스크 장치에 대해 병렬로 데이터를 읽는 장치 또는 읽는 방식입니다. 1987년 캘리포니아 대학 버클리 분교의 패터슨, 깁슨, 카츠에 의해 발표되어 논문 ‘A Case for Redundant Arrays of Inexpensive Disks’에서 등장한 기술입니다. 1~5단계로 제안된 자기 기억 장치의 새로운 기술과 SLED(single large expensive disk)를 비교하여 설명하였습니다. 그 후로 여러 업체에서 제안한 0, 6, 10수준 등이 있습니다. 여러 디스크를 병렬로 연결하여 사용하는 기법으로서 접근(access) 속도와 데이터 보존 신뢰가 우수할수록 높은 등급을 받는 5단계로 구분됩니다.
다음으로 RAID의 종류에 대해 알아보겠습니다.
Hardware RAID 단위는 DISK이며 storage, array 가 대표적. 안정성이 높은 반면에 가격이 비쌉니다.
Software RAID 단위는 partition 이며 OS에서 지원. 비용이 저렴하나 신뢰성이나 속도가 하드웨어 RAID보다 떨어집니다.
세번째로 RAID Level에 대하여 설명하겠습니다.
Level 0 입니다.
- 일반적으로 디스크를 2개 이상 병렬로 연결하여 데이터를 블록(block)단위로 분산해서 읽고 쓰는 방식입니다. (장애 발생에 대비 없습니다.)
- 즉 하나의 데이터를 분할(striping) 해서 2개의 디스크에 분산 저장시킨다는 의미입니다.
- 이는 디스크 1개에 데이터를 통째로 저장하여 불러오는 것보다 빠른 속도를 보장합니다.
Level 1 입니다.
- 디스크 미러링(mirroring)을 사용하는 RAID 규격입니다.
- 미러링 이란 어떤 데이터를 하나 더 생성하여 관리하는 것으로 데이터의 안정성을 추구한다는 것입니다.
- 즉 하나의 데이터가 저장될 때마다 백업 데이터가 하나 더 생성해서 관리합니다. 최소 2개의 디스크로 구성되고, 한쪽의 디스크가 망가져도 다른 디스크에 동일한 데이터가 존재 하기 때문에 데이터 유실될 가능성이 낮습니다.
Level 2 입니다.
- 에러 검출 능력이 없는 디스크를 위해 hamming 오류정정코드를 사용합니다.
- 모든 SCSI 디스크는 에러 검출 능력을 갖고 있기 때문에 SCSI 드라이브를 사용할 경우 이 레벨은 많이 쓰이지 않습니다.
Level 3 입니다.
- RAID 0, 1 의 문제점을 보완하기위한 방식 (level0의 성능과 안정성 결합)입니다.
- RAID 0 과 같은 Striping 구성을 하고 있으며 에러 체크 및 수정을 위한 패리티 정보를 별도의 디스크에 저장합니다.
- 패리티 정보 디스크를 제외한 디스크에서 striping구성으로 묶어 사용하므로 저장용량에 서도 유리하며 패리티 정보 디스크를 통해 복구도 가능합니다.
Level 4 입니다.
- RAID3과 RAID4의 구조는 유사한구조로 차이는 RAID3은 byte단위로 나눠서 디스크에 동등하게 분산 기록하고 RAID4는 블록 단위로 나눠기록합니다.
Level 5 입니다.
- RAID3과 RAID4에서의 별도의 패리티 정보디스크를 사용함으로써 발생하는 문제를 보완했습니다.
- 문제점인 병목현상을 해결한 구성으로 패리티 정보를 하나의 디스크가 아닌 분산하여 구성하기 때문에 병목현상을 현저히 줄였습니다.
(단점이 특별히 없습니다.)
Level 6 입니다.
- RAID5와 유사한 구조로 다른 디스크들 간에 분포되어있는 2차 패리티 정보를 넣어 2개의 디스크에 문제가 생겨도 복구가 가능합니다.
(RAID5보다 안정성을 고려하는 시스템에 사용합니다.)
극단적인 성능 추구 RAID 0, 최고의 안정성을 위한 RAID 1을 선택합니다.
디스크 구성 방식은 RAID 레벨(Level)로 분류하며, 현재 쓰이고 있는 RAID 레벨은 성능에 중점을 둔 RAID 0과 안정성에 중점을 둔 RAID 1을 기반으로 다양한 방법들이 선보이고 있습니다.
RAID의 기본, 성능의 RAID 0과 안정성의 RAID 1을 선택합니다.
이론적으로는 SSD나 HDD를 더할수록 그만큼 성능과 용량이 늘어나지만, 단점으로는 자료가 나눠서 저장되므로 RAID를 구성하고 있는 디스크 중 하나에 문제가 발생한다면, 최악의 경우 모든 데이터를 날릴 수 있습니다.
이에 비해 미러링(Mirroring)으로도 불리는 RAID 1의 경우 '거울(Mirror)'이라는 이름처럼 완전히 동일한 데이터를 각각의 디스크에 저장하는 방식으로, RAID 1 구성을 위해서는 두 개 이상의 짝수 디스크가 필요합니다.
쉽게 이야기하자면 RAID 1은 디스크에 저장된 내용을 다른 디스크에 실시간 백업하는 것으로 볼 수 있는데, 미러링된 디스크 세트는 특정 디스크에 문제가 발생해도 완전히 똑같은 자료가 남아있으므로 데이터 안정성을 중시할 때 구성하는 방식입니다.
RAID 1은 그 특성상 전체 디스크중 절반의 용량을 사용할 수 없고, 쓰기 성능 향상은 기대할 수 없지만, 읽기 성능은 원본과 미러링된 디스크 양쪽에서 불러올 수 있으므로 성능 향상을 기대할 수 있습니다.
성능과 안정성을 동시에 추구한 RAID 구성은 무엇이 있을지 고민해 보아야 합니다.
앞서 설명한 RAID 0과 RAID 1이 각각 성능과 안정성을 극단적으로 추구한 방식이기 때문에 반대로 안정성과 성능면에서는 서로 부족한 모습을 보이는데, 이를 개선하기 위해 새롭게 등장한 RAID 구성 방식이 있습니다.
그 중 앞서 개발된 것이 RAID 2/ 3/ 4로, 실제 데이터를 저장하는 디스크는 성능 향상을 위해 RAID 0으로 구성하고, 여기에 데이터 복구를 위한 별도의 디스크가 추가된 형태입니다.
RAID 2는 bit 단위, RAID 3은 byte 단위, RAID 4는 block 단위로 데이터를 분산 저장하며, RAID 2는 데이터 복구를 위한 헤밍코드를, RAID 3/ 4는 페리티 코드를 이용하므로 RAID 0이나 RAID 1에서 부족했던 점들이 개선되었지만, 뒤를 이어 개선된 RAID 방식이 등장함에 따라 현재는 사장된 방식입니다. RAID 2/ 3/ 4를 밀어낸 RAID 방식은 바로 Level 5와 Level 6으로, 각각의 디스크에 데이터를 분산 저장하여 성능을 높이면서도 다른 디스크에 저장된 데이터 복구를 위한 페리티 정보를 함께 저장해 안정성을 높인 방식입니다.
이렇게 데이터와 페리티 정보가 분산 저장됨에 따라 RAID 2/ 3/ 4 방식에 비해 특정 디스크에 문제 발생시 바로 대처할 수 있는데, RAID 5는 하나의 페리티 정보를 저장하므로 하나의 디스크에 문제 발생시 대처가 가능하지만 두 개의 디스크에 문제 발생시 대처하기가 어렵습니다.
RAID 6는 페리티 정보를 두 개의 디스크에 저장하므로 두 개의 디스크 고장까지 대응할 수 있지만, 이를 위해 복잡한 연산이 필요하므로 쓰기 작업 구현이 복잡해서 일반적으로 잘 사용되지 않으며, RAID 5는 최새 세 개, RAID 6 구성에는 네 개의 디스크가 필요합니다.
RAID는 부족한 성능 보완하며 성능 한계 돌파하기 위해 반드시 필요한 기술입니다.
RAID가 처음 등장한 1980년대에는 하드디스크의 부족한 성능과 안정성을 보완하고자 하는 목적이 강했다면, 최근 데스크탑에서의 RAID는 인터페이스 제한 때문에 정체된 스토리지 성능의 한계를 돌파하고자 하는 목적이 더 커졌고, 별도의 RAID 확장카드가 필요했던 초기와 달리 메인보드 칩셋에서도 기본 지원하면서 접근성도 높아졌습니다.
최근 RAID의 또 다른 변화라면 PCIe 기반 스토리지를 이용한 SSD 구성이 가능해졌다는 것으로, 이는 인텔 9 시리즈 칩셋과 함께 등장해 인텔 100 시리즈 칩셋에서 본격적으로 지원되고 있는 M.2 인터페이스의 등장에 힘입은 것으로 판단됩니다.
M.2 SSD는 SATA와 PCIe 기반 스토리지 구현이 가능한데, 그렇다면 성능 향상을 위해 등장한 PCIe 기반 M.2 SSD를 이용해 RAID를 구성해보면 그 성능은 어느 수준에 다다를지 궁금해집니다.
적재적소에 비용과 성능 및 안정성을 고려한 RAID 구성에 도움이 되었으면합니다.
다음에 뵙겠습니다.
고맙습니다.
'⑥ 네트워크, 운영체제 > ⓞ OS' 카테고리의 다른 글
[CPU 과점유] SunOS 편 (0) | 2018.07.19 |
---|---|
[CPU 과점유] LINUX 편 (0) | 2018.07.19 |
[ETC] OS별 TCP Trace Dump 기록 방법 (0) | 2018.06.18 |
[ETC] OS Hostname Resolution (0) | 2018.06.08 |
[ETC] OS Level - Thread 별 CPU 점유 정보 (0) | 2018.03.25 |
- Total
- Today
- Yesterday
- JEUS7
- Docker
- API Gateway
- git
- JEUS6
- TA
- node.js
- webtob
- 쿠버네티스
- JBoss
- Architecture
- 마이크로서비스
- nodejs
- jeus
- SA
- kubernetes
- Da
- 마이크로서비스 아키텍처
- apache
- k8s
- 오픈스택
- 아키텍처
- SWA
- openstack token issue
- openstack tenant
- aa
- aws
- MSA
- OpenStack
- wildfly
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |