2 분 소요

7장에서는 보조기억장치(Auxiliary Memory)에 대하여 다룬다.
구체적으로 보조기억장치의 두 부류인 하드 디스크와 플래시 메모리에 대한 설명, 그리고 안전한 저장 방식인 RAID를 다룬다.

보조기억장치

하드 디스크(HDD; Hard Disk Drive)

HDD는 자기 디스크(magnetic disk)의 일종으로, 자기적인 방식으로 데이터를 저장한다. 구조는 다음과 같다.

HDD 구성요소 특징
플래터
(platter)
실질적으로 데이터가 저장되는 곳. N/S극을 0과 1처럼 저장함
스핀들
(spindle)
플래터를 회전시킴. RPM으로 속도 표기
헤드
(head)
플래터에서 데이터를 읽고 씀.
일반적으로 플래터당 위 아래 총 2개씩 존재.
플래터의 한 면당 헤드가 하나씩 있으면 단일(이동) 헤드 디스크(single/movable-head disk)라고 부르고
(후술할) 트랙별로 여러 개가 있으면 다중(고정) 헤드 디스크(multiple/fixed-head disk)라 부름
엑츄에이터 암
(actuator arm)
헤드를 원하는 위치로 이동
디스크 암(disk arm)이라고도 함

플래터도 세부적인 구조가 있다.

연속된 정보는 보통 한 실린더에 기록되는데, 이래야 엑츄에이터 암의 이동 없이 바로 데이터에 접근할 수 있기 때문이다. Cluster는 Block으로도 부른다.

앞서 레지스터와 캐시를 쓰는 이유는 속도가 빨라서라고 말했는데, 그만큼 HDD에서 정보를 불러오는 것은 느리다.

L1 캐시를 참조하는데 0.5ns가 걸리는 반면, HDD를 탐색 하는데에는 천 만ns(0.01s)가 걸린다. 매우 느림을 알 수 있다.

그렇다면 대체 왜 느리느냐?

헤드를 트랙까지 이동시키는데 걸리는 탐색 시간(seek time), 플래터를 회전시켜 해당 헤드가 있는 곳으로 옮기는 회전 지연(rotational latency) HDD와 컴퓨터 간 데이터를 전송하는데 걸리는 전송 시간(transfer time)이 걸리기 때문이다.

플래시 메모리(flash memory)

이름은 생소하지만 우리가 익히 쓰는 것들이다. USB, SD카드, SSD가 플래시 메모리의 일종. 크게 NAND와 NOR 형식이 있는데, 주로 NAND 플래시 메모리가 사용된다.

플래시 메모리는 데이터를 저장하는 가장 작은 단위로 셀(cell)을 갖는데, 이 셀에 1비트가 저장 가능하면 SLC(Single Level Cell)타입, 2비트는 MLC(Multiple Level Cell)타입, 3비트는 TLC, 4비트는 QLC 이렇게 진행된다. 한 집에 혼자살면 쉽게 출입이 가능하듯 SLC는 입출력이 빠르다. 수명도 더 길지만, 혼자 집을 사면 비싸듯이 가격이 높다. 이걸 요약하면

구분 SLC MLC TLC
셀당 bit 1bit 2bit 3bit
수명 길다 보통 짧다
읽기/쓰기 속도 빠르다 보통 느리다
용량 대비 가격 높다 보통 낮다

셀이 모이면 페이지(page), 페이지가 모이면 블록(block), 블록이 모이면 플레인(plane), 플레인이 모여 다이(die)가 되는데

읽고 쓰는 건 페이지 단위로, 삭제는 블록 단위로 이뤄진다. 삭제를 페이지 단위로 하지 못하기 때문에 덮어쓰는 등의 행위가 불가능하다. 따라서 플래시 메모리에는 쓰레기값이 저장되는 문제가 발생한다.

이를 해결하기 위한 방법이 가비지 컬렉션(garbage collection)인데

페이지가 갖는 세 가지 상태

  • Free: 어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태
  • Valid: 이미 유효한 데이터를 저장하고 있는 상태
  • Invalid: 유효하지 않은 값(garbage value)을 저장하고 있는 상태.

garbage collection 방법

  1. 블록 X에 A-E가 Valid하게 저장돼있고 나머지는 Free라고 가정하자
  2. 새로운 데이터 F-K를 입력하고, 기존 A-E를 A'-E'로 갱신한 상태. 즉 A-E는 Invalid한 쓰레기값이다
  3. Valid한 F-K, A'-E'를 블록 Y로 옮기고, 기존 Block X를 삭제한다

RAID(Redundant Array of Independent Disks)

RAID 방식은 HDD나 SSD에 주로 사용되는데, 데이터의 안전성 및 높은 성능을 위해(=효율화·사고 대책을 위해) 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술을 의미한다.

즉 용장도(여유도; Redundancy. 전달될 메시지에서 제거시켜도 정보가 손상을 입지 않는 부분의 정도)를 늘리기 위한 방법으로 이해하면 된다.

이 RAID의 구성 방법은 레벨로 표현되는데, 도식으로 보면 간단하다.

RAID LEVEL 도식 특징
RAID 0 데이터를 각 drive에 번갈아 분산하여 저장(=스트라이핑; striping). 하나의 drive라도 문제가 생기면 모든 정보를 읽는데 문제가 발생
RAID 1 완전한 복사본을 만듦(=미러링; mirroring). 복구가 간단하지만 용량이 2배로 줄어듦
RAID 4 오류를 검출/복구하는 정보인 '패리티 비트(parity bit)'를 저장하는 disk를 둠. 새로운 데이터가 저장될 때마다 패리티 저장 디스크에도 표기해야하므로 병목 현상이 발생
RAID 5 따로 패리티 디스크를 두지 않고, 패리티를 분산하여 저장함
RAID 6 패리티 비트를 서로 다른 2개에 저장함. 속도를 조금 희생하더라도 더욱 안전함
RAID 10(1+0) RAID 1(mirroring)을 먼저 적용 후 RAID 0(striping)분산 저장을 한다

RAID 0+1과 RAID 10의 차이

RAID 0+1은 왼쪽 HDD1이 고장나면 2, 3도 못쓰게 된다. 반면 RAID 10은 HDD1이 고장나도 HDD2만 못쓸 뿐, 나머지 HDD 3~6은 사용 가능하다. 즉 안전과 복구 면에서 유리하다.