13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] Ceph 스토리지

  • [Proxmox] Ceph 스토리지 성능 벤치마크: HDD vs SSD, 홈랩에서 직접 해보니

    [Proxmox] Ceph 스토리지 성능 벤치마크: HDD vs SSD, 홈랩에서 직접 해보니

    [Proxmox] Ceph 스토리지 성능 벤치마크: HDD vs SSD, 홈랩에서 직접 해보니

    안녕하세요, 13년차 서버실 지킴이입니다. 오늘은 제가 홈랩에서 직접 겪고 실험해 본 Proxmox Ceph 스토리지 성능 벤치마크 이야기를 풀어볼까 합니다. 특히 많은 분이 궁금해하시는 HDD와 SSD OSD의 성능 차이에 대해 집중적으로 다뤄볼 거예요.

    분산 스토리지(Distributed Storage)하면 역시 Ceph가 떠오르죠? 고가용성(High Availability)과 확장성(Scalability) 덕분에 엔터프라이즈 환경은 물론, 저처럼 홈랩을 운영하는 인프라 엔지니어들에게도 매력적인 솔루션입니다. 그런데 Ceph를 막상 구축하고 나면 이런 고민에 빠지게 됩니다. ‘과연 어떤 디스크를 써야 최적의 성능을 낼 수 있을까?’ 특히 가상 머신(VM)이나 데이터베이스(DB)처럼 랜덤 I/O가 많은 워크로드에서는 스토리지 성능이 정말 중요하거든요.

    그래서 제가 직접 Proxmox Ceph 환경에서 HDD와 SSD OSD의 성능을 비교 벤치마크 해봤습니다. 여러분의 Ceph 스토리지 구축에 도움이 되셨으면 좋겠네요! 💡

    Proxmox Ceph 클러스터 아키텍처 다이어그램: 3개 노드와 Ceph OSD 구성

    Proxmox Ceph 클러스터 아키텍처 다이어그램: 3개의 Proxmox 노드가 Ceph OSD를 구성하고 VM에 스토리지를 제공하는 모습입니다.

    Ceph 스토리지, 그리고 OSD의 역할

    먼저, Ceph와 OSD(Object Storage Daemon)가 무엇인지 간단하게 짚고 넘어갈게요. Proxmox VE (Virtual Environment)는 오픈소스 가상화 플랫폼이고, 이 Proxmox 환경 위에서 Ceph는 강력한 분산 스토리지 시스템으로 동작합니다. Ceph의 핵심은 바로 OSD인데요, 쉽게 말해 Ceph 클러스터의 ‘일꾼’이라고 보시면 됩니다. 실제 데이터를 저장하고 관리하는 디스크 하나하나가 OSD가 되는 거죠. OSD 하나의 성능이 전체 클러스터의 성능을 결정합니다.

    특히 Ceph의 최신 스토리지 엔진인 BlueStore를 사용하면, 데이터와 별도로 메타데이터(Metadata)와 쓰기-선행 로그(Write-Ahead Log, WAL), RocksDB 같은 내부 DB를 관리하는데요. 이들을 고성능 디스크로 분리해주면 OSD 성능이 크게 올라갑니다. 이번 벤치마크에서는 OSD 전체를 HDD 또는 SSD로 구성해서 비교해봤습니다.

    홈랩 Ceph 클러스터 실전 구현

    제 홈랩 환경은 Proxmox 노드 3개로 구성되어 있습니다. 이 3개의 노드에 각각 Ceph OSD를 하나씩 생성해서 클러스터를 구성했어요. Proxmox VE의 웹 UI(User Interface)는 Ceph 설치와 OSD 생성을 정말 쉽고 직관적으로 할 수 있게 해줍니다. 처음엔 이게 뭔가 싶었는데, 클릭 몇 번으로 클러스터 구성이 끝나더라고요. 정말 편합니다!

    1. Ceph OSD 생성

    • HDD OSD 구성: 각 노드에 장착된 일반 3.5인치 HDD를 Ceph OSD로 추가했습니다.
    • SSD OSD 구성: 그리고 테스트를 위해 SATA SSD를 각 노드에 추가하여 Ceph OSD로 구성했습니다. BlueStore도 당연히 사용했고요.

    OSD가 제대로 생성되었는지 확인하는 명령어는 다음과 같습니다.

    
    ceph status
    ceph osd tree
    

    Proxmox VE 웹 UI에서 Ceph OSD를 생성하는 화면입니다. 디스크 선택, BlueStore 엔진 사용 여부 등을 설정할 수 있습니다.

    2. 벤치마크 VM 준비

    성능 벤치마크는 FIO (Flexible I/O Tester) 도구를 썼습니다. FIO는 다양한 I/O 패턴(Random Read/Write, Sequential Read/Write 등)과 블록 사이즈(Block Size), 큐 깊이(Queue Depth)를 조절하여 실제 워크로드와 유사한 환경을 만들 수 있어서 아주 유용하거든요. Proxmox에서 VM을 하나 만들고, Ceph RBD(RADOS Block Device) 스토리지를 붙여준 다음 그 VM 안에서 FIO를 실행했어요.

    간단한 FIO 명령어 예시입니다.

    
    fio --name=randwrite --ioengine=libaio --iodepth=64 --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --group_reporting
    

    ⚠️ 삽질 경험담: 주의사항 및 트러블슈팅

    이런 벤치마크를 진행하다 보면 꼭 삽질을 하게 되죠. 저도 예외는 아니었습니다. ㅎㅎ

    • 네트워크 대역폭의 중요성: Ceph는 분산 스토리지 시스템인 만큼, 노드 간 통신이 매우 중요합니다. 처음엔 1GbE(기가비트 이더넷)로 테스트했는데, 아무리 SSD OSD를 써도 성능이 기대 이하였습니다. Ceph 성능의 병목(Bottleneck)이 바로 네트워크였던 거죠. 결국 10GbE 환경으로 바꾸고 나서야 제대로 된 성능을 뽑아낼 수 있었습니다. 혹시 Ceph 성능이 안 나온다면, 제일 먼저 네트워크 대역폭을 의심해보세요!

    • 디스크 속도 편차: Ceph 클러스터는 가장 느린 OSD의 속도에 맞춰지는 경향이 있습니다. 모든 OSD 디스크의 성능이 균일해야 클러스터 전체의 성능을 최대로 끌어올릴 수 있습니다. 이 점도 꼭 기억해주세요.

    • FIO 설정의 중요성: FIO 옵션을 어떻게 주느냐에 따라 결과가 천차만별입니다. 실제 사용하려는 워크로드가 랜덤 I/O인지 순차(Sequential) I/O인지, 블록 사이즈는 어떤지, 큐 깊이는 어느 정도인지 등을 잘 고려해서 설정해야 의미 있는 벤치마크 결과를 얻을 수 있습니다. 무작정 높은 수치만 쫓기보다는, ‘우리 환경에 맞는’ 벤치마크를 하는 게 중요하거든요.

    Ceph 스토리지 성능 벤치마크 결과: HDD vs SSD

    자, 이제 가장 궁금해하실 벤치마크 결과입니다. 제가 설정한 FIO 시나리오(블록 사이즈 4k, 큐 깊이 64)에서 HDD OSD와 SSD OSD의 IOPS (Input/Output Operations Per Second), Throughput (처리량), Latency (지연 시간)를 측정했습니다.

    HDD OSD 성능 결과

    • 랜덤 읽기/쓰기 IOPS: 500 ~ 1,000 IOPS 수준
    • 순차 읽기/쓰기 Throughput: 80 ~ 150 MB/s 수준
    • 평균 Latency: 10 ~ 30 ms (밀리초)

    역시 HDD는 랜덤 I/O 성능이 많이 떨어지는 것을 볼 수 있습니다. 순차 I/O는 그나마 괜찮은 편이지만, 현대적인 가상화 환경에서는 부족함이 많죠.

    SSD OSD 성능 결과

    • 랜덤 읽기/쓰기 IOPS: 10,000 ~ 20,000 IOPS 수준 (HDD 대비 10배 이상!)
    • 순차 읽기/쓰기 Throughput: 400 ~ 500 MB/s 수준
    • 평균 Latency: 0.5 ~ 1 ms (밀리초)

    결과는 압도적이었습니다. 특히 랜덤 I/O 성능에서는 HDD와 비교할 수 없는 수준을 보여줬습니다. Latency 또한 매우 낮아서, 가상 머신이나 데이터베이스처럼 지연 시간에 민감한 워크로드에 SSD OSD가 얼마나 중요한지 다시 한번 깨달았네요.

    Proxmox Ceph 스토리지 HDD vs SSD 성능 벤치마크 결과 그래프 (IOPS, Throughput, Latency 비교)

    FIO 벤치마크를 통해 얻은 HDD OSD와 SSD OSD의 IOPS, Throughput, Latency 비교 그래프입니다.

    지표 HDD OSD (대략적) SSD OSD (대략적) 비고
    랜덤 I/O IOPS 500 ~ 1,000 10,000 ~ 20,000 SSD가 약 10~20배 우위
    순차 I/O Throughput 80 ~ 150 MB/s 400 ~ 500 MB/s SSD가 약 3~5배 우위
    평균 Latency 10 ~ 30 ms 0.5 ~ 1 ms SSD가 훨씬 낮은 지연 시간

    마무리하며: Ceph 스토리지, 현명한 선택을 위한 가이드

    이번 벤치마크로 HDD와 SSD의 성능 차이가 정말 큰 걸 다시 한번 느꼈습니다. 특히 가상화 환경에서 VM을 운영하거나, 데이터베이스, 웹 서비스 등 랜덤 I/O가 많고 지연 시간에 민감한 서비스에는 SSD OSD가 필수라는 결론을 내릴 수 있어요.

    물론 HDD OSD도 장점이 있습니다. 단위 용량당 가격이 저렴해서 대용량 아카이빙(Archiving) 스토리지, 백업(Backup) 스토리지, 또는 순차 I/O 위주의 워크로드에는 여전히 좋은 선택이 될 수 있거든요. 하지만 고성능을 요구하는 메인 스토리지로는 이제 SSD를 대체하기 어렵습니다. 예산과 서비스의 목적에 맞춰서 현명하게 디스크를 선택하는 것이 중요하겠죠.

    저도 이번 벤치마크를 진행하면서 많은 걸 배웠습니다. 특히 네트워크의 중요성이나 FIO 설정의 디테일까지 다시 한번 되새기게 되었네요. 다음번에는 NVMe SSD로 OSD를 구성해서 성능이 얼마나 나올지, 그리고 WAL/DB를 분리했을 때의 효과는 어떨지 한번 파헤쳐 볼까 합니다. 기대해주세요! 🎉

    Ceph 스토리지 HDD vs SSD OSD 장단점 및 활용 시나리오 요약 인포그래픽

    Ceph 스토리지에서 HDD와 SSD OSD의 장단점 및 각각의 활용 시나리오를 요약한 인포그래픽입니다.

  • [Proxmox] Proxmox Ceph 스토리지 1년 실사용 후기: 장점, 단점, 비용 분석

    [Proxmox] Proxmox Ceph 스토리지 1년 실사용 후기: 장점, 단점, 비용 분석

    Proxmox Ceph 스토리지 1년 실사용 후기: 장점, 단점, 비용 분석

    안녕하세요, 13년차 서버실 지킴이입니다. 13년차 인프라 엔지니어로 홈랩을 운영하면서 가장 크게 느꼈던 부분 중 하나가 바로 스토리지거든요. 처음엔 NAS(Network Attached Storage) 하나로 버텨봤는데, VM(Virtual Machine)도 늘어나고 데이터도 중요해지면서 단일 스토리지의 한계에 부딪히더라고요.

    Proxmox VE(Virtual Environment)를 쓰면서 여러 노드를 묶는 건 좋았는데, 각 노드에 붙은 로컬 스토리지(Local Storage)만으로는 VM 마이그레이션(Live Migration)이나 고가용성(High Availability, HA)을 구현하기가 애매했어요. 그래서 결국 분산 스토리지(Distributed Storage), 그중에서도 Ceph를 선택하게 됐고, Proxmox와 Ceph의 조합이 꽤 괜찮다는 이야기를 듣고 직접 구축해서 1년 넘게 써봤습니다. 그 솔직한 후기를 여러분께 공유해볼까 합니다. 저의 삽질 경험과 해결 과정이 여러분의 홈랩 구축에 도움이 되기를 바랍니다!

    Proxmox와 Ceph를 활용한 홈랩 분산 스토리지의 일반적인 아키텍처 다이어그램입니다. 여러 노드가 Ceph 클러스터를 구성하고 Proxmox가 이를 스토리지로 활용하는 구조를 보여줍니다.

    개념 설명: Proxmox Ceph, 도대체 뭘까요?

    Ceph(세프)는 오픈소스 기반의 분산 스토리지 시스템(Distributed Storage System)이거든요. 쉽게 말해, 여러 대의 서버에 있는 하드디스크나 SSD(Solid State Drive)를 마치 하나의 거대한 저장 공간처럼 묶어서 쓸 수 있게 해주는 기술입니다. 이게 단순히 파일 공유를 넘어, 블록 스토리지(Block Storage)나 객체 스토리지(Object Storage)까지 다양한 인터페이스를 제공해서 VM 디스크나 컨테이너 볼륨으로 쓰기에 아주 적합하더라고요.

    Proxmox VE는 가상화 플랫폼인데, Ceph 클러스터를 직접 구성하고 관리할 수 있는 기능이 내장돼 있어요. 덕분에 별도의 스토리지 서버를 구축하지 않고도 기존 Proxmox 노드를 활용해서 분산 스토리지를 만들 수 있죠. 이게 바로 제가 Ceph를 선택한 결정적인 이유 중 하나입니다. 고가용성(High Availability)이나 실시간 마이그레이션(Live Migration) 같은 기능들을 Ceph 스토리지와 함께 쓰면 더욱 강력해지는 걸 경험할 수 있거든요.

    1년 실사용 후기: 장점은 확실하네요!

    제가 1년 동안 Proxmox Ceph를 쓰면서 가장 만족스러웠던 점들을 꼽아보자면 이렇습니다.

    • ✅ 데이터 안전성 및 고가용성(HA): Ceph는 데이터를 여러 노드에 복제(replication)해서 저장하거든요. 예를 들어, 제가 3개의 노드에 Ceph를 구성하고 복제본 3개(replica 3)로 설정했었는데, 어느 날 노드 하나가 갑자기 다운되어도 VM들은 아무 문제 없이 잘 돌아가는 걸 보고 감탄했습니다. 이게 바로 HA의 위력이죠. 데이터 손실 걱정 없이 안정적으로 서비스를 운영할 수 있다는 점이 가장 든든했어요.

    • ✅ 쉬운 확장성(Scalability): 스토리지 용량이 부족하면 그냥 새로운 노드를 추가하거나, 기존 노드에 디스크를 더 달아서 Ceph OSD(Object Storage Daemon)로 추가하면 돼요. Proxmox 웹 UI(User Interface)에서 몇 번 클릭만 해주면 Ceph 클러스터가 자동으로 재조정되면서 용량이 늘어나더군요. 이 확장성 덕분에 홈랩을 운영하면서 스토리지 용량 걱정을 덜었습니다. SSD 몇 개 더 달아서 Ceph OSD로 추가하면 끝! 정말 편하더라고요.

    • ✅ 준수한 성능(Performance): 제 홈랩에서는 SATA SSD와 HDD를 섞어 썼는데, SSD로 구성된 OSD에서는 VM 성능이 꽤 만족스러웠어요. 여러 OSD에 데이터가 분산되어 저장되니 병렬 처리 효과도 있어서 단일 디스크보다 빠릿한 느낌이었습니다. 물론 엔터프라이즈급 장비만큼은 아니지만, 홈랩에서는 차고 넘치는 성능이었어요.

    • ✅ Proxmox와의 긴밀한 통합 관리: Proxmox 웹 인터페이스에서 Ceph 클러스터의 상태를 한눈에 볼 수 있고, OSD 추가/삭제, 풀(Pool) 관리까지 대부분의 작업을 처리할 수 있어서 관리 편의성이 정말 좋았습니다. 처음엔 Ceph 명령어를 일일이 쳐야 하나 걱정했는데, 통합 관리(Integrated Management) 덕분에 삽질을 많이 줄일 수 있었죠. 이거 진짜 편하더라고요.

    Proxmox 웹 UI Ceph 클러스터 상태 대시보드 화면

    Proxmox 웹 UI에서 Ceph 클러스터의 전반적인 상태를 보여주는 대시보드 화면입니다. OSD 상태, Health, 용량 정보 등을 한눈에 확인할 수 있습니다.

    아쉬웠던 점: 단점과 삽질 경험

    물론 장점만 있었겠습니까? 1년 동안 쓰면서 아쉬웠던 점이나 삽질했던 경험들도 꽤 됩니다. 처음엔 이게 뭔가 싶었는데, 해결하고 나니 다 피가 되고 살이 되더군요. ㅎㅎ

    • ⚠️ 초기 설정 및 트러블슈팅의 복잡성: Proxmox UI가 많이 도와주긴 하지만, Ceph 클러스터의 기본적인 아키텍처(Mon, OSD, Mgr 등)를 이해하지 못하면 문제 발생 시 해결하기가 쉽지 않더라고요. 저는 처음에 Ceph Monitor(모니터)를 3개로 구성해야 안정적이라는 걸 모르고 1개로 시작했다가, 노드 하나가 다운되니 클러스터 헬스가 엉망이 되는 경험을 했습니다. 이럴 때 ceph status 명령어로 클러스터 상태를 확인해볼 수 있어요.

      ceph status

      이 명령어를 통해 Mon(모니터), OSD(오브젝트 스토리지 데몬) 등의 상태를 확인하고 문제점을 파악할 수 있었죠. 결국 Mon을 추가하고 안정화시키는 데 삽질 좀 했습니다.

    • ⚠️ 생각보다 높은 자원 소모: Ceph는 분산 스토리지다 보니 각 노드에서 OSD 프로세스가 계속 돌아갑니다. 특히 디스크 I/O가 많아지면 CPU 사용량도 꽤 올라가고, RAM도 OSD 하나당 최소 2~4GB 정도는 필요하다고 느껴졌어요. 홈랩에서 저사양 장비로 구성하려다 보니, VM 몇 개 돌리기도 전에 Ceph 자체가 자원을 너무 많이 먹어서 VM 성능이 저하되는 경험도 했었네요. 자원 계획(Resource Planning)이 정말 중요합니다. 이거 진짜 간과하기 쉬운 포인트예요!

    • ⚠️ 네트워크 대역폭의 중요성: Ceph는 노드 간에 데이터를 주고받는 통신이 매우 활발합니다. 처음엔 1GbE(기가비트 이더넷) 네트워크로 구성했다가 VM 성능이 영 시원찮아서 고생했어요. 데이터를 복제하고 재배치하는 과정에서 네트워크가 병목(bottleneck)이 되더군요. 결국 10GbE(텐 기가비트 이더넷) NIC(Network Interface Card)를 추가하고 스위치도 바꾸면서 해결했는데, 이 비용도 만만치 않았습니다. Ceph를 제대로 쓰려면 최소 10GbE 네트워크는 필수라고 생각해요.

    • ⚠️ 성능 튜닝의 어려움: Ceph의 성능을 최적화하려면 OSD 디스크의 종류(SSD vs HDD), 저널링(Journaling) 방식, 네트워크 구성, 풀(Pool) 설정 등 고려할 요소가 너무 많아요. 저도 여러 자료를 찾아보면서 이것저것 튜닝해봤지만, ‘이게 최적이다!’라고 딱 말하기가 어렵더라고요. 이 부분은 여전히 저에게 숙제로 남아있습니다.

    비용 분석: 홈랩에서 Ceph, 합리적일까요?

    그럼 이제 가장 궁금해하실 부분 중 하나, 비용 분석을 해볼 차례입니다. 홈랩에서 Proxmox Ceph를 구축하는 게 과연 합리적일까요? 저의 경우를 예로 들어볼게요. (대략적인 비용이며, 실제 제품명/가격은 언급하지 않습니다.)

    • 서버: 저는 기존에 가지고 있던 미니 PC 3대를 활용했습니다. (약 30만원 x 3대 = 90만원 상당)

    • 디스크: Ceph OSD용으로 SATA SSD 2TB 3개, HDD 4TB 3개를 추가 구매했습니다. (SSD 약 15만원 x 3개 = 45만원, HDD 약 10만원 x 3개 = 30만원)

    • 네트워크 장비: 10GbE NIC 3개와 10GbE 지원 스위치 1대를 구매했습니다. (NIC 약 8만원 x 3개 = 24만원, 스위치 약 20만원 = 20만원)

    • 전기 요금: 3대의 서버가 24시간 돌아가니 한 달에 대략 3~5만원 정도 추가 요금이 발생하더군요. (연간 36~60만원)

    초기 하드웨어 투자 비용만 대략 200만원 정도 들었습니다. 여기에 전기 요금까지 고려하면 꽤 부담될 수 있는 금액이죠. 하지만 이 비용으로 얻는 데이터 안전성, 고가용성, 확장성을 생각하면 충분히 가치 있는 투자라고 생각해요. 특히 소프트웨어 라이선스 비용이 없다는 점은 큰 장점입니다. 엔터프라이즈급 SDS(Software Defined Storage) 솔루션에 비하면 훨씬 저렴하게 동일한 수준의 분산 스토리지를 구축할 수 있거든요.

    하지만 삽질 비용(시간과 노력)은 계산하기 어렵습니다. 저처럼 직접 구성하고 문제를 해결하는 과정을 즐기는 분들에게는 더없이 좋은 경험이 되겠지만, 단순히 ‘편리한 스토리지’만을 원한다면 초기 진입 장벽이 높다고 느낄 수도 있어요. 이 부분은 스스로에게 질문을 던져봐야 합니다!

    Proxmox Ceph 스토리지 구축 및 운영 비용 분석 차트

    Proxmox Ceph 스토리지 구축 및 운영에 필요한 주요 비용 요소를 시각적으로 보여주는 원형 차트입니다. 하드웨어, 전기 요금, 소프트웨어(오픈소스), 그리고 시간/노력의 비율을 나타냅니다.

    결론: Proxmox Ceph, 당신에게 어울릴까요?

    자, 이제 1년 동안 Proxmox Ceph를 써본 저의 최종 결론을 말씀드릴 시간입니다.

    Proxmox Ceph 스토리지, 이런 분들께 강력 추천합니다!

    • 💡 고가용성(HA)과 데이터 안전성을 중요하게 생각하는 홈랩 사용자: 중요한 VM 데이터가 있다면 Ceph의 복제 기능은 정말 든든한 보험입니다.

    • 💡 분산 스토리지 기술을 깊이 있게 경험하고 싶은 인프라 엔지니어: 실제 환경에서 Ceph를 구축하고 운영해보는 것만큼 좋은 학습은 없어요. 저도 이 과정을 통해 많은 것을 배웠습니다.

    • 💡 확장성 있는 스토리지가 필요한 분: 나중에 용량이 부족해질까 걱정 없이, 필요할 때마다 노드나 디스크를 추가하여 유연하게 확장하고 싶은 분들께 아주 좋습니다.

    하지만 이런 분들께는 좀 더 고민해보시라고 말씀드리고 싶어요.

    • ❌ 단순히 저렴하고 빠른 스토리지만을 원하는 분: 초기 설정의 복잡성이나 자원 소모를 감당하기 어려울 수 있어요. 이 경우엔 그냥 단일 NAS나 로컬 SSD를 쓰는 게 더 나을 수도 있습니다.

    • ❌ 기술적인 삽질(?)을 즐기지 않는 분: 안정적인 운영을 위해서는 Ceph에 대한 기본적인 이해와 트러블슈팅 능력이 필요합니다. 그냥 설치만 하면 끝나는 게 아니거든요!

    Proxmox Ceph 스토리지 장점, 단점 및 추천 대상 요약 인포그래픽

    Proxmox Ceph 스토리지의 주요 장점과 단점을 요약하고, 어떤 사용자에게 적합한지 추천 대상을 시각적으로 정리한 인포그래픽입니다.

    마무리: 다음 여정은?

    1년 동안 Proxmox Ceph와 함께 하면서 정말 많은 것을 느끼고 배웠어요. 초반에는 삽질의 연속이었지만, 결국 안정적인 분산 스토리지를 구축하고 운영하게 되면서 인프라 엔지니어로서 한 단계 더 성장한 것 같습니다. 드디어 됐다! 하는 성취감도 있었고요.

    다음번에는 CephFS(Ceph File System)를 활용해서 여러 VM에서 공유 스토리지를 쓰는 방법에 대해서도 다뤄볼까 합니다. 아니면 Ceph 오브젝트 스토리지(Object Storage)를 연동해서 S3 호환 스토리지를 구축하는 이야기도 재미있겠네요. 이전 글에서 다뤘던 Proxmox 초기 설정 관련 내용도 함께 참고하시면 좋을 것 같아요.

    혹시 여러분도 Proxmox Ceph를 사용 중이시거나, 구축을 고민하고 계시다면 어떤 점이 가장 궁금하신가요? 댓글로 자유롭게 의견 남겨주세요! 저의 경험이 여러분의 홈랩 구축에 조금이나마 도움이 되었기를 바랍니다. 🎉

  • [Proxmox] Proxmox VE Ceph 클러스터 구축 및 관리 완벽 가이드

    홈랩에 엔터프라이즈급 스토리지를? Proxmox Ceph 클러스터 도전기

    솔직히 말씀드리면, 처음 Proxmox VE에서 Ceph 클러스터를 구축하려고 했을 때 겁부터 먹었습니다. “분산 스토리지”라는 단어 자체가 주는 무게감이 있잖아요. 대기업 IDC에서나 쓰는 그런 거 아닌가 싶었거든요. 근데 막상 해보니까… 생각보다 훨씬 접근하기 좋더라고요. 물론 삽질은 좀 했습니다 ㅎㅎ.

    Proxmox Ceph 클러스터는 단순히 스토리지 용량을 늘리는 게 아니에요. VM(가상 머신)이나 컨테이너가 어느 노드에서 죽더라도 데이터가 살아있는, 진짜 고가용성(High Availability) 인프라를 만드는 핵심 기술이거든요. 이걸 홈랩에 구현할 수 있다는 게 Proxmox VE의 진짜 매력이라고 생각해요. 오늘은 제가 직접 구축하면서 배운 것들을 처음부터 끝까지 다 풀어드릴게요.

    ▲ Proxmox VE 3노드 Ceph 클러스터 전체 아키텍처 — Public Network, Cluster Network, OSD 구성을 한눈에 볼 수 있습니다.


    Ceph가 뭔지부터 제대로 이해하고 시작하자

    쉽게 말해, Ceph는 어떤 녀석인가요?

    Ceph를 한 줄로 설명하면 “여러 서버의 디스크를 하나의 거대한 스토리지 풀로 묶어주는 오픈소스 분산 스토리지 시스템”입니다. 쉽게 비유하자면, 서버 3대가 있으면 각 서버의 디스크를 전부 합쳐서 하나의 큰 창고처럼 쓰는 거예요. 게다가 데이터를 여러 곳에 복사해두기 때문에 서버 한 대가 꺼져도 데이터는 안전합니다.

    Proxmox VE는 Ceph를 웹 UI에서 직접 설치하고 관리할 수 있도록 통합해놨어요. 예전에 Ceph를 별도로 구성하던 시절을 생각하면 정말 편해진 거죠.

    핵심 구성 요소 이해하기

    구축 전에 이 개념들은 꼭 알고 시작하세요. 처음엔 저도 이게 뭔가 싶었는데, 알고 나면 구성이 훨씬 명확하게 보입니다.

    • MON (Monitor): 클러스터 상태를 감시하는 감시자. 클러스터 맵(어디에 데이터가 있는지 지도)을 관리합니다. 홀수 개로 운영해야 해요 (3개 권장).
    • OSD (Object Storage Daemon): 실제 데이터를 저장하는 데몬. 디스크 하나당 OSD 하나가 대응됩니다. 클러스터의 일꾼이라고 생각하시면 돼요.
    • MGR (Manager): 클러스터 모니터링과 플러그인 관리를 담당. 대시보드, Prometheus 연동 등이 여기서 나옵니다.
    • MDS (Metadata Server): CephFS(파일 시스템)를 쓸 때만 필요한 메타데이터 서버. 오늘 구성에서는 선택사항입니다.
    • Pool (풀): 데이터를 저장하는 논리적 구획. 복제 수(Replication Factor)를 풀 단위로 설정합니다.
    • PG (Placement Group): 데이터를 OSD에 분산 배치하는 단위. 너무 많거나 적으면 성능에 영향을 줍니다.

    네트워크 구성, 이게 제일 중요합니다

    여기서 중요한 포인트! Ceph는 네트워크를 두 개로 분리하는 걸 강력히 권장합니다.

    네트워크 종류 역할 권장 대역폭 비고
    Public Network (퍼블릭 네트워크) 클라이언트 ↔ Ceph 통신, MON 통신 1Gbps 이상 VM이 스토리지에 접근하는 경로
    Cluster Network (클러스터 네트워크) OSD 간 복제 및 리밸런싱 트래픽 10Gbps 권장 분리하면 성능 대폭 향상

    홈랩에서 10Gbps 스위치가 없다면 최소한 두 개의 물리 인터페이스로 분리만 해도 효과가 있어요. 저는 처음에 네트워크를 하나로 합쳐서 썼다가 OSD 리밸런싱 때 VM 네트워크가 뚝뚝 끊기는 걸 경험했거든요 ㅠㅠ.


    구축 환경 및 사전 준비

    최소 구성 요구사항

    Ceph 클러스터는 최소 3개 노드가 필요합니다. 이건 협상이 안 되는 부분이에요. MON이 과반수 투표로 클러스터 상태를 결정하기 때문에 짝수 노드는 스플릿 브레인(Split-Brain) 위험이 있거든요.

    • ✅ 노드 수: 최소 3개 (홀수 권장)
    • ✅ OS: Proxmox VE 7.x 또는 8.x
    • ✅ OSD용 디스크: 노드당 최소 1개 (OS 디스크와 별도)
    • ✅ 네트워크: 노드 간 통신 가능한 네트워크 (가급적 2개 분리)
    • ✅ RAM: OSD 하나당 약 1~2GB 여유 RAM 필요

    제 홈랩 구성은 이렇습니다:

    • 노드 3개: pve01, pve02, pve03
    • 각 노드 OSD 디스크: 500GB SSD × 2개
    • Public Network: 192.168.10.0/24
    • Cluster Network: 192.168.20.0/24

    Proxmox 클러스터 먼저 구성하기

    Ceph를 시작하기 전에 Proxmox VE 클러스터가 먼저 구성되어 있어야 합니다. 아직 안 하셨다면 pve01에서 시작하세요.

    # pve01에서 클러스터 생성
    pvecm create my-homelab-cluster
    
    # pve02, pve03에서 클러스터 참여
    pvecm add 192.168.10.101  # pve01의 IP
    
    # 클러스터 상태 확인
    pvecm status

    클러스터가 정상이면 이제 Ceph 설치로 넘어갑니다.


    Proxmox Ceph 클러스터 단계별 구축

    ▲ Proxmox VE 웹 UI에서 Ceph 설치 마법사를 통해 직관적으로 구성할 수 있습니다. GUI와 CLI 모두 지원합니다.

    1단계: Ceph 패키지 설치

    모든 노드에서 아래 작업을 수행해야 합니다. Proxmox 웹 UI에서 각 노드 → Ceph → Install을 클릭해도 되고, CLI로 해도 됩니다. 저는 CLI가 더 빠르더라고요.

    # 모든 노드(pve01, pve02, pve03)에서 실행
    # Proxmox VE 8.x 기준 (Ceph Reef/Quincy 지원)
    pveceph install --version reef
    
    # 설치 완료 후 확인
    ceph --version

    💡 팁: Proxmox VE 8.x에서는 Ceph Reef(18.x)를 권장합니다. 버전은 Proxmox 버전에 맞게 선택하세요.

    2단계: Ceph 초기화 (pve01에서만)

    클러스터 초기화는 한 노드에서만 합니다. 여기서 네트워크 설정이 핵심이에요.

    # pve01에서만 실행
    # Public Network와 Cluster Network를 분리해서 설정
    pveceph init \
      --network 192.168.10.0/24 \
      --cluster-network 192.168.20.0/24
    
    # 초기화 확인
    ceph status

    3단계: MON (Monitor) 추가

    각 노드에 MON을 추가합니다. 3개 이상의 홀수로 유지하는 게 핵심이에요.

    # pve01에서 순서대로 실행
    # pve01 MON 추가
    pveceph mon create pve01
    
    # pve02 MON 추가 (pve02에서 실행하거나 pve01에서 원격 실행)
    pveceph mon create pve02
    
    # pve03 MON 추가
    pveceph mon create pve03
    
    # MON 상태 확인
    ceph mon stat

    4단계: MGR (Manager) 추가

    # 각 노드에 MGR 추가 (Active/Standby 구성)
    pveceph mgr create pve01
    pveceph mgr create pve02
    pveceph mgr create pve03
    
    # MGR 상태 확인
    ceph mgr stat

    5단계: OSD 추가 — 진짜 데이터 저장소 만들기

    이 단계가 제일 중요합니다. OSD를 추가하기 전에 대상 디스크가 완전히 초기화되어 있어야 해요. 파티션이 남아있으면 추가가 안 됩니다.

    # 디스크 초기화 (주의: 데이터 전부 날아갑니다!)
    # 각 노드에서 OSD용 디스크 확인
    lsblk
    
    # 디스크에 남은 파티션/서명 제거
    wipefs -a /dev/sdb
    wipefs -a /dev/sdc
    
    # OSD 추가 (pve01의 /dev/sdb, /dev/sdc)
    pveceph osd create /dev/sdb
    pveceph osd create /dev/sdc
    
    # pve02에서도 동일하게
    pveceph osd create /dev/sdb
    pveceph osd create /dev/sdc
    
    # pve03에서도 동일하게
    pveceph osd create /dev/sdb
    pveceph osd create /dev/sdc
    
    # OSD 상태 확인
    ceph osd stat
    ceph osd tree

    ⚠️ 주의: wipefs 명령어는 되돌릴 수 없습니다. 반드시 올바른 디스크를 대상으로 하는지 lsblk로 두 번, 세 번 확인하세요. 저는 처음에 하마터면 OS 디스크를 날릴 뻔 했습니다 식은땀 났었어요.

    6단계: Pool (풀) 생성

    이제 실제 VM 디스크를 저장할 풀을 만들 차례입니다.

    # VM 디스크용 RBD(RADOS Block Device) 풀 생성
    # size=3: 데이터를 3개 복사 (3노드에 각 1개씩)
    # min_size=2: 최소 2개 복사본이 있어야 쓰기 허용
    pveceph pool create vm-pool --add-storages
    
    # 풀 상세 설정 (복제 수 조정)
    ceph osd pool set vm-pool size 3
    ceph osd pool set vm-pool min_size 2
    
    # PG 수 설정 (OSD 수에 따라 조정 — OSD 6개 기준)
    # 공식: (OSD 수 × 100) / 복제 수 → 가장 가까운 2의 제곱수
    ceph osd pool set vm-pool pg_num 128
    ceph osd pool set vm-pool pgp_num 128
    
    # 풀 상태 확인
    ceph osd pool ls detail

    💡 PG 수 계산 팁: OSD가 6개면 (6 × 100) / 3 = 200 → 2의 제곱수로 올림하면 256이 되지만, 홈랩 규모에서는 128도 충분합니다. 너무 많으면 오히려 오버헤드가 생겨요.

    7단계: Proxmox Storage에 Ceph 등록

    # Proxmox 스토리지로 등록 (이미 --add-storages 옵션으로 자동 등록됐을 수 있음)
    # 웹 UI: Datacenter → Storage → Add → RBD
    
    # CLI로 확인
    pvesm status

    ⚠️ 실제로 겪은 트러블슈팅 모음

    문제 1: OSD가 계속 down/out 상태

    OSD를 추가했는데 계속 down 상태로 떠있더라고요. 원인을 찾아보니 디스크에 예전 Ceph 서명이 남아있었어요.

    # 해결 방법: 더 강력한 디스크 초기화
    dd if=/dev/zero of=/dev/sdb bs=1M count=100
    wipefs -a /dev/sdb
    
    # 그래도 안 되면 sgdisk로 파티션 테이블 초기화
    sgdisk --zap-all /dev/sdb
    
    # 이후 OSD 재추가
    pveceph osd create /dev/sdb

    문제 2: ceph status가 HEALTH_WARN — “too few PGs per OSD”

    PG 수가 OSD 대비 너무 적거나 많을 때 나오는 경고입니다. 이건 풀의 PG 수를 조정하면 됩니다.

    # 현재 PG 상태 확인
    ceph osd pool ls detail
    
    # PG 수 조정 (늘릴 때는 두 배씩)
    ceph osd pool set vm-pool pg_num 256
    ceph osd pool set vm-pool pgp_num 256
    
    # PG 자동 조정 활성화 (Nautilus 이상)
    ceph osd pool set vm-pool pg_autoscale_mode on

    문제 3: 클러스터 네트워크 쪽 OSD 통신 불량

    Cluster Network를 분리했는데 OSD 간 복제가 안 되는 경우가 있었어요. 방화벽 문제였습니다.

    # Ceph OSD 포트 허용 (6800-7300)
    # pve 방화벽 설정 확인
    cat /etc/pve/firewall/cluster.fw
    
    # 임시로 방화벽 꺼서 테스트
    pve-firewall stop
    
    # 정상 확인 후 방화벽 규칙 추가
    # /etc/pve/firewall/cluster.fw 에 추가:
    # [RULES]
    # IN ACCEPT -p tcp --dport 6800:7300 -s 192.168.20.0/24

    문제 4: VM 마이그레이션 시 느림

    Ceph 스토리지로 라이브 마이그레이션(Live Migration)을 했는데 엄청 느렸어요. 알고 보니 마이그레이션 네트워크가 Public Network를 타고 있어서였습니다. Proxmox에서 마이그레이션 전용 네트워크를 지정해주면 해결됩니다.

    # /etc/pve/datacenter.cfg 에서 마이그레이션 네트워크 설정
    migration: secure
    migration_unsecure: 192.168.20.0/24

    ✅ 클러스터 상태 검증 및 모니터링

    ▲ Ceph 클러스터가 정상 구성되면 HEALTH_OK 상태와 함께 OSD 트리, 풀 사용량을 실시간으로 확인할 수 있습니다.

    필수 확인 명령어

    # 전체 클러스터 상태 (이게 제일 중요)
    ceph status
    ceph health detail
    
    # OSD 상태 및 트리 구조
    ceph osd tree
    ceph osd stat
    
    # 풀 사용량
    ceph df
    ceph osd pool stats
    
    # I/O 실시간 모니터링
    ceph -w
    
    # 성능 확인
    rados bench -p vm-pool 10 write --no-cleanup
    rados bench -p vm-pool 10 seq

    정상 상태 체크리스트

    • ✅ ceph status → HEALTH_OK 표시
    • ✅ MON 쿼럼(Quorum): 3/3 참여
    • ✅ OSD: all up, all in (예: 6/6 OSDs up)
    • ✅ PG: active+clean 상태
    • ✅ MGR: active 1개 + standby 2개

    Proxmox 대시보드에서도 확인

    웹 UI에서 Datacenter → Ceph 메뉴로 가면 OSD 상태, 풀 사용량, I/O 그래프를 한눈에 볼 수 있어요. 이게 진짜 편합니다. CLI로 하나씩 확인하던 시절이 생각나서 감동받았던 기억이 나네요.


    CephFS로 공유 파일시스템도 만들어보자 (보너스)

    VM 디스크(RBD) 외에도 CephFS(Ceph File System)를 구성하면 여러 VM이 동시에 마운트할 수 있는 공유 스토리지를 만들 수 있어요. Kubernetes의 PVC(Persistent Volume Claim)에도 활용할 수 있고요.

    # MDS(Metadata Server) 추가
    pveceph mds create pve01
    pveceph mds create pve02  # 스탠바이용
    
    # CephFS 생성
    pveceph fs create --name cephfs --add-storages
    
    # 상태 확인
    ceph fs status
    ceph mds stat

    CephFS 마운트 설정은 다음 글에서 Kubernetes 연동과 함께 자세히 다룰 예정입니다!


    구성 옵션 비교 — 내 환경에 맞는 선택은?

    ▲ 환경별 Ceph 구성 전략 비교 — 홈랩, 소규모 사업장, 엔터프라이즈 환경에 따라 최적 구성이 다릅니다.

    구성 옵션 홈랩 (3노드) 소규모 프로덕션 엔터프라이즈
    복제 수 (size) 2~3 3 3+
    OSD 디스크 SATA SSD NVMe SSD NVMe + WAL 분리
    클러스터 네트워크 1Gbps 분리 10Gbps 25Gbps+
    MON 수 3 3~5 5
    BlueStore WAL/DB OSD와 동일 디스크 별도 NVMe 권장 별도 NVMe 필수

    홈랩에서는 복제 수를 2로 설정해서 실제 사용 가능 용량을 늘리는 분들도 있는데, 저는 개인적으로 3을 유지하는 걸 권장합니다. 노드 하나가 죽었을 때도 데이터 안전성이 보장되니까요.


    자주 묻는 질문 (FAQ)

    Q. Ceph는 2노드로 구성할 수 없나요?

    기술적으로 가능은 하지만 권장하지 않습니다. MON이 2개면 한 노드가 죽었을 때 쿼럼을 유지할 수 없어서 클러스터 전체가 멈춥니다. 최소 3노드를 유지하세요.

    Q. 기존 Proxmox에 Ceph를 나중에 추가해도 되나요?

    네, 됩니다! Proxmox 클러스터가 이미 구성된 상태에서 Ceph를 나중에 추가해도 전혀 문제없어요. 저도 그렇게 했거든요. 기존 VM들은 로컬 스토리지를 계속 쓰고, 새 VM부터 Ceph 풀을 지정하면 됩니다.

    Q. OSD 디스크는 HDD도 되나요?

    됩니다. 다만 HDD는 레이턴시(응답 지연)가 높아서 VM 성능에 영향을 줍니다. 가능하면 SSD를 권장하고, HDD를 써야 한다면 BlueStore의 WAL(Write-Ahead Log)과 DB를 별도 SSD에 올리는 구성을 고려해보세요.

    Q. 클러스터에 노드를 나중에 추가할 수 있나요?

    네, Ceph의 가장 큰 장점 중 하나가 바로 수평 확장(Horizontal Scaling)입니다. 노드를 추가하면 Ceph가 자동으로 데이터를 재분배(Rebalancing)합니다. 다만 리밸런싱 중에는 I/O가 좀 느려질 수 있어요.


    마무리 — Proxmox Ceph의 진짜 가치

    처음 Ceph를 공부할 때 “이게 홈랩에서 쓸 수 있는 건가?” 싶었는데, 이제는 제 인프라에서 없어서는 안 될 핵심이 됐습니다. Proxmox VE + Ceph 클러스터 조합이 주는 진짜 가치는 이거예요.

    • 🎉 진짜 고가용성: 노드 하나가 죽어도 VM이 살아있는 인프라
    • 🎉 스토리지 통합 관리: 웹 UI 하나로 모든 걸 관리
    • 🎉 무중단 확장: 서비스 중단 없이 디스크/노드 추가 가능
    • 🎉 오픈소스 무료: 엔터프라이즈급 기능을 라이선스 비용 없이

    물론 단점도 있어요. 초기 구성이 복잡하고, 리소스(특히 RAM)를 꽤 먹습니다. 그리고 문제가 생겼을 때 디버깅이 쉽지 않을 수 있고요. 하지만 한 번 제대로 구성해두면 그 안정성은 정말 믿음직스럽습니다.

    다음 글에서는 Ceph 클러스터 위에 Kubernetes를 올리고 CSI(Container Storage Interface) 드라이버로 연동하는 방법을 다룰 예정이에요. 이전에 Proxmox 기본 클러스터 구성 글도 참고하시면 이번 내용이 더 잘 이해되실 겁니다.

    궁금한 점이나 삽질 경험이 있으시면 댓글로 남겨주세요. 저도 아직 배우는 중이니까요 😄