[혼자 공부하는 컴퓨터 구조 + 운영체제] 7강 보조기억장치
다양한 보조기억장치
보조기억장치의 종류는 다양한데, 크게 하드 디스크와 플래시 메모리로 나눌 수 있다. 플래시 메모리는 USB 메모리, SD 카드, SSD와 같은 저장장치를 의미한다.
하드디스크
하드디스크(HDD; Hard Disk Drive)는 자기적인 방식으로 데이터를 저장하는 보조기억장치이다. 이 때문에 자기 디스크(magnetic disk)의 일종으로 지칭하기도 한다.
하드디스크는 CD나 옛날 음향 장치인 LP와 비슷하게 동작한다. 동그란 원판에 데이터를 저장하고, 그것을 뾰족한 리더기로 데이터를 읽어내는 점이 비슷하다.
하드디스크에 실질적으로 데이터가 저장되는 곳은 플래터이다. 플래터는 원판처럼 생겼으며, 자기물질로 덮여있기 때문에 수많은 N극과 S극을 저장할 수 있다. N극과 S극이 0과 1의 역할을 수행한다.
플래터를 회전시키는 요소를 스핀들이라고 한다. 스핀들이 회전하는 속도는 분당 회전수를 나타내는 RPM이라는 단위로 표현한다.
플래터를 대상으로 읽고쓰는 부분은 헤드이다. 플래터 위에서 미세하게 떠 있으며, 마치 바늘처럼 생긴 부품이다. 그리고 헤드를 원하는 위치로 이동시키는 디스크암에 부착되어있다. CD나 LP에 비해 하드디스크는 훨씬 더 많은 데이터를 저장해야 하므로, 여러겹의 플래터로 이루어져 있고 플래터 양면을 모두 사용할 수 있다.
양면 플래터를 사용하면 위아래로 플래터당 두 개의 헤드를 사용하게 된다. 이때 일반적으로 모든 헤드는 디스크암에 부착되어 다같이 이동한다.
플래터는 트랙과 섹터라는 단위로 데이터를 저장한다. 플래터를 여러 동심원으로 나눴을 때 그중 하나의 원을 트랙이라고 부른다. 트랙은 마치 피자처럼 여러 조각으로 나누어지는데, 이 한 조각을 섹터라고 부른다.
섹터는 하드디스크의 가장 작은 전송단위이다. 하나의 섹터는 일반적으로 512 바이트 정도의 크기를 가지고 있지만, 하드 디스크마다 차이가 있다.
하나 이상의 섹터를 묶어 블록이라고 표현하기도 한다.
연속된 정보는 보통 한 실린더에 기록된다. 실린더는 여러 플래터의 트랙이 모인 것을 의미한다. 실린더 단위로 기록하는 이유는 여러개의 데이터를 저장해야 할때 디스크암을 움직이지 않고 바로 데이터에 접근할 수 있기 때문이다.
하드디스크에 저장된 데이터에 접근하는 시간은 크게 탐색 시간, 회전 지연, 전송 시간으로 나뉜다.
- 탐색 시간
- 회전 지연
- 전송 시간
각각의 시간이 생각보다 오래 걸리기 때문에, 데이터가 플래터 혹은 헤더를 조금만 옮겨도 접근할 수 있는 곳에 위치해 있는 것도 중요하다.
플래터의 한 면당 헤드가 하나씩 달려 있는 하드 디스크를 단일 헤드 디스크(single-head disk)라고 한다. 반면 트랙별로 헤드가 하나씩 있는 하드 디스크를 다중 헤드 디스크(multiple-head disk)라고 한다. 헤드가 트랙마다 위치하면 헤드를 이동하지 않아도 되기 때문에, 탐색 시간이 0이된다. 이런 특징으로 인해 단일 헤드 디스크를 이동 헤드 디스크(movable-head disk)라고 부르기도 하고, 다중 헤드 디스크를 고정 헤드 디스크(fixed-head disk)라고 부르기도 한다.
플래시 메모리
최근에는 플래시 기반의 보조기억장치 기반의 저장장치를 많이 사용한다. 플래시 메모리는 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치이다. 플래시 메모리는 ROM에도 사용되고, 일상적으로 접하는 거의 모든 전자제품 안에 내장되어있다.
플래시 메모리는 크게 NAND게이트를 기반으로 만들어진 메모리인 NAND 플래시 메모리와 NOR 게이트를 기반으로 만들어진 메모리인 NOR 플래시 메모리로 나뉜다. 일반적으로 많이 사용되는 플래시 메모리는 NAND 플래시 메모리로, 앞으로 설명하는 플래시 메모리는 NAND 플래시 메모리를 의미한다.
플래시 메모리는 셀이라는 단위가 있다. 셀은 플래시 메모리에서 데이터를 저장하는 가장 작은 단위이다. 한 셀에 저장할 수 있는 비트의 크기에 따라 메모리의 수명, 속도, 가격에 영향을 끼친다.
플래시 메모리와 하드 디스크에는 수명이 있다. 한 셀에 일정 횟수 이상 데이터를 쓰고 지우면 그 셀은 더이상 데이터를 저장할 수 없다.
- SLC(Single Level Cell) 타입
- MLC(Multiple Level Cell) 타입
- TLC(Triple Level Cell) 타입
플래시 메모리의 가장 작은 단위인 셀보다 더 큰단위는 다음과 같다.
- 페이지(page) : 셀들이 모여 만들어진 단위
- 블록(block) : 페이지가 모여 만들어진 단위
- 플레인(plane) : 블록이 모여 만들어진 단위
- 다이(die) : 플레인이 모여 만들어진 단위
플래시 메모리에서 읽기와 쓰기는 페이지 단위로 이루어진다. 하지만 삭제는 페이지보다 큰 블록 단위로 이루어진다. 이는 플래시 메모리의 가장 큰 특징 중 하나이다.
페이지는 세 개의 상태를 가질 수 있다.
- Free : 어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있다.
- Valid : 이미 유효한 데이터를 저장하고 있는 상태
- Invalid : 쓰레기값이라고 부르는 유효하지 않은 데이터를 저장하고 있는 상태
플래시 메모리는 하드디스크와 달리 덮어쓰기가 되지 않기 때문에 Valid 상태인 페이지에는 새 데이터를 저장할 수 없다. 이제 페이지에 값이 어떻게 쓰이고, 지워지는지 알아보자.
만약 4개의 페이지로 이루어진 블록 X가 있다고 가정해보자. 이 블록에 A, B값이 들어있을 때 C를 저장해야 한다면, 그대로 저장하면 된다. 이제 3개의 페이지는 Valid상태가 되고, 1개의 페이지는 Free 상태가 된다.
여기에서 기존 A값을 A’로 바꾸고 싶다면, Free상태의 페이지에 A’값을 저장한다. 그리고 기존 A값이 들어있는 페이지는 Invalid 상태가 된다. 이때 블록X는 A와 같은 쓰레기 값을 가지게 되는데, 이는 사용하지 않을 공간인데도 불필요하게 용량을 차지하고 있다는 의미이다.
플래시 메모리는 이런 쓰레기값을 정리하기 위해 가비지 컬렉션 기능을 제공한다. 가비지 컬렉션은 유효한 페이지들을 새로운 블록으로 복사한 뒤, 기존 블록을 삭제하는 방식으로 동작한다.
RAID의 정의와 종류
보조기억장치에도 수명이 있다. 수명을 다하게되면 고장나게 되는데, 이렇게 되면 데이터가 유실될 수도 있다. 만약 구글, 아마존같은 글로벌 IT기업의 서버데이터가 저장된 보조기억장치가 망가지게되면 큰 문제를 초래하게 될 것이다. 이런 문제를 해결하기위해 사용할 수 있는 방법중 하나가 RAID이다.
RAID(Redundant Array of Independent Disks)는 주로 하드 디스크와 SSD를 사용하는 기술로, 데이터의 안정성 혹은 높은 성능을 위해 여러개의 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술을 의미한다.
RAID의 종류
RAID를 구성하는 방법은 여러가지가 있는데 그중 대표적인 것들을 알아보자.
- RAID 0
- RAID 1
- RAID 4
- RAID 5
- RAID 6
이외에도 RAID 0과 RAID 1을 혼합한 RAID 10방식도 있고, RAID 0과 RAID 5를 혼합한 RAID 50 방식도 있다. 이처럼 여러 RAID 레벨을 혼합한 방식을 Nested RAID라고 한다.