📑 본 글은 <혼공컴운>을 읽고 정리한 글입니다.
1. 다양한 보조기억장치
1-1. 하드 디스크
하드 디스크(HDD)
- 자기적인 방식으로 데이터를 저장하는 보조기억장치
- = 자기 디스크
- 덮어쓰기 가능
하드 디스크의 구성요소
- 플래터(platter)
- 데이터가 저장되는 곳 : 동그란 원판
- 수많은 N극과 S극을 저장 → 0과 1
- 스핀들(spindle)
- 플래터를 회전시키는 구성요소
- RPM : 스핀들이 플래터를 돌리는 속도
- 헤드(head)
- 플래터에서 데이터를 읽고 쓰는 구성 요소
- 바늘같음
- 디스크 암(disk arm)
📢 일반적으로 여러 겹의 플래터로 이루어져 있고, 플래터 양면을 모두 사용할 수 있다.
- 양면 플래터를 사용하면 위아래로 플래터당 두 개의 헤드가 사용된다.
- 모든 헤드는 디스크 암에 부착되어 다같이 이동한다.
플래터에 데이터가 어떻게 저장됨?
- 트랙(track)
- 섹터(sector)
- 트랙 & 피자 조각
- 하드 디스크의 가장 작은 전송 단위
- 일반적으로 512바이트
- 블록 : 하나 이상의 섹터를 묶은 단위
- 실린더(cylinder)
- 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위
- 원통 모양
- 일반적으로 연속된 정보는 한 실린더에 기록된다.
- 디스크 암을 움직이지 않고도 바로 데이터에 접근할 수 있기 때문
플래터에 저장된 데이터에 어떻게 접근함?
- 탐색 시간(seek time)
- 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
- 매우매우 오래 걸림
- 회전 지연(rotation latency)
- 전송 시간(transfer time)
- 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간
⇒ 탐색 시간과 회전 지연 단축시키기 : RPM 높이기, 참조 지역성
1-2. 플래시 메모리
플래시 메모리
- 전기적으로 동작하는 반도체 기반의 저장 장치
- USB 메모리, SD 카드, SSD, ROM(주기억장치)
- 보통 NAND 플래시 메모리
- 셀(cell)
- 플래시 메모리에서 데이터를 저장하는 가장 작은 단위
- 페이지(page)
- 셀들이 모여 만들어진 단위
- read/write 단위
- 블록(block)
- 페이지가 모여 만들어진 단위
- delete 단위
- 플레인(plane)
- 다이(die)
플래시 메모리의 종류
기준) 하나의 셀에 몇 비트를 저장할 수 있는가
- SLC(Single Level Cell)
- 한 셀에 1비트 저장
- 비트의 빠른 입출력 / 수명이 길다.
- 용량 대비 가격이 높다.
- read/write 많이 하고, 고성능의 빠른 저장 장치가 필요하다면..
- MLC(Multiple Level Cell)
- 한 셀에 2비트 저장
- SLC보다 대용량화하기 유리하다. / SLC보다 용량 대비 가격이 저렴하다.
- SLC보다 속도와 수명이 떨어진다.
- 시중에서 많이 사용됨
- TLC(Triple Level Cell)
- 한 셀에 3비트 저장
- 대용량화하기 유리하다. / 용량 대비 가격이 저렴하다.
- SLC, MLC보다 속도와 수명이 떨어진다.
- 저가의 대용량 저장 장치를 원한다면… 시중에서 많이 사용됨
⇒ 같은 용량의 플래시 메모리라고 하더라도, 셀의 타입에 따라 수명, 가격, 성능이 다르다!
페이지의 상태
- Free
- 암것도 없어서 새로운 데이터를 저장할 수 있는 상태
- Valid
- Invalid
플래시 메모리의 동작 알아보기
데이터 읽기, 쓰기 단위 → 페이지
데이터 삭제 단위 → 블록
덮어쓰기 불가능 → Valid 상태인 페이지에 새 데이터 저장할 수 없음
- 데이터 쓰기
- 데이터 수정
- 기존 페이지 → Invalid 처리, 새로운 페이지에 수정값 저장
- 가비지 컬렉션(garbage collection) 기능
- 유효한 페이지들만 새로운 블록으로 복사 → 기존의 블록 삭제 for 용량 낭비 노노
2. RAID의 정의와 종류
중요한 정보들을 보조기억장치에 어떻게 안전하게 관리할 것인가?
2-1. RAID의 정의
RAID(Redundant Array of Independent Disks)
- 데이터의 안전성 혹은 높은 성능을 위해
- 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술
- 주로 하드 디스크와 SSD를 사용함
2-2. RAID의 종류
RAID 레벨 : RAID 구성 방법
- RAID 0
- 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장함
- 스트라이핑(striping)
- 데이터를 하드 디스크에 번갈아가면서 저장하는 것
- 스트라입 : 줄무늬처럼 분산되어 저장된 데이터
- 데이터를 읽고 쓰는 속도가 빨라진다. like parallelization
- BUT! 저장된 정보가 안전하지 않다.
- RAID 1
- 미러링 : 복사본을 만드는 방식
- RAID 0처럼 스트라이핑하지만, 완전한 복사본을 하나 더 만든다.
- (HDD 2개에 돌아가면서 데이터를 저장한다.) X 2
- 두 군데에 써야해서 쓰기 속도가 RAID 0보다 느리다.
- 복구가 매우 간단하다.
- BUT! 사용 가능한 용량이 적어진다.
- RAID 4
- 패리티 비트(parity bit)를 저장하는 장치를 따로 둔다.
- 오류를 검출하고 복구하기 위한 정보(원래 패리티 비트는 오류 복구는 못 함, 여기에서만 가능)
- HDD 3개에 돌아가면서 데이터를 저장한다. + 1개에 parity bit를 저장한다.
- 하드 디스크 단 하나의 희생으로 데이터를 안전하게 보관할 수 있다.
- BUT! 데이터를 저장할 때마다 패리티 디스크에도 써야하므로, 패리티를 저장하는 장치에 병목 현상이 발생한다.
- RAID 5
- 패리티 정보를 각 HDD로 분산한다. → RAID 4의 병목 현상 해소
- RAID 6
- RAID 5 + 서로 다른 두 개의 패리티를 둔다.
- 저장할 패리티가 2개이므로 쓰기 속도는 느리다.
- BUT 데이터 매우매우 안전하다.