04 RAID(Redundant Array of Independent Disks)
; 디스크를 배열 구조로 연결하여 용량을 늘리고 액세스 속도를 크게 향상시킬 목적으로 만들어진 기억장치
- 등장 배경 : 디스크 액세스 시간의 대부분이 기계 장치들이 동작하는 시간이라 속도를 높이는데 한계가 있어서
- 처음에는 명칭이 Redundant Array of Inexpensive Disks였다. 그러나 저장 기술의 발전으로 용량 대비 가격이 하락되어 비용보다 데이터의 안정성, 오류 정정, 디스크 장애에 의한 데이터의 손실 방지 측면이 강조되어 Independent로 바뀌게 됨
RAID에 사용되는 기술
- 스트라이핑 : 데이터를 여러 조각으로 분할하여 여러 개의 디스크에 분산해서 저장하는 기술
- 미러링 : 하나의 데이터를 디스크 2개에 중복 저장하는 것
장점 : 중복 저장으로 인해 데이터의 안정성을 극대화한 방식
단점 : 용량 낭비가 심하다.
- 패리티 : 데이터의 무결성을 확인하는 오류 체크 기술로, 데이터에 장애가 발생하면 저장된 패리티를 통해 데이터 복구 가능
[1] RAID-0
; 배열 내 모든 물리 디스크에 데이터를 나누어 저장(스트라이핑)
위의 그림처럼 데이터가 물리 디스크의 블록들로 나누어 진다. (보일 때는 하나의 논리 디스크에 저장된 것처럼 보임) 이 블록들은 배열 내의 디스크에 round-robin 방식으로 저장됨
배열 관리 소프트웨어
; 디스크 서브 시스템이나 호스트 컴퓨터에서 실행되며 논리 디스크 공간과 물리 디스크 공간 사이를 매핑
장점
- 액세스 속도를 높일 수 있다.; 파일 하나의 데이터 블록을 여러 디스크에 분산하여 저장하면, 각 블록을 동시에 읽거나 쓸 수 있어 액세스 속도가 향상됨
- 데이터 전송 속도를 높일 수 있다.
- 병목 현상을 줄일 수 있다.; 디스크 하나에 액세스가 집중되지 않아서
단점
- 데이터의 신뢰성이 낮다.; 디스크 하나라도 결함이 발생하면 전체 데이터가 손실 되기 때문에
⇒ 그래서 빠른 액세스 속도를 요구하는 응용 분야에 적합함
MTTF
; 어떤 하드웨어나 구성 요소가 사용을 시작해 고장 날 때까지 동작한 시간의 평균치
ex) MTTF = 24,000시간 ⇒ 1,000일마다 한 번씩 고장이 발생한다는 것
일반적으로 N개의 장치는 단일 장치에 비해 1/N의 신뢰성을 갖는다.
배열 내 디스크들의 MTTF가 동일하다고 가정했을 때, 디스크 배열의 MTTF는
단일 디스크의 MTTF/배열 내 디스크 수이다.
[2] RAID-1
; 디스크의 반을 데이터 디스크로, 나머지 반을 미러 디스크로 사용하는 방식
데이터 디스크에는 데이터 블록이 스트라이핑 기술로 분산 저장되며, 같은 방법으로 미러 디스크에도 저장됨
쓰기 동작은 느린 디스크의 쓰기가 완료 될 때 끝나고, 읽기 동작인 읽기 시간이 더 짧은 디스크에서 원하는 데이터를 읽는다.
장점
- 신뢰성이 높다. (실시간으로 복구할 수 있다.); 데이터 디스크에 저장된 블록에 오류가 발생해도 미러 디스크에 동일한 블록이 저장되어 데이터를 복구할 수 있다.
단점
- 비용이 많이 든다.; 사용 가능한 용량이 전체 디스크의 반으로 줄기 때문에
⇒ 시스템 소프트웨어나 중요한 파일을 저장하는 용도로만 사용함
[3] RAID-2
; 병렬 액세스 기술을 통해, 검사 디스크에서 해밍 코드를 사용해 오류를 검사하고 정정하는 방식
이때 필요한 검사 디스크의 수는 아래 식을 통해서 구한다.
ex) 데이터 디스크가 4개인 경우, 검사 디스크는 3개가 필요하다.
장점
- RAID-1보다 디스크가 적게 필요함
단점
- 2비트 오류가 발생하면 검출만 가능
- 가격이 높음
- 복잡함
⇒ 거의 사용되지 않는다.
[4] RAID-3
; 패리티 디스크 하나만 사용하여 오류 검출을 진행하는 방식
병렬 액세스 기술을 사용하며, 데이터는 바이트 단위로 스트라이핑 되어 모든 데이터 디스크에 분산 저장됨
오류를 정정하는 과정
If) 2번째 데이터 디스크에 오류가 발생했다면?
P = B0 XOR B1 XOR B2 XOR B3이고, 양 변에 XOR P XOR B2 연산을 한다.
이때 P XOR P = 0이고 B2 XOR B2 = 0이다.
이를 바탕으로 정리를 하면, B1 = P XOR B0 XOR B2 XOR B3이 된다.
ex) B0B1B2B3 = 1101일 때, p = 1이 된다.
여기서 B1이 오류가 발생하면 B1 = 1 XOR 1 XOR 0 XOR 1이기 때문에 1임을 알 수 있고 복구가 가능하다.
장점
- 디스크 액세스 속도가 높다.; 데이터 디스크에서 데이터를 병렬로 전송하므로
단점
- 쓰기 시간이 길어진다.; 쓰기 동작 때마다 패리티 블록을 갱신해야 하므로
[5] RAID-4
; 하나의 파일을 구성하고 있는 데이터 블록이 데이터 디스크에 블록 단위로 스트라이핑 되어 저장됨
데이터 디스크에 저장된 블록에 대한 패리티 플록을 패리티 디스크에 저장
RAID-3과의 차이점
RAID-3 : 블록 크기가 작아 읽기와 쓰기 동작에서 모든 데이터 디스크를 액세스 함
RAID-4 : 블록 크기가 상대적으로 커 데이터 디스크 하나에만 저장되므로 여러 개의 액세스 요구를 동시에 처리 가능
단점
- 병목 현상이 발생; 데이터 디스크의 블록을 쓸 때마다 패리티 디스크가 두 번씩 액세스 되어 패리티 디스크에 병목 현상이 발생함
병목현상 이해
B1을 B1'로 갱신하는 경우
기존
왼쪽이 오른쪽처럼 변하면서 3번의 읽기(B0, B2, B3)와 2번의 쓰기(새로운 데이터 및 패리티) 동작이 필요
변한 내용
2번의 읽기(원래 데이터, 원래 패리티), 2번의 쓰기(데이터 쓰기, 새로운 패리티 쓰기) 동작만 필요하게 됨. 이때 패리티 디스크에 2번 액세스가 되고, 패리티 디스크는 하나뿐이기 때문에 병목 현상이 발생한다.
[6] RAID-5
; 하나의 파일을 구성하는 데이터 블록이 모든 디스크에 블록 단위로 스트라이핑 되어 저장됨.
RAID-4와 달리, 패리티 블록도 모든 데이터 디스크에 분산하여 저장함.
- 패리티 블록은 데이터 디스크에 라운드-로빈 방식으로 저장됨
장점
- RAID-4에서 나타나는 패리티 디스크의 병목 현상이 완화됨
- 쓰기 동작을 병렬로 수행 가능 → 액세스 요구가 모든 디스크에 적절히 분산됨
단점
- 디스크 2개가 고장날 경우에는 복구가 불가하다.
⇒ 블록 크기 및 입출력 요구의 패턴에 관계없이 좋은 성능을 나타내 가장 널리 사용되는 방식
[7] RAID-6
; RAID-5와 방식은 같지만, 신뢰성을 높이기 위해 두 가지 패리티 정보를 사용한다.
- P는 RAID-4와 RAID-5에서 사용한 XOR 연산을 이용
- Q는 다른 종류의 패리티 정보
장점
- 디스크 2개에서 오류가 발생해도, 복구가 가능하다
단점
- RAID-5보다 쓰기 성능은 떨어진다; 쓰기 동작을 수행할 때마다 패리티 블록 2개를 갱신해야 하므로
[8] RAID-01과 RAID-10
; RAID-0과 RAID-1의 복합 구성(스트라이핑 + 미러링)
[9] RAID 방식 특성 비교
05 SSD
; 하드 디스크와 달리 자기 디스크가 아닌 반도체 메모리를 내장하고 있어, 하드 디스크보다 빠른 속도로 데이터의 읽기와 쓰기가 가능하다.
장점
- 물리적으로 움직이는 부품이 없어 작동 소음이 없음
- 전력 소모가 적음
- 핸드폰에 사용할 시 배터리 유지 시간을 늘릴 수 있음
[1] SSD 내부 구조
- NAND 플래시 메모리 : PC와 연결되는 인터페이스(연결 포트)와 데이터 저장용
- DRAM 캐시 : 외부 장치와 SSD 간의 처리 속도 차이를 줄여 주는 버퍼
- SSD 컨트롤러 : 인터페이스와 메모리 사이의 데이터 교환을 제어
모든 것을 관장하는 핵심 부품!
; NAND 플래시 메모리에 데이터 저장 후 다시 데이터를 읽는 과정을 관장함
cf) SSD는 램 기반도 존재하는데, 램은 전원이 꺼지면 데이터가 모두 사라진다는 단점 때문에 잘 사용되지 않는다. 일반적인 SSD는 플래시 메모리 기반을 지칭한다.
[2] SSD의 메모리 구조
; NAND 플래시 메모리 칩을 여러 개 묶어 하나의 공간으로 사용함
페이지가 모여 블록이 되고, 블록이 모여 플레인이 되고, 플레인이 모인 것이 NAND 플래시 메모리 칩
- 페이지 : 데이터를 저장하는 최소 단위로 데이터 읽기와 쓰기의 기본이 됨(하드디스크의 섹터와 비슷함)
- 블록 : 지우기의 최소 단위(하드디스크의 트랙과 비슷함)⇒ SSD는 블록과 페이지의 묶음
[3] 플래시 변환 계층과 웨어 레벨링
플래시 변환 계층
; 섹터 주소(논리 주소)를 매핑 테이블을 통해 물리 블록과 페이지 주소로 변환해 NAND 플래시의 페이지에 도달하게 해주는 것
⇒ 이를 통해 섹터 기반의 파일 시스템, 운영체제, 프로그램들이 SSD를 기존 하드 디스크처럼 사용 가능
플래시 변환 계층 구조
- SSD 사용 시 미들웨어인 플래시 변환 계층을 두고 통신함
- 운영체제나 파일 시스템은 SSD의 물리 영역에 관여하지 않고, 모든 작업은 SSD 컨트롤러에서 해결
- NAND 플래시 메모리를 직접 다루지 않음
웨어 레벨링과 가비지 컬렉션
웨어 레벨링
; SSD의 플래시 변환 계층에서 모든 페이지를 골고루 쓰게 하는 것
→ 특정 페이지에 쓰기가 집중될 때 해당 페이지가 포함된 블록 수명이 짧아지는 문제를 해결하기 위해서
페이지 레지스터를 통해 SSD에 포함된 페이지마다 몇 번의 재기록 작업이 이루어졌는지 관리한다. 그럼 플래시 변환 계층은 페이지 레지스터의 재기록 횟수를 참고해 덜 사용된 페이지 위주로 기록 작업을 수행할 수 있도록 한다.
가비지 컬렉션
; 웨어 레벨링 과정 반복 시 생기는 쓰레기 페이지를 한 번에 처리하는 과정
- 점선 화살표 : 카피백 페이지(특정 블록의 페이지를 다른 블록으로 복사하여 유효한 페이지를 한 곳에 모으는 것)
이때 웨어 레벨링과 기비지 컬렉션은 전체 공간이 데이터로 채워지는 경우(더티 상태)에는 원활하게 수행되지 않는다. 이에 오버 프로비저닝과 같은 예비 공간을 두어 웨어 레벨링, 가비지 컬렉션, 배드 블록 관리 등 SSD 운영을 위한 핵심 기능이 어떠한 상태에서도 원할하게 작동될 수 있도록 한다.
- 내부 오버 프로비저닝 : 출시될 때부터 SSD에 내장되어 오버 프로비저닝 전용으로 사용됨
- 외부 프로비저닝 : 데이터 공간의 일부를 관리 프로그램을 통해 수동으로 설정하거나, 데이터 공간의 일부가 미리 설정된 조건에 맞으면 자동으로 해당 공간을 오버 프로비저닝 공간으로 사용함
Uploaded by Notion2Tistory v1.1.0