10-4.[os] RAID
RAID의 개요
- 개인 데이터의 크기가 급격히 증가(디카, 폰카)
- 데이터를 저장장치에 보관할 때는 자주 백업을 해야 함
RAID
- Redundant Array of Independent Disks (레이드)
- 자동으로 백업을 하고 장애가 발생하면 복구하는 시스템
- 메모리가 아닌 값싼 디스크를 이용함
- 동일한 규격의 디스크를 여러개 모아 구성함
장애 발생 시 복구용으로 사용
하나의 원본 디스크와 같은 크기의 백업 디스크에 같은 내용을 동시에 저장 하고, 하나의 디스크가 고장 났을 때 다른 디스크를 사용하여 데이터를 복구
- 미러링(mirroring): 디스크에 거울처럼 똑같은 내용을 저장한다
- 여러 디스크에 데이터를 동시에 저장하여 데이터의 입출력 속도를 높이는 방식
- 예) A, B, C, D 4개의 데이터 저장
- 디스크 1개일 때: 작업 4번
- 디스크 4개일 때: 각가의 디스크에 1개씩 4개의 데이터 동시 저장
- 스트라이핑(striping): 데이터를 여러 조각으로 나누어 보냄
RAID 0
- 순수한 스트라이핑
- 데이터 전송속도가 빠름
- 장애 발생 시 데이터 복구 기능 없음
RAID 10
- 미러링 + 스트라이핑 동시 지원
- RAID 1+0
RAID 1
- 같은 데이터 2군데에 저장
- 저장하려는 데이터만큼의 디스크 용량 추가
RAID 2, 3, 4, 5
- 더 적은 용량으로도 데이터 복구 가능
- 하드 가격이 싸지면서 잘 안 쓰게됨
RAID 0 (스트라이핑)
- 병렬로 연결된 여러 개의 디스크에 데이터를 동시에 입출력 할 수 있도록 구성
- 스트라이핑: 데이터를 여러갈래로 찢어 저장
- 여러 개의 데이터를 여러 디스크에 동시에 저장하거나 가져옴
- 이론적으로는 디스크 1개 일반 시스템보다 4배 빠름
- 장애 발생시 복구 기능 없음
- 입출력이 빨라 기업용 제품, 개인용 컴, 노트북 고급기종에 많이 씀
RAID 1 (미러링)
- 하나의 데이터를 2개의 디스크에 나누어 저장
- 장애 시 백업 디스크로 활용
- 같은 크기의 디스크 최소 2개 이상 필요함
- 짝수 개의 디스크로 구성됨
- 장애 발생 시 데이터 복구 가능
- 비용 증가
- 같은 내용 2번 저장해서 속도 느려짐
- 데이터 입출력이 없는 시점에 백업이 이루어지도록 조정하는 게 좋음
RAID 2
- 디스크에 대해 오류 교정 코드(ECC)를 추가
- 오류가 발생하면 코드를 이용하여 디스크 복구
- 검출, 교정, 복구
오류 검출 코드:
- 오류가 발생했는지 확인할 수 있는 코드
- 예) 패리티 비트
오류 교정 코드:
- 오류가 발생했는지 확인하는 동시에 오류를 교정할수 있는코드
- 예) 허밍 코드
일반적인 하드디스크: 오류 검출코드가 없음
메모리: 패리티(오류 검출 코드), 교정은 불가
RAID 2: 허밍코드(오류 교정 코드), 검출 + 교정
- 하드디스크 저장단위: 블록
- RAID 2의 저장단위: 비트
비트를 분리해서 여러개의 디스크에 나누어 저장
n개의 디스크에 대해 오류 교정 코드를 저장하기 위한 n-1 개의 추가 디스크 필요
- RAID 1보다는 작은 저장공간을 요구하지만 오류 교정 코드를 계산하는 데 많은 시간을 소비
- 비트 단위로 데이터를 나누어 저장
RAID 3
- 오류 검출 코드인 패리티 비트를 사용하여 데이터를 복구
- 교정 x
- 짝수 패리티 비트는 1 의 총수를 짝수로 만듦
- 홀수 패리티 비트는 1 의 총수를 홀수로 만듦
- 디스크 4개 있고 별도의 디스크 하나에 짝수 패리티 비트 보관
- 세번째 디스크에 장애가 생겨서 복구해야함
- 디스크 1의 개수(2개) + 짝수 패리티 비트(1) = 3 -> 짝수로 맞추기 위해 3번째 디스크는 1일 것
- 총합이 짝수이면 짝수 패리티 비트 -> 0
총합이 홀수이면 짝수 패리티 비트로 1을 더해줘야하기 때문에 -> 1
데이터를 읽거나 쓸 때 패리티 비트를 구성하기 위해 모든 디스크가 동시에 동작해야 함
- 데이터를 여러 개의 디스크에 나누어 저장
- 섹터 단위로 데이터를 나누어 저장
- 디스크는 섹터 단위로 읽기 때문에 어떤 섹터에 오류가 있는지 없는지를 알 수 있 다
‘N-way 패리티 비트 방식'
- 오류검출에 사용하는 패리티 비트를 여러 섹터끼리 묶어서 구성
- 오류가 없는 섹터를 이용하여 오류가 있는 섹터의 데이터 복원
- 데이터 디스크가 아닌 별도의 디스크에 보-관함으로써 장애 발생 시 오류를 복구
- 추가되는 디스크의 양은 4개의 디스크당 1개 정도
- 추가되는 디스크의 양은 적지만 N-way 패리티 비트를 구성하는 데 필요한 계산량이 많다
RAID 4
- RAID 3과 같은 방식이지만 처리하는 데이터가 블록단위
- 데이터를 하나의 디스크에 블록 단위로 저장
- 패리티 비트를 블록과 연결하여 구성
- 데이터가 저장되는 디스크와 패리티 비트가 저장되는 디스크(진한 초 록색)만 동작한다
- 패리티 비트를 추가하기 위한 계산량이 많다
- 4개의 디스크당 1개의 추가 디스크만 있으면 됨
- 데이터 병목 현상있어서 안 씀
- 모든 패리티 비트가 하나의 디스크에 저장되기 때문에 입출력이 일어날 때마다 패리티 비트 디스크 에 데이터가 저장되어 병목 현상이 발생
- 패리티 비트가 저장된 디스크와 다른 디스크에서 동시에 장애가 발생할 경우 복구가 안 됨
RAID 5
- RAID4에서 병목 현상 해결
- 패리티 비트가 있는 디스크가 고장 나면 복구가 어렵다는 문제도 해결
- 패리티 비트를 여러 디스크에 분산
- 패리티 비트를 해당 데이터가 없는 디스크에 보관
- 예) 데이터 A 의 패리티 비트를 데이터 A가 없는 5번 디스크에 보관
- 한 디스크에 장애가 발생하면 다른 디스크에 있는 패리티 비트를 이용하여 데이터를 복구
- 한 디스크에 장애가 발생했을 때는 복구가 가능하지만 디스크 2개에 동시에 장애가 발생했을 때는 복구가 불가능
- 디스크 2개에 동시에 장애가 발생하면 패리티 비트가 사라지기 때문
RAID 6
- RAID 5와 같은 방식이지만 패리티 비트가 2개
- 디스크 2개의 장애를복구할수 있다
- 계산량이 더 많다
- 4개의 디스크당 2개의 추가 디스크가 필요하다
RAID 10
하드디스크의 가격이 내려감 -> 추가되는 디스크의 수보다 빠른 입출력과 복구에 중점을 둠
빠른 입출력이 장점인 RAID 0 (스트라이프) + 복구 기능을 가진 RAID 1 (미러링) = RAID 10
- RAID 10 = RAID 1+0
- RAID 0+1: RAID 0 (스트라이프) 먼저하고 RAID 1 (미러링)을 함
- RAID 10: RAID 1 (미러링) 먼저하고 RAID 0 (스트라이프)를 함
- 디스크를 RAID 0으로 먼저 묶으면 RAID 0+1 이 되고 RAID 1로 먼저 묶으면 RAID 10이 됨
- 복구의 효율성 문제로 RAID 10을 더 많이 씀
공통
- 병렬로 데이터를 처리하여 입출력 속도를 높일 수 있음(스트라이프)
- 장애 발생 시 미러링된 디스크로 복구가 가능
차이점
- RAID 0+1: 장애가 발생 시 복구하기 위해 모든 디스크를 중단
- RAID 10: 일부 디스크만 중단하여 복구
-예) 데이터 A복구
- RAID 0+1
- 데이터 A 가 RAID 1로 묶인 반대편 RAID 0 구역에 있음
RAID 0은 복구의 기능이 없으므로 RAID 1의 입장에서는 RAID 0으로 묶인 디스크들이 하나의 디스크로 인식됨
RAID 10
2개의 디스크가 RAID 1로 묶여 있기 때문에 반대편에 있는 디스크를 멈추지 않아도 복구가 가능
RAID 10이 더 많이 사용되는데, RAID 10을 사용하려면 최소 4개의 디스크가 필요
RAID 50과 RAID 60
같은 RAID를 0으로 묶어 성능을 높이는 방식
5 패리티비트 1개
- 6 패리티비트 2개
0 스트라이프
5랑 6은 추가되는 디스크의 수가 적지만 입출력 시 계산량이 증가