惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Last Watchdog
The Last Watchdog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
Y
Y Combinator Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
博客园_首页
小众软件
小众软件
I
InfoQ
J
Java Code Geeks
月光博客
月光博客
S
Secure Thoughts
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Stack Overflow Blog
Stack Overflow Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Cloudflare Blog
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Latest news
Latest news
G
GRAHAM CLULEY
IT之家
IT之家
C
Cisco Blogs
Last Week in AI
Last Week in AI
Engineering at Meta
Engineering at Meta
L
LangChain Blog
The Register - Security
The Register - Security
SecWiki News
SecWiki News
M
MIT News - Artificial intelligence
NISL@THU
NISL@THU
T
Tenable Blog
博客园 - Franky
美团技术团队
I
Intezer
U
Unit 42
雷峰网
雷峰网
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
SegmentFault 最新的问题
C
Cyber Attacks, Cyber Crime and Cyber Security

OneUptime Blog

How to Monitor Azure App Services (PaaS) with OpenTelemetry Grafana Stack vs OneUptime: DIY Observability or Unified Platform? Your AI Workloads Are About to Blow Up Your Observability Bill The Great Observability Consolidation Is Here How to Write Custom Object Classes for Ceph How to Write Custom Ceph Manager Modules How to Write a ceph.conf Configuration File How to Use Rook-Ceph with OpenShift How to Configure Volume Snapshot Class for RBD in Rook How to Configure VolumeReplicationClass Scheduling Intervals in Rook How to Set Up Volume Replication with Rook-Ceph How to Create Volume Group Snapshots with Rook CSI How to Visualize Ceph Network Performance in Grafana How to Enable Virtual Host-Style Bucket Access in Rook How to View Runtime Configuration via Admin Socket How to View Quota Settings and Update Stats in Ceph RGW How to View PG Scaling Recommendations with autoscale-status How to View PG Distribution via Admin Socket How to View Performance Metrics in the Ceph Dashboard How to View OSD Performance Counters in Ceph How to View Connection Status via Admin Socket How to View Ceph Cluster Summary Dashboard via CLI How to Version Control Rook-Ceph Configuration How to Version Control Ceph Infrastructure with Terraform How to Verify Kubernetes Node Requirements for Rook-Ceph Deployment How to Verify Health Before and After Rook Upgrades How to Verify Data Integrity with Deep Scrubbing How to Verify Complete Rook-Ceph Cleanup How to Verify Backup Integrity from Ceph Snapshots How to Use Rook-Ceph with Velero for Kubernetes Backup How to Integrate HashiCorp Vault with Rook-Ceph (Token Auth) How to Configure TLS for Vault Integration in Rook How to Integrate HashiCorp Vault with Rook-Ceph (Kubernetes Auth) How to Validate Ceph Cluster Configuration After Deployment How to Understand User Type and ID Notation (TYPE.ID) in Ceph How to Configure User Management in the Ceph Dashboard How to Use Rook-Ceph with Kubernetes Operators How to Use Rook-Ceph with Helm Chart Deployments How to Use the Swift API with Ceph RGW How to Use SQLite Databases Stored on Ceph How to Use s3cmd with Ceph RGW How to Use the S3 API with Ceph RGW How to Use Red Hat Ceph with RHEL Virtualization How to Use RBD with QEMU How to Use RBD with Nomad How to Use RBD with CloudStack How to Use RBD Snapshot Rollback How to Use rados bench for Object Storage Benchmarking How to Secure Rook-Ceph with Pod Security Admission How to Use pg-upmap for PG Mapping in Ceph How to Use Multipath Devices with Ceph OSDs How to Use MinIO Client (mc) with Ceph RGW How to Use fs swap for CephFS How to Use fio for Ceph Block Storage Benchmarking How to Use the CephFS Shell How to Use Ceph RGW for Media Asset Management How to Use Ceph RGW for Log Storage and Archival How to Use Ceph RGW for Data Lake Storage How to Use Ceph RGW for Backup Repository Storage How to Use the ceph-authtool Utility How to Use boto3 (Python) with Ceph RGW S3 How to Use AWS CLI with Ceph RGW S3 How to Use the Admin Ops API with Ceph RGW How to Configure Usage Log Key Transition in Ceph RGW How to Handle Rook-Ceph Upgrades in GitOps Pipelines How to Upgrade Rook-Ceph with Zero Downtime How to Create a Ceph Upgrade Runbook How to Upgrade the Rook Operator from v1.18 to v1.19 How to Upgrade the Rook Operator on Kubernetes How to Upgrade External Cluster Connections in Rook How to Upgrade the Ceph Version in Rook How to Upgrade from Ceph Reef to Squid How to Upgrade from Ceph Quincy to Reef How to Upgrade Ceph Clusters in Stretch Mode How to Update Kernel for CephFS Feature Compatibility How to Update Ceph Configuration on a Running Rook Cluster How to Create Unique Kubernetes Services per NFS Server in Rook How to Understand When Compression Helps vs Hurts in Ceph How to Understand User Types (Individual vs System) in Ceph How to Understand the undersized PG State in Ceph How to Understand the stale PG State in Ceph How to Understand the repair PG State in Ceph How to Understand the remapped PG State in Ceph How to Understand Red Hat Ceph Storage vs Upstream Ceph How to Understand Placement Groups in Ceph How to Understand PG Splitting in Ceph How to Understand the peering PG State in Ceph How to Understand OSD Recovery Process in Ceph How to Understand the OSD Map in Ceph How to Understand New Features in Each Ceph Release How to Understand Monitor Leadership in Ceph How to Understand MDS States in CephFS How to Understand Deprecated Features in Ceph Reef How to Understand the degraded PG State in Ceph How to Understand D3N in Ceph How to Understand the creating PG State in Ceph How to Understand the clean PG State in Ceph How to Understand CephX Authentication Protocol How to Understand CephX Authentication Flow How to Understand What Data Ceph Telemetry Collects
How to Use Rook-Ceph with Longhorn for Comparison
Nawaz Dhandala · 2026-03-31 · via OneUptime Blog

Architecture Comparison

Rook-Ceph and Longhorn are two popular Kubernetes-native storage solutions with fundamentally different architectures. Understanding the differences helps you choose the right tool or run them side by side.

flowchart TB
    subgraph RookCeph["Rook-Ceph"]
        ROp["Rook Operator"] --> RMON["MONs (3+)"]
        ROp --> ROSD["OSDs (1 per disk)"]
        ROp --> RCSI["Rook CSI"]
        RCSI --> RBD["RBD Block"]
        RCSI --> CephFS["CephFS Shared"]
        RCSI --> RGW["RGW Object"]
    end
    subgraph Longhorn["Longhorn"]
        LMgr["Longhorn Manager\n(DaemonSet)"] --> LEng["Longhorn Engine\n(per volume)"]
        LEng --> LRep["Replicas (cross-node)"]
        LMgr --> LCSI["Longhorn CSI"]
        LCSI --> LBlk["RWO Block"]
    end

Feature Comparison Table

The two systems differ significantly in scope and complexity:

FeatureRook-CephLonghorn
Block storage (RWO)Yes (RBD)Yes
Shared filesystem (RWX)Yes (CephFS)Yes (NFS-based)
Object storage (S3)Yes (RGW)No
Setup complexityHighLow
Operational overheadHighLow
Minimum hardware3+ nodes, 3+ disks1 node, 1 disk
Snapshot supportYes (CSI)Yes (CSI)
Volume cloningYesYes
Backup integrationVia VeleroBuilt-in (S3/NFS)
Multi-cluster replicationYes (RBD mirroring, RGW)No
Performance ceilingVery high (NVMe tunable)Moderate

Running Rook-Ceph and Longhorn Side by Side

Some teams run both in the same cluster, using each for different workload types.

Install Longhorn first in its own namespace:

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.7.0/deploy/longhorn.yaml

Verify Longhorn is running:

kubectl -n longhorn-system get pods

With Rook-Ceph already running, you now have two StorageClasses:

kubectl get storageclass

Expected output:

NAME              PROVISIONER                          RECLAIMPOLICY
longhorn          driver.longhorn.io                   Delete
rook-ceph-block   rook-ceph.rbd.csi.ceph.com           Delete
rook-cephfs       rook-ceph.cephfs.csi.ceph.com        Delete

Choosing the Right Storage Class per Workload

Use Rook-Ceph RBD for:

  • Databases (MySQL, PostgreSQL) requiring high IOPS
  • Workloads needing replication factor control
  • Multi-region or DR setups

Use Rook-CephFS for:

  • ReadWriteMany workloads (shared logs, CMS media)
  • Jupyter notebooks needing shared access

Use Rook-Ceph RGW for:

  • S3-compatible object storage
  • Backup repositories
  • ML training data lakes

Use Longhorn for:

  • Simpler setups with fewer nodes
  • Built-in backup to S3/NFS
  • Lower operational complexity

Migrating a Volume from Longhorn to Rook-Ceph

To migrate a PVC from Longhorn to Rook-Ceph, use a data migration pod.

First, create a target PVC in Rook-Ceph:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-app-data-rook
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: rook-ceph-block
  resources:
    requests:
      storage: 10Gi

Scale down the application using the source PVC:

kubectl scale deployment my-app --replicas=0

Run a migration pod that mounts both PVCs and copies data:

apiVersion: v1
kind: Pod
metadata:
  name: migrate-storage
spec:
  containers:
    - name: migrator
      image: alpine
      command: ["sh", "-c", "cp -av /source/. /destination/ && echo 'Done'"]
      volumeMounts:
        - name: source
          mountPath: /source
        - name: destination
          mountPath: /destination
  volumes:
    - name: source
      persistentVolumeClaim:
        claimName: my-app-data-longhorn
    - name: destination
      persistentVolumeClaim:
        claimName: my-app-data-rook
  restartPolicy: Never

After migration completes, update the application to use the new PVC:

kubectl patch deployment my-app \
  -p '{"spec":{"template":{"spec":{"volumes":[{"name":"data","persistentVolumeClaim":{"claimName":"my-app-data-rook"}}]}}}}'
kubectl scale deployment my-app --replicas=1

Performance Benchmarking Both Solutions

Run the same fio benchmark against both storage classes for comparison. Using a PVC from Rook-Ceph:

kubectl run fio-rook --rm -it \
  --image=nixery.dev/shell/fio \
  --overrides='{"spec":{"volumes":[{"name":"data","persistentVolumeClaim":{"claimName":"fio-rook-pvc"}}],"containers":[{"name":"fio-rook","image":"nixery.dev/shell/fio","volumeMounts":[{"mountPath":"/data","name":"data"}]}]}}' \
  -- fio --name=test --ioengine=libaio --direct=1 --rw=randread \
     --bs=4k --numjobs=4 --iodepth=32 --runtime=30 \
     --filename=/data/testfile --size=1G

Run the same test with a Longhorn PVC for comparison:

kubectl run fio-longhorn --rm -it \
  --image=nixery.dev/shell/fio \
  --overrides='{"spec":{"volumes":[{"name":"data","persistentVolumeClaim":{"claimName":"fio-longhorn-pvc"}}],"containers":[{"name":"fio-longhorn","image":"nixery.dev/shell/fio","volumeMounts":[{"mountPath":"/data","name":"data"}]}]}}' \
  -- fio --name=test --ioengine=libaio --direct=1 --rw=randread \
     --bs=4k --numjobs=4 --iodepth=32 --runtime=30 \
     --filename=/data/testfile --size=1G

Summary

Rook-Ceph and Longhorn serve different needs. Rook-Ceph provides a full storage platform (block, file, object) suitable for complex, large-scale, and performance-critical environments, but requires more operational expertise. Longhorn is simpler to deploy and operate, with built-in backup support, making it ideal for smaller clusters or teams without dedicated storage engineers. Both can run side by side in the same cluster, allowing workloads to use the most appropriate storage system. Migration between the two is straightforward using a copy-based migration pod.