보조기억장치와 RAID

Hansu Park·2023년 9월 4일
0

Computer-Science

목록 보기
1/8

오늘날 우리가 사용하고 있는 많은 컴퓨터들은 대량의 데이터를 저장하기 위해 HDD, SSD, 플래시 메모리등의 보조기억 장치를 활용한다. 이들에 대해 알아보자.

하드 디스크

하드 디스크(HDD; Hard Disk Drive)는 자성을 이용하여 데이터를 저장한다. N극과 S극이 각각 0과 1의 역할을 대신한다.

하드 디스크 구성 요소

하드 디스크의 구성 요소에 대해 알아보자. 이러한 구성 요소들의 상호작용이 하드 디스크의 접근시간 즉, 성능에 영향을 미치기 때문에 이들을 이해하는 것이 중요하다.

하드 디스크의 생김새는 아래와 같은데,

(하드 디스크의 생김새)

실질적으로 데이터가 저장되는 원판을 플래터라고 하며, 원판을 회전시키는 요소를 스핀들이라고 한다.

데이터 읽고 쓰는 요소

이제 데이터를 읽고 쓰는 요소에 대해 알아보자.

데이터들은 헤드와 디스크 암에 의해 읽고 쓰인다. 헤드는 실질적으로 데이터를 읽는 부품이며, 디스크 암은 헤드를 원하는 위치로 이동시키는 부품이다. 이후 다루겠지만, 위치를 이동하는 방법이 접근 시간에 유의미한 영향을 미친다.

하드 디스크 전송 단위

플래터가 데이터를 전송하는 단위에 대해 알아보자.

(플래터의 모습)

플래터는 여러 동심원으로 구성되어 있고, 그들 중 하나의 원을 트랙이라고 한다. 트랙을 여러 조각으로 나누었을 때 하나의 조각을 섹터라고 한다. 이 때 섹터가 디스크에 있어 가장 작은 전송 단위이다.

(실린더의 모습)

하드 디스크는 여러 겹의 플래터로 구성되어 있고, 같은 트랙 위치를 모아 실린더라고 한다. 실린더에는 연속된 정보를 보관하는데, 이는 같은 트랙 위치는 디스크 암을 움직이지 않고도 데이터에 접근할 수 있기 때문이다.

디스크 암을 움직이지 않는 것이 중요한 이유는 이러한 요소들이 데이터 접근 시간을 결정하기 때문이다.

데이터 접근 시간

데이터 접근 시간은 크게 3가지로 나눌 수 있다.

  1. 탐색 시간: 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
  2. 회전 지연: 헤더가 있는 곳으로 플래터를 회전시키는 시간
  3. 전송 시간: 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간

데이터 접근 요청을 어떤 순서로 할건지를 조정하여 성능을 향상시킬 수 있다.
일반적으로 현재 헤더위치와 가까운 요청부터 처리하여 성능 향상을 꾀한다.
자세한 내용은 Disk Scheduling Algorithms를 참고하자.

기타

제프 딘이 2010년에 공개한 프로그래머가 꼭 알아야 할 컴퓨터 시간들에 따르면,
하드 디스크 탐색 시간은 0.1초, 1MB를 순차적으로 읽는 시간은 0.3초로 조사되기도 했다.

추가적으로 하드 디스크의 작동영상이 궁금하다면 유튜브 링크를 참고하자.

플래시 메모리

플래시 메모리(Flash memory)는 반도체 기반으로 전기를 이용하여 데이터를 저장한다. 하드 디스크와 비교하였을 때, 실린더를 회전하거나 암을 움직이는 동작이 없어 접근 속도가 빠르다. USB, SD카드, SSD를 비롯하여 ROM의 대체로도 사용되는 등 많은 전자 제품에 사용된다.

플래시 메모리는 근본적으로 마모 현상이 존재하여, 데이터 기록 횟수에 제한이 있다. 즉 수명이 존재한다. 이를 개선하기 위하여 데이터 접근을 골고루 하는 마모 평준화 기술을 이용하기도 한다.

플래시 메모리의 단위

(플래시 메모리의 단위 모습)

플래시 메모리는 셀 < 페이지 < 블록 < 플레인 < 다이 순서로 단위를 가지고 있다.

플래시 메모리 타입

한 셀에 저장할 수 있는 비트 수에 따라 SLC, MLC, TLC, QLC 등으로 나뉜다. (각각 1,2,3,4 비트를 저장할 수 있다.)

구분SLCMLCTLC
셀당 저장 가능한 bit123
수명길다.보통.짧다.
R/W 속도빠르다.보통.느리다.
용량 대비 가격높다.보통낮다.

상황(가격이 중요한지, 속도가 중요한지)에 따라 타입을 선택하며, 일반적인 컴퓨터에서는 MLC나 TLC를 사용한다.

실제 판매중인 SSD를 통해 TLC를 사용하는 것을 확인할 수 있다.

(다나와에 나와있는 삼성전자 SSD 모습)

SLC 캐싱 기술이라고 하여, 캐싱을 이용해 TLC를 SLC처럼 사용하는 기술도 존재한다. 참고: DRAM 캐시와 SLC 캐싱

플래시 메모리 상태

플래시 메모리는 Free, Valid, Invalid라는 3가지 상태를 가진다.

Free는 비어 있음을, Valid는 데이터가 저장되어 있음을 나타낸다. Invalid는 쓰레기 값을 나타내는데 Invalid 상태가 별도로 존재하는 이유는 읽기, 쓰기 작업의 단위와 삭제 작업의 단위가 다르기 때문이다.

플래시 메모리는 읽기, 쓰기 작업은 블록 단위로 이루어지고 삭제 작업은 더 큰 단위인 페이지 단위로 이루어진다. 따라서 아래와 같이 A를 A'로 변경하고자 한다면, A만 삭제하는 것이 불가능하기에 A'를 저장하고 A를 Invalid 상태로 만들어 A를 유효하지 않도록 만든다. (플래시 메모리는 덮어쓰기도 불가능하다.)

(Invalid 상태가 된 모습)

이렇게 존재하게 되는 Invalid 상태는 용량 낭비를 초래한다.

다행히도 GC(Garbage collection)에 의해 정리할 수 있는데 GC의 동작 방식은 아래와 같다.

(GC의 동작방식)

하나의 블록에서 유효한 페이지들만 복사한다. 이는 Java의 Garbage collection도 유사한 방식으로 동작한다.

GC와 유사하게 SSD가 유휴상태일 때 Invalid 값들을 정리하는 TRIM이라는 동작도 존재한다.

RAID

RAID는 Redundant Array of Independent Disks의 약자로, 동일한 디스크 여러 개를 논리적으로 병렬배치하여 안정성이나 성능 향상을 꾀하는 방법이다. 구성 방법에 따라 여러 개의 종류가 있고 이는 레벨로써 분리한다.

RAID 0

단순하게 데이터를 번갈아서 저장하는 방식이다. 번갈아가며 저장하기에 스트라이핑이라고도 불린다. (저장된 모습이 줄무늬와 비슷하기 때문이다.) 하나의 저장 장치에 저장하는 것보다 병렬적으로 접근할 수 있어 속도가 빠르지만, 내결함성*이 떨어진다는 단점이 있다.

*내결함성: 하나의 구성요소가 동작을 하지 않더라도, 전체 구성요소는 계속 작동할 수 있는 속성

RAID 1

복사본을 만들어 데이터 복구를 간단하게 하는 방식이다. 저장을 할 때, 복사본에도 데이터를 저장해야 하기 때문에 속도가 느리고, 용량이 증가한다는 단점이 있다.

RAID 4

RAID 1과는 달리 별도 저장 장치에 원본과 동일한 복사본을 저장하지 않고, 오류를 검출하고 복구를 가능케하는 패리티 비트*를 저장하는 방식이다. 디스크에 데이터를 쓸 때마다 패리티 비트 디스크에 데이터를 써야한다. 이로 인해 패리티 비트 디스크에 병목 현상이 발생한다.

*패리티 비트: 사전적 의미로는 오류를 검출만할 뿐 복구는 하지 못하나, RAID에서는 복구도 가능하다.

RAID 5

패리티 정보를 하나의 디스크가 아니라 분산 저장하여 병목 현상을 해결한 방식이다.

RAID 6

패리티 정보를 2개 중복하여 저장함으로써 안정성을 높이는 방식이다. 다만, 데이터 저장시 두 개의 패리티 정보를 갱신해야 하므로 속도는 느리다.

Nested RAID

여러 RAID Level을 혼합하는 방식이다.

위 그림은 RAID 0(스트라이핑)을 적용한 후, RAID 1(복사본 생성)을 적용한 RAID 01의 모습이다.

위 그림은 RAID 1(복사본 생성)을 적용한 후, RAID 0(스트라이핑)을 적용한 RAID 10의 모습이다.

RAID01 과 RAID10 모두 저장 용량과 성능은 동일함에도 RAID10을 선호하는데, 그 까닭은 고장에 대처하는 측면에서 차이가 있기 때문이다.

RAID01의 경우 위와 같이 Disk 0번이 고장난 경우, 비교적 멀리 있는 Disk 2번에서 복구를 해야하는 반면,

RAID10의 경우 위와 같이 근접한 Disk 1번에서 복구를 해야할 수 있어 내결함성이 높아, RAID01 보다는 RAID10을 주로 사용한다.

결론

각 RAID 레벨마다 장단점이 있으며, 상황(안정성이 중요한지, 속도가 중요한지, 가격이 중요한지, 용량을 얼마나 사용할 수 있는지 등)에 따라 여러 선택을 해야한다.

또한, 링크에 RAID10과 RAID5를 비교한 글이 있어 참고하면 좋을 것 같다.

참고

0개의 댓글