계속 헷갈려서.. 한번 써봐야겠음




# 스토리지의 문제점 2가지

1. CPU나 Memory 속도를 따라가지 못해 병목현상 유발

2. 드라이브 고장 시 데이터 날림

=> "Fault Tolerance"를 높이고자 함


=> RAID로 해결

- Redundant Array of Inexpensive Disks

     or

- Redundant Array of Independent Disks (최근)



# DIsk Array 

: 여러 하드웨어 디스크를 배열로 하나 혹은 하나이상의 논리 드라이브로 구성


# RAID 구성 방법

- 하드웨어적 구성 : 레이드 구성을 위해서는 레이드 컨트롤러가 필요하고 레이드를 구성할 시 데이터 처리에 있어 부하가 걸리므로

                         별도의 어댑터 형태의 컨트롤러를 사용. 이런 레이드 컨트롤러에는 프로세서 및 메모리가 따로 있으며 가격이 비쌈.

                         어댑터 형태의 컨트롤러 외에도 메인보드에 내장되어 나오기도 하는데(SATA), 지원여부에 대한 사전확인이 필요.


- 소프트웨어적 구성 : 별도의 레이드 컨트롤러없이 소프트웨어적으로 레이드를 처리하여 안정성이 하드웨어적인 레이드 구성보다는 떨어짐

                             





# RAID 0

Striping, 데이터를 배열 드라이브에 분산시켜 저장

- 단순 round-robin 방식을 사용 (with out Fault Tolerance)

- 단순히 하나의 디스크로 보여지도록 만들어 줌


그림. 위키

- 최소 2개의 드라이브가 있어야지 적용이 가능

- 같은 모델, 같은 용량의 디스크 준수

- 데이터 분산방식으로 배열드라이브의 전체 용량이 하나로 통합

- 입출력 병렬처리로 인하여 속도 향상(RAID 구성 중 가장 빠른 속도)

- parity데이터를 저장하거나 미러링하지 않음. 즉 하나의 디스크에 문제가 발생하면 나머지 디스크에 저장된 데이터를 쓸 수 없음(복구 불가능)




# RAID 1

Mirroring&Duplexing, 한 디스크 드라이브에 저장된 데이터를 다른 배열 드라이브로 복제

- disk mirroring을 사용하여 데이터 데스크에 저장된 모든 데이터들을 pair를 이루고 있는, 반사 디스크 같은 위치에 복사

- 거의 완변한 Fault Tolerance를 제공하지만 가격이 높음

- 신뢰도가 높은 시스템에서 사용


그림. 위키

- 2n개씩 구성

- 두개의 디스크에 똑같은 데이터를 저장

- 일정한 수준의 데이터 중복을 허용

- 하나의 디스크 고장시 복제된 데이터로 복구가 가능

- 일반적으로 입출력 성능이 저하됨. 

- HDD 사용시, 데이터에 더 가까운 배열 드라이브 헤더가 더 빨리 데이터에 액세스하므로 탐색 및 회전대기 시간이 줄어듬

- 구성한 디스크 용량은 하나의 디스크 용량과 동일(중복이므로)




# RAID 2

: Each bit of data word is written to a data disk drive


- 비트단위 인터리빙 방식을 사용 : 데이터를 각 디스크에 비트 단위로 분산 저장

- Hamming code를 이용한 오류 검출 및 정정 방식을 사용

단점! 필요한 검사 디스크들의 수가 많아서 가격이 비쌈

주요 용도! 오류가 많이 발생하는 환경에서 사용


=> 현재 거의 사용하지 않음




# RAID 5

: Parity, Striping, 배열 드라이브에 패리티 데이터 저장하여 데이터의 손실여부를 점검 할 수 있도록하며 RAID 0처럼 Striping 지원

- RAID 4의 문제점을 보완하기 위해 패리티 블록을 라운드-로빈 방슥으로 분산 저장

=> 병목현상을 해소하고, 쓰기 동작들의 병렬수행이 가능

- but, small write problem : 어느 한 블록만 갱신하는 small write의 경우 네번의 디스크 액세스가 필요하기 때문에 성능 저하가 발생


그림. 위키

- 최소 3개의 드라이브 필요

- striping 기능으로 성능을 향상하며, 패리티데이터를 저장하여 RAID 1처럼 일정수준의 중복을 제공

- ahems eltmzmdp voflxl wjdqh wjwkd

- 디스크가 고장이나도 데이터 손실은 없음

- 다시 복구하는데 오래걸림. 일반적으로 작은 용량에 추천

- 3개의 1짜리 드리이브를 RAID 5로 구성시. 2만큼의 용량을 제공

- 가장 널리 사용됨


* RAID 1과 RAID 5의 비교

- RAID 1 : 읽기와 작은 쓰기가 많은 환경에 적합하고 데이터를 완벽하게 보관할 수 있음

- RAID 5 : 용량과 비용면에서 보다 우수하고, 응용이나 큰 쓰기가 필요한 시스템에 적합함(가격대비성능 굳)




# RAID 6

: 패리티데이터를 모든 디스크에 저장하며 2차 패리티데이터도 저장

- 두개의 패리티를 따로 다른 디스크에 저장

- 데이터를 디스크에 나누어 저장

- N개의 데이터 디스크와 2개의 패리티 디스크가 필요


- 데이터 가용성이 높음

: 데이터가 손실되려면 3개의 디스크가 동시에 불량이 있어야 함

: 쓰기 문제가 심각해 짐


- 2개의 디스크가 고장이나더라도 복구가 가능

- 성능이슈 및 사용가능한 디스크 공간이 그만큼 줄어듬




# RAID 3, 4

Parity, 패리티 데이터를 별도의 디스크에 따로 저장

 (하나의 데이터를 디스크 수대로 나누어 여러개의 디스크에 저장)

- 패리티비트 p = b1 XOR b2 XOR b3 XOR b4 (보통 짝수 패리티 사용)


- 최소 3개의 드라이브 필요

- RAID 3 : Byte 단위

- RAID 4 : Block 단위 (속도 장점)

- Parity Disk에 고장나면 복구가 불가능

- Disk 1,2,3 / Disk 4의 속도차이로 병목현상 발생의 가능성이 있음


=> 장점 : 병렬 데이터 read/write가 가능하여 디스크 액세스 속도 향상

단점 : write 동작 때마다 패리티 비트를 갱신할 필요가 있음

별도의 패리티 정보가 저장되어있는 패리티 디스크를 읽어야 하므로 여러번 액세스를 해야함

(원래 데이터 읽기, 원래 패리티 읽기, 새로운 데이터 쓰기, 새로운 패리티 쓰기) 

=> 디스크 수에 상관없이 한 블럭 갱신 시 네번의 디스크 액세스가 필요




# RAID DP(Double Parity)

: 1차, 2차 패리티데이터를 여러 드라이브에 분산으로 저장하지 않고, 2개의 드라이브에 패리티데이터를 저장



# RAID 10

: RAID 0, RAID 1 각각의 장점만 가지고 결합

- 4개의 드라이브 필요

- 2개씩 RAID 1로 구성(총 2개), mirroring이 되어 복구가 가능

- 2개의 RAID 1을 RAID 0으로 구성, RAID 1에 비하여 용량이 2배

- 용량 추가시에는 RAID 1을 더 추가

- RAID 1로 구성된 디스크가 고장나도 정상동작이 가능

- 용량은 줄지만 가용성이 높음




# RAID 0+1

: RAID 10과 반대, RAID 0으로 먼저 구성한 후 구성된 묶음들을 RAID 1 방식으로 mirroring 시킴

- Striping, Mirroring을 동시에 사용

- 속도와 안정성 

- mirroring의 이유로 RAID 10이 더 많이 쓰임





# 현재 테스트로 사용중이던 intel 서버에서 보드에서 RAID를 지원하지만 리눅스용 드라이버를 제공하지 않음.

그래서 BIOS에서 보드에서 지원하는 RAID 기능 부분을 disable 시키고 설치시 파티션 부분에서 software raid 0로 설정









'System > Etc.' 카테고리의 다른 글

[OS기초] CPU Scheduling  (0) 2015.09.22
[OS기초] Process & Thread  (0) 2015.09.21
[OS기초] 개요  (0) 2015.09.17
KVM/KSM  (0) 2015.08.13
마이크로커널운영체제  (0) 2015.06.25

+ Recent posts