데이터 저장 용량 산정
디스크를 얼마나 준비해야 하는지 계산하는 방법입니다. 설치 전에 한 번, 그리고 수집 대상을 늘릴 때마다 다시 계산합니다.
한 줄 규칙
초당 1,000건을 받아 1년치를 저장하면 1 TB 입니다.
1년은 31,536,000초이므로 초당 1,000건이면 연간 31,536,000,000건 이고, 그것이 1 TB 입니다.
왜 태그 개수가 아니라 초당 건수인가
디스크를 채우는 것은 태그가 아니라 값 입니다. 같은 태그 1,000개라도 수집 주기가 1초면 초당 1,000건이지만 10초면 초당 100건입니다. 용량은 10배 차이가 납니다.
그래서 산정의 기준은 언제나 초당 수신 건수 하나입니다.
수집 주기가 섞여 있으면 그룹별로 나눠 더합니다.
초당 건수 = Σ ( 그 그룹의 태그 수 ÷ 그 그룹의 수집 주기(초) )
1초 주기 태그 500개 + 10초 주기 태그 3,000개 + 1분 주기 태그 6,000개
500 ÷ 1 = 500
3000 ÷ 10 = 300
6000 ÷ 60 = 100
──────────────
합계 900 건/초 → 1년치 0.9 TB
계산식
연간 건수 = 초당 건수 × 31,536,000
용량(TB) = 초당 건수 ÷ 1,000 × 보관 연수
보관 기간이 1년이 아니면 그만큼 비례합니다. 6개월이면 절반, 2년이면 두 배입니다.
초당 건수별 용량
| 초당 수신 건수 | 하루 건수 | 1년 건수 | 1년치 용량 | 3년치 용량 |
|---|---|---|---|---|
| 100 | 8,640,000 | 3,153,600,000 | 0.1 TB | 0.3 TB |
| 500 | 43,200,000 | 15,768,000,000 | 0.5 TB | 1.5 TB |
| 1,000 | 86,400,000 | 31,536,000,000 | 1 TB | 3 TB |
| 2,000 | 172,800,000 | 63,072,000,000 | 2 TB | 6 TB |
| 5,000 | 432,000,000 | 157,680,000,000 | 5 TB | 15 TB |
| 10,000 | 864,000,000 | 315,360,000,000 | 10 TB | 30 TB |
| 20,000 | 1,728,000,000 | 630,720,000,000 | 20 TB | 60 TB |
| 50,000 | 4,320,000,000 | 1,576,800,000,000 | 50 TB | 150 TB |
보관 기간이 곧 용량입니다
「얼마나 받는가」와 「얼마나 오래 두는가」 둘이 용량을 정합니다. 받는 양은 현장이 정하지만 보관 기간은 설정으로 정합니다.
원시 수집값은 Aster TSDB 에 보존 기간(TTL)이 걸린 채로 들어갑니다. 태그 원시값의 기본 보존 기간은 3650일(10년) 입니다 — 즉 기본 설정에서는 위 표의 「1년치」가 10년 동안 쌓이는 셈이므로, 산정할 때 보관 연수를 실제로 정해 두어야 합니다.
디스크는 두 층으로 나뉩니다.
| 층 | 무엇이 있나 | 크기를 정하는 것 |
|---|---|---|
Aster TSDB (/data1) | 원시값과 집계·샘플링 테이블. 화면·알람·조회가 읽는다 | 테이블별 TTL |
| 오브젝트 스토리지 | 아카이브에서 넘어간 과거 데이터. 분석·리포트가 읽는다 | 아카이브 주기와 총 보관 연수 |
집계·샘플링 테이블은 원시값보다 훨씬 짧습니다(기본 93일). 그래서 「1년치 1 TB」를 그대로 곱하면 과다 산정이 되고, 반대로 원시값을 10년 두면 과소 산정이 됩니다. 보존 기간을 먼저 정하고 나서 용량을 계산하세요.
기본값과 바꾸는 방법은 데이터 보존 기간(TTL) 설정 에 있습니다. 자료 구조는 데이터베이스 모델 을 보세요.
산정치보다 넉넉히 잡습니다
계산해서 나온 숫자는 출발점 이지 구매할 용량이 아닙니다. 같은 디스크에 이런 것들이 함께 있어야 합니다.
- Compaction 작업 공간 — Aster TSDB 는 조각난 파일을 합치면서 일시적으로 원본과 결과를 동시에 들고 있습니다. 여유가 없으면 compaction 이 멈추고, 멈추면 읽기가 느려집니다.
- 파생 테이블 — 집계·샘플링·카운트 테이블은 조회 속도를 위해 쓸 때 미리 만들어 둡니다. 원시 데이터와 별도로 자리를 차지합니다.
- 백업과 로그 — 스냅샷, commitlog, 컨테이너 로그가 같은 디스크에 쌓입니다.
Aster TSDB 는 디스크가 부족해지면 compaction 을 미루고, 미룬 만큼 읽기가 느려집니다. 장애로 드러나기 전에 느려지는 것으로 먼저 나타납니다. 사용률을 감시 대상에 넣으세요 — 시스템 모니터링.
계산 예시
현장 조건
- 1초 주기 태그 800개
- 5초 주기 태그 4,000개
- 원시값 보존 기간을 3년 으로 정함
계산
초당 건수 = 800 ÷ 1 + 4000 ÷ 5
= 800 + 800
= 1,600 건/초
1년치 = 1,600 ÷ 1,000 = 1.6 TB
3년치 = 1.6 × 3 = 4.8 TB
여기에 compaction 여유와 파생 테이블, 백업 자리를 더해 데이터 디스크를 잡습니다. 시스템 요구사항 의 권장 사양과 비교해 더 큰 쪽을 따르세요.
관련 문서
- 시스템 요구사항 — CPU · 메모리 · 디스크 권장 사양
- 데이터 보존 기간(TTL) 설정 — 얼마나 오래 둘지 정하기
- 데이터베이스 모델 — 어떤 테이블에 무엇이 쌓이는지
- 성능 튜닝 — 디스크와 메모리 관련 설정