TIL

[TIL/혼공컴운] 2025/01/30

보조기억장치 ✍️보조기억장치는 비휘발성 저장 장치다. 데이터를 영구적으로 저장하기 위한 장치라는 점에서 RAM과 상반된 역할을 수행한다. 대표적인 보조기억장치인 '하드 디스크'에 관한 이야기로 글을 전개하고자 한다.하드 디스크는 자기적인 방식으로 데이터를 저장한다. 자

2025년 1월 30일5min read

보조기억장치 ✍️

1. 보조기억장치 ⚙️

1-1. 다양한 보조기억장치 🌿

보조기억장치는 비휘발성 저장 장치다. 데이터를 영구적으로 저장하기 위한 장치라는 점에서 RAM과 상반된 역할을 수행한다. 대표적인 보조기억장치인 '하드 디스크'에 관한 이야기로 글을 전개하고자 한다.

1-1-1. 하드 디스크 💡

#### 구성요소 🚀

하드 디스크는 ``자기적`인 방식으로 데이터를 저장한다. 자기적인 방식으로 데이터를 저장한다는 것은, 데이터 저장에 `자성``을 활용한다는 것이다. 자성은 쉽게 얘기하면 쇠(강자성 물질)를 끌어당기는 성질을 뜻한다.

하드 디스크에서 실질적으로 데이터가 저장되는 곳은 ``플래터``라는 원판이다. 플래터는 자기 물질로 덮여 있어 수많은 N극과 S극을 저장할 수 있다. N극과 S극은 컴퓨터 공학의 관점에서 볼 때 0과 1로 치환하여 이해할 수 있겠다.

이러한 플래터를 회전시키는 구성 요소를 ``스핀들`이라 하고, 스핀들이 플래터를 돌리는 속도는, 분당 회전수를 나타내는 `RPM`` 단위로 표현된다.

플래터를 대상으로 데이터를 읽고 쓰는 구성 요소는 ``헤드`이고, 헤드를 플래터 상의 원하는 위치로 이동시키는 역할을 수행하는 구성 요소를 `디스크 암``이라고 한다.

#### 데이터 저장 🚀

플래터를 여러 동심원으로 나누었을 때 그중 하나의 원을 ``트랙`이라고 부른다. 트랙의 한 조각을 `섹터``라고 부르는데, 섹터는 하드 디스크의 가장 작은 전송 단위다. 하나의 섹터는 일반적으로 512바이트 정도의 크기를 가지고 있으나, 제품별로 차이가 있다.

실린더```는 여러 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위다. 즉, 같은 트랙끼리 연결한 원통 모양의 공간이 실린더다.

연속된 정보는 보통 한 실린더에 기록되는데, 디스크 암을 움직이지 않고도 바로 데이터에 접근할 수 있기 때문이다. 이는 탐색 과정과 관련된다.

#### 데이터 탐색 🚀

데이터에 접근하는 시간은 ```탐색 시간```, ```회전 지연```, ```전송 시간```으로 나뉜다.

실린더라는 논리적 단위를 통해 디스크 암을 움직이지 않아도 된다는 이점을 얻었는데, 이는 달리 표현하면 탐색 시간을 획기적으로 줄인 것이라고 표현할 수 있다. 탐색 시간은 트랙까지 헤드를 이동시키는 시간인데 헤드를 이동시키는 것은 디스크 암이기 때문이다.

이전에 학습한 참조 지역성과도 연결된다. 탐색 시간과 회전 지연을 단축시키기 위해서 RPM을 높이는 것도 중요하지만, 접근하려는 데이터가 플래터 혹은 헤드를 조금만 옮겨도 접근할 수 있는 곳에 위치해 있는 것도 중요한 것이다.

1-1-2. 플래시 메모리 💡

플래시 메모리는 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치다. USB, SSD, SD 카드 등이 플래시 메모리에 해당한다. 플래시 메모리에는 ````이라는 단위가 있는데, 한 셀에 몇 bit의 데이터를 저장할 수 있는지에 따라 타입이 나뉜다.

#### 타입 🚀

가장 먼저 ``SLC 타입``이다. Single Level Cell인 경우이고, 한 셀에 1비트를 저장할 수 있다. 표현의 단위가 작기에, 후술하게 될 MLC, TLC에 비해 빠른 입출력이 가능하다. 그렇기에 용량 대비 가격이 높다는 단점도 있다.

다음으로 ``MLC``, Multi Level Cell이다. 한 셀에 2비트를 저장할 수 있고 따라서 4가지 정보를 표현할 수 있다. SLC 타입 대비 대용량화하기 유리하고, 용량 대비 가격도 저렴하다.

TLC```는 Triple Level Cell이고 3비트를 저장할 수 있다. SLC와 MLC 타입보다 수명과 속도가 떨어지지만, 용량 대비 가격이 저렴하다는 장점이 있다.

#### 단위 🚀

![](https://velog.velcdn.com/images/minkwan/post/5e57717b-f451-42fa-b1ce-1b82c17b0651/image.png)

읽기/쓰기 단위와 삭제 단위가 다르다는 것이 플래시 메모리의 핵심적인 특징 중 하나다.

#### 페이지의 상태 🚀

페이지는 ``Free`, `Valid`, `Invalid` 세 가지 상태를 가질 수 있다. `Free` 상태는 어떠한 데이터도 저장하지 않고 있기에 새로운 데이터를 저장할 수 있는 상태다. `Valid` 상태는 이미 유효한 데이터를 가지고 있는 상태고, `Invalid`` 상태는 쓰레기값이라 부르는 유효하지 않은 데이터를 저장하고 있는 상태다.

페이지는 읽기/쓰기 단위이기에, 새로운 데이터 C를 저장하는 과정은 문제없다. 그런데 A를 삭제하고 A'으로 수정하려면 '삭제' 작업이 필요하다. 이 상황에서 A를 담고 있는 페이지는 더 이상 유효하지 않은 쓰레기값이 된다.

가비지 컬렉션``` 기능에 의해 블록 단위로 데이터가 삭제되고, Valid 한 페이지를 복사하여 새로운 블록인 Y를 생성하게 된다.

## 1-2. RAID의 정의와 종류 🌿

### 1-2-1. RAID의 정의 💡

1-2-2. RAID의 종류(구성 방법) 💡

#### RAID 0 🚀

RAID 0의 핵심은 ``스트라이핑``이다.

여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식이다. 이처럼 데이터를 분산하여 저장하는 것을 스트라이핑이라고 한다.

4TB 저장 장치 한 개를 읽고 쓰는 속도보다 RAID 0으로 구성된 1TB 저장 장치 네 개의 속도가 이론상 네 배가량 빠르다.

다만, 저장된 정보가 안전하지 않다는 단점이 있다. 디스크 하나에 문제가 생기면, 다른 모든 하드 디스크의 정보를 읽는 데 문제가 생길 수 있기 때문이다. 이러한 단점을 보완하기 위해 RAID 1이 등장했다.

#### RAID 1 🚀

RAID 0의 핵심이 스트라이핑이었다면, RAID 1의 핵심은 ``미러링``이다.

특정 디스크에 문제가 발생할 수 있으니 미러링을 통해 복제본을 만들어 놓자는 것이 RAID 1의 목적이다.

똑같은 디스크가 두 개 있는 셈이니 복구가 매우 간단하다는 장점이 있지만, 하드 디스크 개수가 한정되었을 때 사용 가능한 용량이 적어지는 단점이 있다. 이는 곧 비용 증가를 의미한다.

미러링 시스템의 한계를 극복하기 위해 RAID 4가 고안되었다.

#### RAID 4 🚀

RAID 4의 핵심은 ``패리티 비트``다.

RAID 1처럼 완전한 복사본을 만드는 것이 아니라, 오류 검출 및 복구를 위한 정보를 저장하는 장치를 따로 두자는 방식이다. 패리티 비트란 오류를 검출하고 복귀하기 위한 정보라고 볼 수 있다.

RAID 1보다 적은 하드 디스크로도 데이터를 안전하게 보관할 수 있다.

#### RAID 5 🚀

RAID 5의 핵심은 ``패리티 비트를 스트라이핑하는 것`이다. 패리티 비트 저장을 위한 장치를 따로 두는 것까지는 좋은데, 새로운 데이터를 저장할 때마다 패리티를 저장하는 디스크에도 데이터를 쓰게 되므로, 패리티를 저장하는 장치에 `병목 현상``이 발생한다는 문제가 생겼다.

따라서 패리티를 분산하여 병목 현상을 해결하려는 시도가 RAID 5라고 정리할 수 있다.

#### RAID 6 🚀

RAID 6는 ``서로 다른 두 개의 패리티를 두는 방식``을 채택했다. RAID 5의 방식을 따르되, 저장 속도를 조금 희생하더라도 데이터를 더 안전하게 보관하고 싶을 때 사용하는 방식이다.

#### Nested RAID 🚀

RAID 0과 RAID 1을 혼합한 RAID 10, RAID 0과 RAID 5를 결합한 RAID 50 방식도 있다. 이처럼 여러 RAID 레벨을 혼합한 방식을 ``Nested RAID``라고 한다.

계획 🌿

2월의 목표

1. 입출력장치 + 운영체제 읽은 내용 TIL로 꾸준히 정리(다 읽음) 2. SQLD 공부 후 3월에 취득([SQLD 모든 것] 구매함, 4바퀴 돌릴 예정) 3. [모던 리액트 Deep Dive] 읽기(적어도 p.480까지) 4. 프로젝트 2월 안에 마무리하기 + 새로운 프로젝트 고민