DEV/OS

HDD는 왜 IOPS 기준으로 provisioning이 제공되지 않을까?

행운개발자 2025. 4. 14. 22:07
728x90

File Storage, Block Storage, Object Storage의 차이점을 알아보기 이전에 HDD와 SSD 등의 기본 개념을 되짚어보고 AWS와 같은 클라우드 서비스에서 어떤 차이를 보이는지 알아본다.

HDD와 SSD 개념

HDD

HDD의 기본적인 구조는 넘어가고 중요한 요소한 다뤄보려고 한다. HDD는 기계적인 구조를 갖춘 저장 장치이다. 디스크 I/O 시간은 다음 세 가지 요소로 구성된다.

  • Seek Time: 헤더가 해당 트랙으로 이동하는 시간
  • Rotational Latency: 디스크가 회전하여 데이터가 헤더에 도달할 때까지 기다리는 시간
  • Data Transfer Time: 데이터를 실제로 전송하는 시간

주의사항은 디스크에 표기된 transfer rate는 디스크 내부 속도이며, OS나 애플리케이션에 전달되는 속도와 다를 수 있다는 점이다.

SSD (Nonvolatile Memory Devices)

SSD는 반도체 기반 저장장치로, 기계적 지연이 없고 빠른 응답성이 특징이다. 주로 Flash NAND와 컨트롤러로 구성되어 있다. 3가지 operation을 지원하는데 READ > WRITE > ERASE 속도를 가진다. 특이사항은 데이터를 쓰려면 먼저 ERASE가 필요하다. NAND cell은 일반적으로 10만 회 erase 후 수명이 다한다. 그래서 영구적으로 사용할 수 없다.

  • DWPD (Drive Writes Per Day): 예를 들어 1TB SSD가 5 DWPD이면, 하루에 5TB까지 쓰는 것이 가능

SSD는 GC를 통해서 invalid한 데이터를 지워야 새로운 데이터를 쓸 수 있다. Garbage Collection 로직이 invalid한 data의 location을 옮기고 erase가 되어 write를 할 수 있는 준비를 한다. 전체 용량 중 20%는 over-provisioning의 영역으로 지정되어서 invalid한 데이터가 지워진 뒤에 over-provisioning으로 지정된다. over-provisioning을 통해서 GC의 효율적인 동작이 가능해진다

SSD는 수 많은 NAND Cell로 구성되는데, NAND Cell은 가장 작은 저장 단위이다. 전자의 존재 유무로 1비트를 저장한다. Die는 Cell 들의 집합으로 병렬처리를 수행하는 하드웨어의 최소 단위이다. Die가 많으면 병렬처리 연산 능력이 커진다.

AWS EBS 설정 둘러보기

AWS EBS의 과금 모델은 아래와 같다.

볼륨 유형 요금 구조
Provisioned IOPS SSD (io2) - Storage $0.125/GB-month
Provisioned IOPS SSD (io2) - IOPS $0.065/provisioned IOPS-month up to 32,000 IOPS
Throughput Optimized HDD (st1) Volumes $0.045 per GB-month of provisioned storage

위 표는 SSD와 HDD의 차이를 보여준다. SSD는 과금의 기준이 Storage와 IOPS이고 HDD는 Throughput 이다. (SSD 중에서 gp3는 Throughput 기준의 과금도 있긴 하다.) HDD는 왜 IOPS를 기준으로 과금되지 않을까? HDD의 전체 데이터 속도를 구성하는 요소들을 보면 상대적으로 개선의 여지가 더 적다. 구조적으로 높은 IOPS를 제공할 수 없다. 하드웨어적으로 부품이 움직어야하기 때문이다. 반면에 SSD는 Die가 추가됨에 따라서 (크기가 커짐에 따라서) 병렬 연산을 수행할 수 있는 연산 처리량을 확보할 수 있다.

$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0   8G  0 disk
├─nvme0n1p1   259:1    0   8G  0 part /
└─nvme0n1p128 259:2    0   1M  0 part

기타

Volatile Memory

DRAM은 휘발성 메모리로, 임지 파일이나 빠른 캐시 용도로 사용된다. 프로그램에서 DRAM 영역에 데이터를 쓰면 다른 프로세스에서도 사용할 수 있다. linux booting 과정에서도 storage devices가 loading되기 전까지 temporary file을 DRAM 영역에 저장한다.

  • linux : /dev/ram
  • macOs : diskutil command create them

Secondary Storage Connection Methods

저장 장치는 system bus or I/O bus를 통해서 연결된다. 연결 방식에는 ATA, SATA 등의 여러가지가 있고 SATA 방식이 많이 사용되곤 한다. 좀 더 빠른 연결을 위해서 특별한 interface가 개발되었는데 바로 NVMe이다. NVMe는 device를 system PCI bus에 바로 연결해서 increse throughput, decresing latency를 지원한다.

Reference

  • OS 공룡책
728x90