SSD 수명 지표: TBW, DWPD와 NAND 종류(SLC·MLC·TLC·QLC)
이 문서는 SSD 쓰기 수명을 나타내는 TBW와 DWPD의 정의와 환산, NAND 셀 종류별 내구성 경향, SLC 캐시·쓰기 증폭·오버프로비저닝이 수명에 미치는 영향, NVMe SMART 로그로 남은 수명을 읽는 방법, 빌드 서버와 DB용 SSD를 고르는 기준을 정리합니다.
TBW와 DWPD, 같은 쓰기 한도를 두 단위로 적은 값
TBW(TeraBytes Written)는 JEDEC JESD218이 정한 SSD 내구성 등급입니다. 제조사는 응용 등급별로 정해진 작업 부하를 걸었을 때 호스트가 쓸 수 있는 최대 테라바이트 수를 TBW로 정하며, 그 양을 쓰는 동안 용량 유지, 등급별 UBER(정정 불가 비트 오류율), 기능 고장률, 전원 차단 상태의 데이터 보존 기간을 모두 만족해야 합니다(JEDEC JC-64.8 발표 자료). TB는 운영체제 표시와 맞추기 위해 십진 단위(10^12 바이트)로 셉니다.
JESD218은 응용 등급을 클라이언트와 엔터프라이즈 둘로 나눕니다. 같은 TBW라도 어느 등급의 조건으로 매긴 값인지에 따라 뜻이 다릅니다.
| 등급 | 사용 조건(전원 켬) | 보존 조건(전원 끔) | 기능 고장률 | UBER |
|---|---|---|---|---|
| 클라이언트 | 40°C, 하루 8시간 | 30°C, 1년 | 3% | 10^-15 |
| 엔터프라이즈 | 55°C, 하루 24시간 | 40°C, 3개월 | 3% | 10^-16 |
출처: JEDEC JC-64.8 발표 자료, Western Digital 백서.
DWPD(Drive Writes Per Day)는 보증 기간 동안 매일 드라이브 전체 용량을 몇 번 덮어쓸 수 있는지로 같은 한도를 나타냅니다. Western Digital 백서에 따르면 클라이언트 제품은 주로 TBW로, 엔터프라이즈 제품은 주로 DWPD로 표기합니다. 두 값은 다음 식으로 오갑니다.
TBW = DWPD × 용량(TB) × 365 × 보증 연수
DWPD = TBW ÷ (용량(TB) × 365 × 보증 연수)예를 들어 Samsung 990 PRO 데이터시트는 1TB 모델을 600TBW, 보증 5년으로 적습니다. 600 ÷ (1 × 365 × 5) = 약 0.33 DWPD이고, 하루 약 329GB를 5년 동안 쓰는 양입니다. 같은 데이터시트는 보증이 기간과 TBW 중 먼저 도달하는 쪽에서 끝난다고 밝힙니다. 반대 방향으로는 Micron 7450 제품 소개서의 7450 PRO(1 DWPD, 보증 5년) 7.68TB가 계산값 7.68 × 1 × 365 × 5 = 14,016TB에 가까운 14,000TB로 표기됩니다. 같은 문서의 960GB 모델은 계산값 1,752TB 대신 1,700TB로 적혀 있어, 데이터시트 TBW는 식에서 나온 값과 몇 % 어긋날 수 있습니다.
TBW는 측정 조건에 묶인 값입니다. Micron 7450의 TBW는 드라이브를 사용자 용량까지 가득 채운 상태에서 100% 랜덤 4KB 정렬 쓰기를 가정한 값이라고 각주에 적혀 있습니다. Solidigm은 QLC 제품 D5-P5336 61.44TB의 수명을 랜덤 쓰기 기준 65PBW(0.58 DWPD), 순차 쓰기 기준 최대 213PBW로 따로 적습니다. 같은 드라이브라도 쓰기 패턴에 따라 한도가 세 배 넘게 달라집니다.
셀당 비트가 늘수록 줄어드는 P/E 사이클
NAND 셀은 절연막 안에 가둔 전하량으로 값을 나타내고, 프로그램(쓰기)과 소거를 반복할 때마다 절연 산화막이 조금씩 손상됩니다(Western Digital 백서). 한 셀이 견디는 프로그램/소거 횟수를 P/E 사이클이라고 부릅니다. 셀당 비트가 하나 늘면 구분해야 할 전압 상태가 두 배가 되어 상태 사이 여유가 좁아지고, 같은 손상에도 값을 잘못 읽기 쉬워집니다. Solidigm은 QLC가 16개 전압 준위를 쓰고 TLC의 두 배이므로 NAND 수준의 P/E 사이클이 TLC보다 상대적으로 낮다고 설명합니다.
| 종류 | 셀당 비트 | 전압 상태 | P/E 사이클(대략) | 출처 |
|---|---|---|---|---|
| SLC | 1 | 2 | 50,000~100,000 | Micron NAND 가이드(SLC 최대 100,000), Wikipedia |
| MLC | 2 | 4 | 1,000~10,000 | Wikipedia |
| TLC | 3 | 8 | 최대 3,000 안팎 | Wikipedia |
| QLC | 4 | 16 | 최대 1,000 안팎 | Wikipedia, Solidigm(TLC보다 낮음) |
표의 P/E 수치는 경향을 보이기 위한 대략 범위입니다. JEDEC 규격은 셀 종류별 P/E 사이클을 정하지 않으며, 같은 TLC라도 공정 세대, 3D 적층 구조, 제조사, 산업용과 소비자용 등급에 따라 값이 다릅니다. 제조사 대부분은 SSD 제품에 원시 NAND의 P/E 사이클을 공개하지 않고 TBW나 DWPD만 공개합니다. ATP는 계산 예시에서 TLC 3,000회, TLC를 SLC 방식으로 쓰는 pSLC 40,000회를 가정하면서 이 값이 설명용이라고 밝힙니다. YMTC처럼 자사 3D QLC가 3D TLC 수준의 내구성을 낸다고 발표한 제조사도 있습니다(Tom's Hardware). 셀 종류는 경향을 짐작하는 데 쓰고, 실제 비교는 제품 데이터시트의 TBW와 DWPD로 합니다.
SLC 캐시: TLC·QLC 위에 흉내 낸 빠른 쓰기 구간
Samsung TurboWrite 백서는 셀당 3비트 NAND가 추가 비트 때문에 쓰기(프로그램) 중 신호 처리와 오류 정정이 더 필요해 느리다고 설명합니다. SLC 캐시는 NAND 일부를 셀당 1비트로만 써서 빠른 쓰기 버퍼로 삼는 방식입니다. 같은 백서는 840 EVO 기준으로 동작을 이렇게 설명합니다. 호스트가 보낸 데이터는 먼저 SLC 방식 버퍼에 빠르게 쓰이고, 유휴 시간에 본 저장 영역(TLC)으로 옮겨집니다. 버퍼 크기는 SLC 기준으로 적으며 물리적으로는 그 세 배의 TLC 영역을 차지합니다. 1TB 모델의 버퍼는 12GB였고, 쉬지 않고 계속 쓰면 버퍼가 차서 TLC 속도로 바로 쓰게 됩니다(250GB 모델 기준 순차 쓰기 520MB/s에서 270MB/s).
수명 관점에서 볼 점은 두 가지입니다. 첫째, 버퍼에서 본 영역으로 옮기는 과정은 NAND에 한 번 더 쓰는 일이므로 호스트가 쓴 양과 NAND에 실제로 쓰인 양이 달라지는 원인 중 하나입니다. 둘째, 데이터시트의 쓰기 속도는 캐시가 켜진 상태의 값입니다. Samsung 990 PRO 데이터시트는 순차·랜덤 쓰기 성능을 Intelligent TurboWrite가 동작하는 상태로 측정했고, 이 기능은 특정 전송 크기 안에서만 동작한다고 각주에 적습니다. 캐시 크기와 캐시 소진 뒤 속도는 제품마다 다르고 데이터시트에 없는 경우가 많습니다. 대용량 이미지 빌드나 DB 복원처럼 수십~수백 GB를 연달아 쓰는 작업은 캐시 밖의 속도로 계획합니다.
쓰기 증폭(WAF)과 오버프로비저닝이 정하는 실제 소모량
JEDEC은 쓰기 증폭 계수(WAF)를 NVM에 실제로 쓰인 데이터량을 호스트가 SSD에 쓴 데이터량으로 나눈 값으로 정의합니다(JEDEC JC-64.8 발표 자료). NAND는 페이지 단위로 쓰고 여러 페이지가 모인 블록 단위로만 지울 수 있어서, 일부만 바뀐 블록을 비우려면 아직 유효한 페이지를 다른 곳으로 옮겨 써야 합니다(가비지 컬렉션). 같은 자료의 Intel 예시에서는 한 블록 안의 8섹터를 고치려고 블록 전체(256섹터)를 다시 쓰는 읽기-수정-쓰기 방식을 가정하며, 이 경우 WAF는 32입니다. 블록 전체를 채우는 큰 순차 쓰기라면 WAF는 1에 가깝습니다.
WAF를 키우는 요인으로 JEDEC 자료는 순차와 랜덤의 비율, 전송 크기, 경계 정렬, 데이터 내용(압축을 쓰는 SSD의 경우)을 꼽고, 작은 랜덤 쓰기가 가장 큰 WAF를 만든다고 적습니다. 같은 자료의 예시식은 TBW와 WAF의 관계를 보여 줍니다.
TBW < (용량 × NAND P/E 사이클) ÷ (2 × WAF)여기서 2는 마모 평준화가 완벽하지 않아 가장 많이 쓰인 블록이 평균의 두 배만큼 쓰인다고 본 여유 계수이고, 예시용 가정입니다. 식이 말하는 요점은 WAF가 두 배가 되면 쓸 수 있는 호스트 쓰기량이 절반이 된다는 것입니다.
오버프로비저닝(OP)은 호스트에 보이지 않게 남겨 둔 여분 NAND입니다. Samsung FDP 백서는 OP를 물리 용량 ÷ 논리 용량 − 1로 정의하고, 여분이 많을수록 가비지 컬렉션 때 옮길 유효 데이터가 줄어 WAF가 낮아진다고 설명합니다. 같은 백서의 랜덤 쓰기 모델 예시에서 OP 10%일 때 WAF 5.7인 부하가 OP 약 23%에서는 WAF 2.85로 절반이 됩니다. 이 모델은 랜덤 쓰기 부하 기준이며 실제 WAF는 부하에 따라 다르다고 백서가 덧붙입니다. ATP는 자사 산업용 제품의 기본 OP를 7%로 두고, 쓰기가 많은 용도에는 14%, 28%, 50% 구성을 제공한다고 밝힙니다. 사용자는 드라이브 일부를 파티션하지 않고 비워 두거나 NVMe 네임스페이스를 작게 만들어 OP를 늘릴 수 있으며, 그 영역은 한 번도 쓰지 않았거나 TRIM으로 해제된 상태여야 컨트롤러가 여분으로 활용할 수 있습니다.
남은 수명의 기준은 SMART 로그의 Percentage Used
NVMe SSD는 SMART/Health Information 로그(로그 식별자 02h)로 수명 정보를 냅니다. 아래 정의는 NVMe 1.4 규격 Figure 194 기준입니다.
| 필드 | 규격 정의 | 읽는 법 |
|---|---|---|
| Percentage Used | 실제 사용량과 제조사의 NVM 수명 예측을 바탕으로 한 제조사별 수명 사용률 추정치 | 100이면 추정 내구성을 다 썼다는 뜻이며 고장을 뜻하지는 않음. 100을 넘을 수 있고 254 초과는 255로 표시. 전원이 켜진 시간 기준 1시간마다 갱신 |
| Data Units Written | 호스트가 쓴 512바이트 단위 수를 1,000으로 나눈 값(올림), 메타데이터 제외 | 바이트 = 값 × 1,000 × 512. LBA가 4KB여도 512바이트 단위로 환산해 기록 |
| Available Spare | 남은 예비 영역 비율(0~100%) | Available Spare Threshold 아래로 내려가면 경고 |
| Critical Warning | 비트별 경고 | 0번 비트: 예비 영역 부족, 2번: 신뢰성 저하, 3번: 읽기 전용 전환 |
Data Units Written은 1 단위가 512,000바이트입니다. 값이 1,000,000이면 5.12 × 10^11바이트, 곧 512GB입니다. 이 값은 호스트가 쓴 양이므로 TBW와 바로 비교할 수 있지만, 컨트롤러 내부 쓰기는 들어 있지 않아 WAF는 보이지 않습니다. 같은 규격의 Endurance Group 로그(09h)를 지원하는 드라이브는 호스트 쓰기(Data Units Written)와 가비지 컬렉션을 포함한 NAND 쓰기(Media Units Written)를 따로 내므로, 두 값의 비로 WAF를 추정할 수 있습니다. 이 로그는 단위가 다르다는 점에 주의합니다. 02h 로그는 512,000바이트 단위이고 09h 로그는 10^9바이트 단위입니다.
리눅스에서는 nvme-cli의 nvme smart-log /dev/nvme0나 smartmontools의 smartctl -a /dev/nvme0로 이 필드를 읽습니다. Western Digital 백서는 드라이브가 보고하는 수명 사용률이 호스트 쓰기가 아니라 실제 NAND P/E 사이클을 바탕으로 하므로 실제 부하에서 가장 중요한 지표라고 설명하고, Micron 7450 제품 소개서도 실제 수명은 부하에 따라 다르므로 02h 로그의 Percentage Used로 확인하라고 적습니다. 지금까지 쓴 기간 동안 Percentage Used가 오른 속도를 앞으로도 그대로 이어 간다고 가정하면 남은 기간을 어림할 수 있습니다. 이는 부하가 변하지 않는다는 가정 위의 선형 추정입니다.
SATA SSD의 ATA SMART 속성은 번호와 의미가 제조사마다 달라, 수명 속성은 해당 제조사 문서나 도구로 확인합니다. 수명 한도에 이른 드라이브는 전기적으로 계속 동작하더라도 읽기 오류율이 크게 오르고 보존 기간을 보장하지 않으므로, 중요한 데이터라면 교체 대상으로 봅니다(Western Digital 백서).
빌드 서버와 DB의 선택을 가르는 실측 DWPD와 쓰기 패턴
선택은 실제 하루 쓰기량을 재는 데서 시작합니다. 기존 장비에서 Data Units Written을 하루 간격으로 두 번 읽어 차이를 바이트로 바꾸고, 새 드라이브 용량으로 나누면 필요한 DWPD가 나옵니다. 이 값을 후보 제품의 DWPD와 비교하되, 등급 측정 부하(클라이언트는 PC 사용 기록 재생, 엔터프라이즈는 4KB·8KB 위주 랜덤 쓰기)와 실제 부하의 WAF가 다를 수 있으므로 여유를 둡니다.
| 용도 | 쓰기 특성 | 우선해서 볼 항목 |
|---|---|---|
| 빌드 서버, CI 러너 | 컴파일 산출물, 의존성 캐시, 컨테이너 이미지 레이어처럼 크고 작은 파일을 반복해서 만들고 지움 | 실측 DWPD 대비 TBW, 긴 연속 쓰기에서 SLC 캐시 소진 뒤 속도, TRIM 동작 |
| 데이터베이스 | 작은 랜덤 쓰기와 잦은 동기화(fsync), 로그 선행 기록 | 엔터프라이즈 등급의 DWPD, 전원 손실 보호(PLP), OP 여유, 랜덤 쓰기 기준 TBW |
| 읽기 위주 저장소(아카이브, 모델·미디어 파일) | 한 번 쓰고 여러 번 읽음 | 용량당 가격, QLC 허용 여부 |
엔터프라이즈 제품은 한 제품군 안에서 DWPD 등급을 나눠 내기도 합니다. Micron 7450은 읽기 위주 PRO를 1 DWPD, 혼합 용도 MAX를 3 DWPD로 두며, MAX는 PRO보다 사용자 용량을 작게 잡습니다(E1.S 최대 용량 기준 PRO 7.68TB, MAX 6.4TB). 같은 문서는 전원이 끊길 때 전송 중인 데이터를 기록하는 전원 손실 보호를 제품 기능으로 적습니다. Solidigm은 QLC 제품을 랜덤 쓰기가 많지 않은 용도에 권합니다.
빌드 서버는 쓰기량이 많아도 순차에 가까운 큰 파일 비중이 높으면 소비자용 TLC의 TBW 안에 드는 경우가 있습니다. 판단은 실측 DWPD로 하고, 운영 중에는 Percentage Used 증가 속도를 주기적으로 기록해 교체 시점을 미리 잡습니다. DB는 작은 랜덤 쓰기가 WAF를 키우므로 랜덤 쓰기 기준 TBW를 공개한 엔터프라이즈 등급을 우선하고, 여유가 부족하면 파티션을 작게 잡아 OP를 늘리는 방법을 함께 씁니다. 전원을 끈 채 보관하는 백업 매체로 쓸 때는 JESD218 보존 조건(클라이언트 30°C 1년, 엔터프라이즈 40°C 3개월)이 수명 한도에서의 요구치라는 점을 고려합니다.
참고: 원시 NAND의 P/E 사이클은 규격이 정하지 않고 제품마다 공개 여부가 다르므로, 수치는 경향 설명에만 쓰고 비교는 데이터시트의 TBW·DWPD와 드라이브가 보고하는 Percentage Used로 합니다.
함께 읽기
- UPS 용량 계산: VA와 W의 차이, 역률과 버티는 시간이 문서는 UPS를 고를 때 필요한 VA와 W의 관계, 역률, 부하 합산과 여유율, 부하에 따른 런타임 변화, UPS 방식과 출력 파형의 차이를 정리합니다.
- USB-C 케이블 구분법: 전송 속도, PD 충전 전력, E-marker이 문서는 겉모양이 같은 USB-C 케이블을 데이터 속도, 충전 전력, E-marker 칩, Thunderbolt 인증, 영상 출력 지원 여부로 구분하는 기준과 USB-IF 표기를 읽는 방법을 정리합니다.
- PoE 규격 정리: 802.3af·at·bt 전력과 전력이 실리는 짝이 문서는 IEEE 802.3af·802.3at·802.3bt PoE(Power over Ethernet) 규격의 Type과 클래스별 전력, 전압 범위, 전력이 실리는 핀 쌍, 수동 PoE와의 차이, 스위치 PoE 예산 계산, 케이블 발열 주의점을 정리합니다.
- HDMI·DisplayPort 버전별 대역폭: 해상도·주사율 한계와 조건이 문서는 HDMI 1.42.1과 DisplayPort 1.22.1의 버전별 대역폭, 해상도·주사율 한계, DSC 압축, 색 깊이와 크로마 서브샘플링의 영향, 케이블 인증 등급, 노트북 USB-C 출력의 제약을 정리합니다.
- 키스톤 잭과 패치 패널 결선: 110 펀치다운 순서와 T-568B 라벨이 문서는 벽 단자와 패치 패널에 쓰는 키스톤 잭을 110 방식으로 결선할 때 필요한 슬롯 라벨 읽기, 펀치다운 작업 순서, 꼬임 해제 한도, 영구 링크와 채널의 구분을 정리합니다.