Search

[5장]보조 기억장치, 디스크

Publish Date
Category
Status
Not started
1 more property
주제
배경 및 목표에 대해 1문장으로 기재
혼자 7장 보조기억장치

07-01 다양한 보조 기억장치

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

하드 디스크 구성요소

1.
플래터(Platter)
데이터가 실제로 기록되는 원형 디스크
자기 물질로 코딩되어 있으며, 데이터를 저장하기 위해 회전한다.
플래터에는 여러개의 트랙(track), 섹터(sector)로 구성된 데이터 저장 영역이 있다.
2.
스핀들(Spindle)
플래터를 고정하고 회전시키는 축
회전 속도(RPM, Revolutions Per Minute)가 하드디스크의 성능을 결정짓는 중요한 요소중 하나이다.
일반적인 하드디스크는 5400RPM, 7200RPM, 10000RM 등으로 작동한다.
3.
헤드(Head)
섹터에 저장된 데이터를 읽고 쓰는 장치
플래터의 표면에 부착된 자기 데이터를 탐색하거나 기록한다.
플래터의 양면에 설치되며, 플래터의 트랙과 섹터 위로 빠르게 이동한다.
4.
액추에이터 암(Actuator arm) / 스윙암(Swing arm)
헤드를 플래터의 특정 위치로 이동시키는 기계장치
트랙 간 탐색에 중요한 역할을 하며, 탐색 시간(seek time)에 영향을 준다.

하드디스크 데이터 구조

1.
트랙(Track)
플래터 표면에 있는 동심원 모양의 데이터 저장 경로
플래터를 구성하는 기본단위이며, 각각의 트랙은 여러 섹터로 나뉘어 있다.
2.
섹터(Sector)
트랙을 구성하는 가장 작은 데이터 저장 단위
각 섹터는 고정된 크기의 데이터(일반적으로 512바이트 또는 4KiB)를 저장한다.
각각에 연속된 번호가 할당된다.
3.
실린더(Cylinder)
여러 플래터의 같은 위치에 있는 트랙의 집합
연속된 정보를 하나의 실린더에 기록하는 이유는 디스크 암을 움직이지 않고도 바로 데이터에 접근할 수 있기때문이다.

동작

1.
디바이스 드라이버가 데이터를 읽고 쓰는 데 필요한 정보를 하드 디스크에 전달한다.
섹터 번호, 섹터 개수, 접근 종류(읽기 또는 쓰기) 등
2.
스윙 암과 플래터를 움직여서 원하는 섹터 위에 헤드 위치를 맞춘다.
3.
데이터를 읽고 쓴다.

하드디스크의 데이터 접근 시간

하드디스크에서 데이터를 읽거나 쓰는 데 걸리는 시간은 다음과 같은 요소에 의해 결정된다.
1.
탐색시간(seek time)
헤드가 플래터에서 원하는 트랙으로 이동하는 데 걸리는 시간
하드디스크의 물리적 구조에 다라 다르며, 밀도가 높은 디스크일수록 시간이 단축된다.
2.
회전지연(Rotational Latency)
원하는 데이터가 저장된 섹터가 헤드 아래로 회전해 올 때까지 시간
디스크의 회전속도(RPM)에 따라 달라지며, 평균적으로 반바퀴가 거린다.
예: 7200 RPM → 1초에 120회 회전 → 한 바퀴 시간 = 8.33ms → 평균 회전 지연 = 4.17ms
3.
전송시간(Transfer Time)
데이터가 디스크에서 읽혀 메모리로 전송되는 데 걸리는 시간
디스크 인터페이스(예: SATA, SAS)의 대역폭 및 디스크 성능에 따라 달라진다.
접근 시간 = 탐색시간 + 회전시간 + 전송시간
Bash
복사
구글의 제프 딘(Jeff Dean)은 시스템 성능 최적화를 위해 프로그래머가 알아야 할 컴퓨터에서의 시간적 차원을 강조하며, 하드웨어의 속도 차이에 따른 성능 병목 문제를 설명했다.
작업
시간 (대략)
L1 캐시 참조
0.5ns ~ 1ns
L2 캐시 참조
7ns ~ 10ns
메인 메모리(RAM) 참조
100ns
하드디스크 탐색
수 밀리초(ms) (탐색 시간 + 회전 지연)
SSD 데이터 참조
50µs ~ 150µs (NAND 플래시 속도)
하드디스크에서 데이터를 탐색하고 읽는 시간은 다른 메모리 계층에 비해 매우 크기 때문에, 탐색 시간, 회전 지연, 전송 시간을 줄이는 것이 중요하다. 특히, 참조 지역성(Locality of Reference)을 고려한 데이터 배치는 하드디스크 성능 최적화에서 핵심적인 역할을 한다.

플래시 메모리

플래시 메모리는 비휘발성 메모리로, 전원이 꺼져도 데이터를 유지하는 저장매체이다. USB, SD 카드, SSD 등에서 사용된다.

플래시 메모리 종류

플래시 메모리는 크게 NAND 플래시 메모리, NOR 플래시 메모리가 있다. 각각 NAND 게이트와 NOR 게이트를 기반으로 만들어진 메모리를 뜻한다. NAND 플래시 메모리를 지칭

플래시 메모리의 저장 구조

셀(Cell)은 플래시 메모리에서 데이터를 저장하는 가장 작은 단위로, 셀에는 전자가 저장되어 0 또는 1로 값을 표현한다. 이 셀이 모여 MB, GB, TB 용량을 갖는 저장 장치가 된다. 하나의 셀에 몇 비트를 저장하느냐에 따라 플래시 메모리 종류가 나뉜다.
SLC(Single-Level Cell): 셀당 1비트 저장 (0 또는 1).
빠른 속도, 높은 내구성.
가격이 비쌈.
MLC(Multi-Level Cell): 셀당 2비트 저장.
SLC보다 용량이 크고 가격이 저렴하지만 내구성이 낮음.
TLC(Triple-Level Cell): 셀당 3비트 저장.
용량 증가, 가격 저렴.
성능과 내구성이 낮음.
QLC(Quad-Level Cell): 셀당 4비트 저장.
높은 저장 밀도, 낮은 성능과 내구성.
특징
SLC (Single-Level Cell)
MLC (Multi-Level Cell)
TLC (Triple-Level Cell)
QLC (Quad-Level Cell)
저장 비트 수
1 비트 (0 또는 1)
2 비트
3 비트
4 비트
저장 상태 수
2가지
4가지
8가지
16가지
속도
매우 빠름
빠름
보통
느림
내구성(수명)
매우 높음
높음
낮음
매우 낮음
용량
적음
중간
높음
매우 높음
가격
비쌈
보통
저렴
매우 저렴
용도
고성능 SSD, 산업용 장치
소비자용 고성능 SSD
대중적인 SSD, USB 드라이브
대용량 저장장치, 저가형 SSD

플래시 메모리의 데이터 구조

NAND Flash Die Layout (image courtesy of AnandTech)
페이지(Page): 일반적으로 4KB ~ 16KB 크기로, 데이터를 읽고 쓰는 최소단위이다.
블록(Block): 여러 페이지가 모여 하나의 블록을 형성하며, 데이터를 삭제할 수 있는 최소단위이다.
플레인(Plane): 여러 블록이 모여 플레인을 형성한다.
다이(Die): 하나의 실리콘 칩에 포함된 플레인의 집합이다. 플래시메모리는 여러 다이로 구성된다.
플래시 메모리에서 읽기/쓰기는 페이지(Page)단위로 이루어 지지만, 삭제는 블록(Block)단위로 이루어지는 이유는 플래시 메모리의 물리적 특성과 전기적 제약때문이다. 플래시 메모리에서 삭제(Erase)는 모든 셀의 전자를 제거(공급된 전압을 방전)하여 초기화하는 과정을 의미한다. 이 방전 과정은 블록 단위의 회로를 통해 수행되므로, 한 번에 전체 블록을 초기화해야한다. 하여 블록 단위로 삭제해야 전기적으로 효율적이고 하드웨어 설계가 단순해진다.

플래시 메모리 페이지 상태

페이지는 Free, Valid, Invalid 세 개의 상태를 가질 수 있다.
Free: 아직 데이터가 기록되지 않은 상태 ⇒ 새로운 데이터를 저장할 수 있는 상태
Valid: 이미 유효한 데이터가 저장된 상태
Invalid: 쓰레기값(Garbage)이라 불리는 유효하지 않은 데이터를 저장하고 있는 상태
유효하지 않은 데이터는 덮어쓰기, 파일 삭제, TRIM 명령, 데이터 이동, 오류 등으로 인해 더이상 사용되지 않는 데이터를 의미한다.
이러한 데이터는 플래시 메모리에 남아 있지만, 참조되지 않으며 나중에 가비지컬렉션을 통해 정리되어 새로운 데이터를 저장할 공간으로 활용된다.
데이터 덮어쓰기: 플래시 메모리는 기존 데이터를 직접 수정할 수 없고, 새 데이터를 덮어쓸 때는 이전 데이터를 무효화(Invalid)하고 새로운 위치에 데이터를 기록한다.
가비지컬렉션(GC, Garbage Collection)은 플래시 메모리의 유효하지 않은(Invalid) 데이터를 처리하고, Free 상태(비어진 블록)의 페이지를 확보하는 과정이다.
1.
블록의 유효 데이터(valid 상태)만 새로운 블록으로 복사한다.
2.
복사가 완료 후, 기존 블록은 삭제(Erase)과정을 통해 비워지고 Free 상태로 전환한다.

07-02 RAID 정의와 종류

RAID의 정의

RAID(Redundant Array of Independent Disks)는 여러 개의 물리적 하드디스크 드라이브를 조합하여 하나의 논리적 디스크처럼 사용하는 기술이다. 데이터를 분산 저장하거나 중복 저장함으로써 성능향상, 데이터 보호, 또는 둘 다를 목표로 한다.
RAID를 구성하는 방법은 여러가지 있다. RAID 구성 방법을 RAID레벨이라 함. RAID 레벨에는 대표적으로 RAID 0, 1, 2, 4, 5, 6이 있고, 그로부터 파생된 RAID 10, RAID 50 등이 있다. 이들 중 가장 대중적인 RAID 0, 1, 4, 5, 6에 대해 알아본다.
스트라이핑(Striping)
데이터를 블록 단위로 분할하여 여러 디스크에 병렬로 처리 ⇒ 읽기/쓰기 성능 향상 - RAID0, RAID5, RAID6
미러링(Mirroring)
동일한 데이터를 여러 디스크에 중복 저장, 복사 저장 ⇒ 데이터 복구 - RAID1, RAID10
패리티 비트(Parity bit)
데이터를 복구할 수 있는 체크 정보를 추가로 저장 ⇒ 데이터 복구 - RAID5, RAID6
오류를 검출하는 패리티 비트 원래 패리티 비트는 오류 검출만 가능할 뿐 오류 복구는 불가능하지만, RAID에서 패리티 값으로 오류 검출 및 오류 복구도 가능하다.
RAID
구성 방식
장점
단점
용도
RAID 0
스트라이핑
최고 성능, 용량 100% 활용
장애 복구 불가
고속 데이터 처리(게임, 비디오 편집 등)
RAID 1
미러링
높은 신뢰성, 읽기 성능 향상
저장 공간 낭비, 쓰기 성능 제한
금융 데이터, 고신뢰성 데이터
RAID 4
스트라이핑 + 단일 패리티
데이터 복구 가능
패리티 디스크 병목
성능보다 데이터 보호가 중요한 환경
RAID 5
스트라이핑 + 분산 패리티
데이터 복구 가능, 공간 효율적
쓰기 성능 약간 저하, 두 디스크 손상 시 복구 불가
서버, NAS
RAID 6
스트라이핑 + 이중 분산 패리티
두 디스크 손상에도 복구 가능, 신뢰성 높음
쓰기 성능 저하, 저장 공간 더 많이 소모
데이터센터, 고신뢰성 환경

RAID 종류

RAID 0(스트라이핑)

데이터를 여러 디스크에 나눠서 저장하는 구성 방식이다. 분산하여 저장하는 것을 줄무늬 같다 하여 스트라이핑(striping)이라 한다. 데이터가 분산되어 저장되면 읽기/쓰기 속도가 대폭 향상된다. 왜냐하면 저장 장치 한 개에서 읽고 쓰는 속도 보다 여러 개의 장치에서 데이터를 동시에 읽고 쓰는 속도가 빠르기 때문이다. 하지만 하나의 디스크만 손상되어도 모든 데이터는 손실되는 단점이 있다.

RAID 1(미러링)

RAID1은 데이터를 복제하여 동일한 데이터를 두 개의 디스크에 저장하는 방식이다. 하나의 디스크가 손상되어도 데이터 복구가 가능하다. 쓰기 속도는 RAID 0보다 느리고, 사용 가능한 용량은 디스크 총 용량의 50%로 사용 가능햔 용량이 적어지는 단점이 있다.

RAID 4 (블록 기반 스트라이핑 + 단일 패리티)

RAID1 처럼 완전한 복사본을 만드는 대신 오류를 검출하고 복구하기 위한 정보를 저장한 장치를 두는 구성 방식이다. 이때 오류를 검출하고 복구하기 위해 한 디스크에 패리티 비트(parity bit)를 저장한다. 하나의 디스크가 손상되어도 패리티 비트를 사용해 복구가 가능하다. 하지만 새로운 데이터가 저장될 때마다 패리티를 저장하는 디스크에도 데이터를 쓰게 되므로 패리티를 저장하는 장치에 병목 현상이 발생한다. (쓰기 작업 시 모든 패리티 업데이트) 따라서 성능보다 데이터 보호를 더 중시하는 환경에서 사용된다.

RAID 5(블록 기반 스트라이핑 + 분산 패리티)

데이터를 여러 디스크에 블록 단위로 스트라이핑하며, 패리티 정보를 디스크에 분산 저장한다. 하나의 디스크가 손상되어도 복구가 가능하며, RAID 4의 문제인 병목 현상을 해소한다. 하지만 패리티 계산으로 인해 쓰기 성능이 약간 저하되고, 두 개 이상의 디스크 손상 시 데이터 복구가 불가하다.

RAID 6 (블록 기반 스트라이핑 + 이중 분산 패리티)

데이터를 스트라이핑하고, 서로 다른 두 개의 패리티를 분산하여 저장하는 방식이다. 두 개로 디스크 손상에도 데이터 복구가 가능하므로 RAID 5보다 높은 신뢰성을 제공한다. 하지만 패리티 계산으로 인해 쓰기 성능이 저하되며, 저장공간이 낭비 된다. 따라서 고 신뢰성이 필요한 환경(예: 데이터센터, 대규모 서버)에서 사용된다.
그림 9장 블록 계층

블록 계층

블록 계층(Block Layer)은 리눅스 커널에서 블록 장치(예: HDD, SSD)의 성능 최적화를 담당하는 계층이다. 데이터 요청을 디바이스 드라이버에 전달하고, 큐잉 및 병렬 처리 등을 수행한다.
블록장치(저장 장치) 성능 향상을 위한 커널 기능인 블록 계층(Block layer)
블록 장치의 구체적인 조작 방법은 장치별로 다르지만, 종류가 같다면 성능을 끝어내는 방법은 서로 비슷하다. 리눅스의 블록 장치의 성능 향상을 위한 처리는 디바이스 드라이버가 아니라 블록계층으로 별도로 나눈다.

하드 디스크의 특징

블록 계층의 기본 기능

블록 장치의 성능 지표와 측정 방법

커널의 블록 계층이 성능에 어떤 영향을 주는지 이해하기 위해서는 블록 장치 성능이 무엇을 뜻하는지 알아야한다. 블록 장치 성능에는 여러가지 종류가 있는데 그게 다음과 같은 종류가 있다.
스루풋
레이턴시(latency)
IOPS
우선 프로세스 하나가 블록 장치에 접근해서 블록 입출력을 호출하는 단순한 경우에서 → 다수의 프로세스가 병렬로 입출력을 호출하는 경우로 확장하여 설명한다.

스루풋

스룻푼: 단위 시간데이터 전송량
단위 시간?

레이턴시()

레이턴시: 입출력 1회당 걸린 시간,
저장 장치의 응답 성능을 나타내는 지표 , 사용자 입장에서 시스템 응답 속도에 큰 영향을 주는 중요한 지표이다.

IOPS

IOPS(Input/Output Operations Per Second)는 초당 입출력 작업의 처리 횟수를 나타내는 성능 지표이다. 블록 장치의 읽기/쓰기 성능을 평가할 때 중요한 기준으로 사용된다.

성능 측정 도구: fio

실습: 블록 계층이 하드 디스크 성능에 주는 영향

실습: 블록 계층이 NVMe SSD 성능에 미치는 영향← 실제로 진행 못함.

실업무 문제상황 + 확인 명령어 + 트러블 슈팅

핵심정리
다양한 보조기억장치
하드 디스크의 구성요소에는 플래터, 스핀들, 헤드, 디스크 암이 있다.
플래터는 트랙과 섹터로 나뉘고, 여러 플래터의 동일한 트랙이 모여 실린더를 이룬다.
하드 디스크의 데이터 접근 시간은 크게 (1)탐색시간 (2)회전지연 (3)전송시간으로 나뉜다.
플래시 메모리는 한 셀에 몇 비트를 저장할 수 있느냐에 따라 SLC, MLC, TLC로 나뉜다.
플래시 메모리의 읽기와 쓰기는 페이지 단위로, 삭제는 블록 단위로 이루어 진다.
RAID 정의와 종류
RAID란 데이터의 안전성 혹은 높은 성을 위해 여러 하드 디스크나 SSD를 마치 하나의 장치처럼 사용하는 기술이다.
RAID0: 데이터를 단순히 병렬로 분산하여 저장
RAID1: 완전한 복사본을 만든다.
RAID4: 패리티를 저장한 장치를 따로 두는 방식
RAID5: 패리티를 분산하여 저장하는 방식
RAID6: 서로 다른 두 개의 패리티를 두는 방식

Q&A

하드디스크의 주요 구성 요소는 무엇인가요?
하디디스크의 데이터 구조는 무엇이 있나요?
하드디스크의 데이터 접근 시간은 무엇으로 구성되나요?
RAID의 정의와 주요 사용 목적은 무엇인가요?
RAID 0과 RAID 1의 차이점은 무엇인가요?
RAID 5와 RAID 6의 주요 차이점은 무엇인가요?

플래시 메모리 관련 질문

플래시 메모리의 주요 장점과 단점은 무엇인가요?
플래시 메모리의 저장 구조는 무엇이 있고, 각 차이점은 무엇인가요? ← 셀 관련
플래시 메모리의 데이터 구조의 구성은 어떻게 되는가?
플래시 메모리의 페이지 상태는 무엇이 있는가?
플래시 메모리에서 가비지 컬렉션()이란 무엇인가요?

성능 및 블록 계층 관련 질문

블록 계층이란 무엇인가요?
IOPS란 무엇인가요?
스루풋이란?
레이턴시란?
filo관련 명령어
Search
Main PageCategoryTagskkogggokkAbout MeContact