포스트

보조 기억 장치

보조 기억 장치

보조기억장치(Secondary Storage) 는 운영체제, 응용 프로그램, 사용자 파일 등 모든 데이터를 영구적으로 저장하는 공간입니다.
주기억장치보다 속도는 느리지만, 용량이 훨씬 크고 가격이 저렴하며 비휘발성(Non-volatile) 이라는 핵심적인 특징을 가집니다. 대표적으로 하드 디스크 드라이브(HDD)솔리드 스테이트 드라이브(SSD) 가 있습니다.

  • 대용량 데이터 저장 : 데스크톱, 서버, 백업 스토리지 등
  • 비용 효율이 중요한 경우 사용합니다.

하드 디스크 드라이브(Hard Disk Drive, HDD)

HDD는 자기(Magnetic)를 이용하여 데이터를 읽고 쓰는 전통적인 보조기억장치입니다.

물리적 구조

여러 개의 금속 원판(플래터)이 회전하면서 데이터를 저장하는 방식으로 동작합니다.
기계적 회전과 이동 때문에 읽기/쓰기 속도가 플래시 메모리보다 느립니다.

  • 플래터(Platter) : 데이터가 실제로 저장되는 자기 물질로 덮인 원판입니다. 여러 장이 겹쳐 있습니다.
  • 헤드(Head) : 플래터 표면 위를 미세하게 떠서 자기 정보를 읽거나 쓰는 장치입니다. 각 플래터의 면마다 헤드가 하나씩 존재합니다.
  • 스핀들(Spindle) : 플래터를 고속으로 회전시키는 모터입니다. 분당 회전수(RPM)가 높을수록 데이터 접근 속도가 빠릅니다.
  • 액추에이터 암(Actuator Arm) : 헤드를 원하는 위치로 정밀하게 이동시키는 팔 역할을 합니다.

데이터 구성 요소

HDD의 플래터에는 데이터가 체계적으로 저장되며, 그 기본 단위는 다음과 같습니다.

  • 섹터 (Sector) : 데이터 저장의 최소 물리 단위입니다. 보통 512바이트 또는 4KB의 크기를 가집니다.
  • 트랙 (Track) : 플래터에 있는 동심원 모양의 데이터 경로입니다. 하나의 트랙은 여러 개의 섹터로 구성됩니다.
  • 실린더 (Cylinder) : 여러 장의 플래터에서 동일한 위치에 있는 트랙들의 집합입니다. 헤드를 한번 이동시킨 상태에서 여러 플래터의 데이터를 읽고 쓸 수 있어 데이터 접근 효율을 높여줍니다.
  • 클러스터 (Cluster) : 운영체제(OS)가 파일을 관리하는 논리적인 최소 단위입니다. 여러 개의 섹터를 묶어서 하나의 클러스터로 다룹니다.

데이터 접근 시간(Access Time)

HDD에서 데이터에 접근하는 시간은 기계적 동작 시간의 합으로 결정됩니다.

접근 시간 = 탐색 시간 + 회전 지연 시간 + 전송 시간

  • 탐색 시간 (Seek Time) : 액추에이터 암이 헤드를 목표 트랙까지 이동시키는 데 걸리는 시간이며 가장 큰 시간을 차지합니다.
  • 회전 지연 시간 (Rotational Latency) : 디스크가 회전하여 헤더가 읽기/쓰기 대상이 되는 섹터 위에 도착하기까지 기다리는 시간입니다.
  • 전송 시간 (Transfer Time) : 읽기/쓰기 헤드가 데이터를 실제로 읽거나 쓰는 데 걸리는 시간입니다.

데이터 접근 시간 최적화

상대적으로 가장 길고 통제할 수 있는 탐색 시간을 줄이는 것이 핵심(arm의 움직임을 최소화)
가능한 동일한 실린더에 데이터를 적재하여 탐색 시간을 줄입니다.

연속적으로 데이터에 접근할 때 디스크 스케줄링(Disk Scheduling) 기법을 사용하여 탐색 시간을 최소화합니다. 대표적인 알고리즘으로는 SCAN, C-SCAN, LOOK, C-LOOK 등이 있으며, 이들은 헤드의 이동 경로를 최적화하여 탐색 시간을 줄이는 것을 목표로 합니다.

플래시 메모리(Flash Memory)

플래시 메모리는 전기적으로 데이터를 쓰고 지울 수 있는 반도체 기반의 비휘발성 메모리입니다.

HDD와 달리 기계적으로 움직이는 부품이 없어 속도가 매우 빠르고, 충격에 강하며, 소음과 전력 소모가 적습니다. SSD(Solid-State Drive) 가 바로 이 플래시 메모리를 사용하여 만든 보조기억장치입니다.

플래시 메모리의 종류

플래시 메모리는 내부 회로 구조에 따라 크게 NANDNOR 타입으로 나뉩니다.

  • NAND 플래시 메모리
    • 데이터를 순차적으로 읽고 쓰는 데 특화되어 있습니다. 대용량화에 유리하고 가격이 저렴하여 대부분의 SSD, USB 메모리, SD 카드에 사용됩니다.
  • NOR 플래시
    • 데이터를 임의로 접근(Random Access)하는 속도가 빠릅니다. 주로 코드 실행용으로 사용되며, 스마트폰의 펌웨어나 바이오스(BIOS) 저장용으로 쓰입니다.

핵심 구성 요소

플래시 메모리는 데이터를 저장하는 셀(Cell) 과 이를 제어하는 컨트롤러(Controller) 로 구성됩니다.

셀(Cell)

데이터를 저장하는 가장 작은 단위입니다. 셀은 내부에 전하를 가두어 전압 상태로 데이터를 표현합니다(0 또는 1). 이 셀 하나에 몇 비트의 데이터를 저장하느냐에 따라 아래와 같이 타입이 나뉩니다.

  • SLC (Single-Level Cell) : 1비트 저장. 가장 빠르고 수명이 길지만, 비싸고 용량이 작습니다.
  • MLC (Multi), TLC (Triple), QLC (Quad) : 2, 3, 4비트 저장. 뒤로 갈수록 용량 대비 가격은 저렴해지지만, 속도와 수명이 감소하는 트레이드오프가 있습니다.

컨트롤러

데이터 읽기/쓰기 속도와 메모리 수명을 관리합니다.

SSD 수명 및 성능 관리 기술

플래시 메모리는 구조적 특성상 두 가지 주요한 과제를 안고 있습니다.

  • 제한된 쓰기 수명 : 데이터를 여러 번 쓰고 지우면 셀이 물리적으로 마모되어 수명이 정해져 있습니다. (Write/Erase Cycle)
  • 쓰기 속도 저하 : HDD와 달리, 데이터를 덮어쓰려면 반드시 기존 데이터를 먼저 삭제(Erase) 하는 블록 단위의 사전 작업이 필요합니다. 이 때문에 사용량이 늘어날수록 쓰기 속도가 느려질 수 있습니다.

이러한 과제를 해결하기 위해 다음과 같은 핵심 기술을 사용합니다.

웨어 레벨링(Wear Leveling)

SSD 컨트롤러의 핵심 기술 중 하나로, 모든 메모리 셀이 비슷한 횟수로 사용되도록 데이터 쓰기 작업을 분산시킵니다. 특정 셀에만 쓰기 작업이 집중되어 수명이 단축되는 것을 방지하고 SSD 전체의 수명을 연장하는 중요한 역할을 합니다.

TRIM

운영체제가 파일 시스템에서 특정 데이터 블록이 더 이상 사용되지 않음을 SSD에 알려주는 명령어입니다. HDD는 기존 데이터를 그냥 덮어쓰면 되지만, SSD는 데이터를 쓰기 전에 반드시 기존 데이터를 삭제(Erase)해야 합니다.

TRIM 명령어를 통해 미리 사용하지 않는 공간을 알려주면, SSD는 유휴 시간에 해당 공간을 미리 정리해둘 수 있습니다. 이를 통해 실제 쓰기 작업이 발생했을 때 삭제 과정 없이 바로 쓸 수 있어 SSD의 쓰기 속도 저하를 방지하고 성능을 최상으로 유지할 수 있습니다.

RAID(Redundant Array of Independent Disks)

RAID는 여러 개의 물리적인 디스크를 하나의 논리적인 디스크처럼 묶어서 사용하는 기술입니다. 주된 목적은 데이터의 안정성(신뢰성) 향상성능(입출력 속도) 향상입니다. 여러 RAID 레벨이 있으며, 목적에 따라 다르게 구성됩니다.

주요 RAID 레벨

RAID 0 (스트라이핑, Striping)

최소 2개 이상의 디스크에 데이터를 분산하여 동시에 저장합니다. 데이터를 동시에 여러 디스크에 나눠서 읽고 쓰므로 입출력 성능이 크게 향상됩니다. (4개의 디스크는 1개의 디스크에 비해 4배의 속도)

데이터를 백업하지 않으므로, 디스크 중 하나만 고장 나도 모든 데이터를 잃게 됩니다. 안정성이 매우 낮습니다.

RAID 1 (미러링, Mirroring)

최소 2개의 디스크에 동일한 데이터를 완전히 복제하여 저장합니다. 디스크 하나가 고장 나도 다른 디스크에 원본이 그대로 남아있어 데이터 안정성이 매우 높습니다.

전체 용량의 절반만 사용할 수 있어 공간 효율이 떨어지고, 쓰기 성능은 단일 디스크와 같거나 약간 느릴 수 있습니다.

RAID 3 & 4 (병렬 전송과 패리티 디스크)

RAID 3은 데이터를 바이트 단위로 스트라이핑하고 전용 패리티 디스크를 사용했으며, RAID 4는 데이터를 블록 단위로 스트라이핑하고 전용 패리티 디스크를 사용했습니다.

두 방식 모두 하나의 디스크가 고장 나도 복구가 가능했지만, 모든 쓰기 작업마다 하나의 패리티 디스크에 접근해야 했기 때문에 패리티 디스크 병목 현상이 심각한 단점이었습니다. RAID 5는 바로 이 문제를 해결하기 위해 등장했습니다.

RAID 5 (분산 패리티, Distributed Parity)

최소 3개 이상의 디스크를 사용하며, 데이터와 함께 패리티(Parity) 정보를 디스크에 분산 저장합니다.

패리티는 데이터의 오류를 검사하고 복구하기 위한 정보입니다. 디스크 하나가 고장 나더라도, 남아있는 데이터와 패리티 정보를 이용해 데이터를 복구할 수 있습니다. 성능과 안정성을 모두 확보할 수 있는 균형 잡힌 방식입니다.

디스크 2개 이상이 동시에 고장 나면 복구가 불가능합니다. 패리티 연산으로 인해 쓰기 성능이 약간 저하될 수 있습니다.

RAID 6 (이중 분산 패리티, Dual Distributed Parity)

RAID 5와 유사하지만, 서로 다른 두 개의 패리티 정보를 저장합니다. 최소 4개의 디스크가 필요합니다. 디스크 2개가 동시에 고장 나도 데이터를 복구할 수 있어 RAID 5보다 안정성이 훨씬 높습니다.

패리티 연산이 두 배로 늘어나 쓰기 성능 저하가 더 크고, 2개의 디스크 용량을 패리티 저장에 사용해야 합니다.

RAID 10 (1+0, 스트라이핑 + 미러링)

최소 4개의 디스크를 사용하며, RAID 1(미러링)으로 묶인 그룹들을 다시 RAID 0(스트라이핑)으로 묶는 방식입니다. RAID 1의 안정성과 RAID 0의 성능을 모두 얻을 수 있어 가장 좋은 성능과 안정성을 제공합니다.

전체 용량의 절반만 사용할 수 있고, 구성 비용이 비쌉니다.

RAID 레벨별 특징 비교

RAID 레벨최소 디스크 수사용 가능 용량 (N=디스크 수)장점단점고장 허용 (Fault Tolerance)
RAID 02개N최상의 성능 (읽기/쓰기)안정성 없음, 데이터 복구 불가0개
RAID 12개N / 2최상의 안정성, 빠른 읽기 성능공간 효율 낮음 (50%), 쓰기 성능 저하1개 (그룹당)
RAID 53개N - 1성능, 안정성, 용량의 균형쓰기 성능 저하, 2개 동시 고장 시 복구 불가1개
RAID 64개N - 2높은 안정성 (2개 디스크 장애 허용)쓰기 성능 저하 심함, 공간 효율 낮음2개
RAID 10 (1+0)4개N / 2높은 성능과 안정성을 모두 확보비용이 비싸고 공간 효율 낮음 (50%)그룹당 1개
이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.