openebs动态存储使用

首先看性能用途对比

LocalPV LVM 与 LocalPV ZFS 对比表

项目 LocalPV LVM LocalPV ZFS 对比结果
性能(尤其是写) 更好(接近裸盘,overhead 极低);写性能通常比 ZFS 高 30%~5x(取决于 workload) 较好,但有明显 overhead(CoW、checksum、ARC 等);写性能一般比 LVM 慢 LVM 胜
读性能 优秀 优秀(有 ARC 缓存加持时经常很强) 差不多,ZFS 有时更好
CPU / 内存占用 很低(轻量) 较高(ZFS 需要较多 RAM 做 ARC 缓存,推荐每节点至少 8-16GB 空闲 RAM) LVM 胜
功能丰富度 基础(Thin Provisioning、Snapshot、Resize) 远强(快照几乎零成本、Compression、Deduplication、Checksumming 自愈、Encryption、zfs send/recv、RAIDZ 等) ZFS 大胜
数据完整性 一般(需额外配 dm-integrity) 极强(内置 checksum + 自愈) ZFS 大胜
快照(Snapshot) 支持,但有性能损耗 极佳(Copy-on-Write,几乎零成本) ZFS 大胜
Thin Provisioning + 扩容 支持 支持 平手
运维复杂度 较低 稍高(ZFS pool 管理、tuning) LVM 胜
Near bare-metal 性能 是(OpenEBS 官方表格明确标 Yes) 否(有 ZFS 层 overhead) LVM 胜

LocalPV LVM、LocalPV ZFS、Mayastor 三种存储方案对比表

对比项目 LocalPV LVM(LocalPV) LocalPV ZFS(ZFS) Mayastor(Replicated)
数据位置 单个节点本地 单个节点本地 跨节点分布(多节点同步)
节点故障影响 数据不可访问(单节点依赖) 数据不可访问(单节点依赖) 无影响(多节点副本备份)
写性能 极高(无额外开销,接近裸盘) 中等(有 CoW 及校验 overhead) 较高(低开销,同步复制)
CPU 占用 极低(仅内核层处理) 中等(需维护 ARC 缓存) 中等(需同步节点数据)
功能丰富度 基础(快照、扩容、薄置) 极高(压缩、加密、自愈等) 较高(副本同步、故障转移)
数据完整性 一般(需额外配置完整性校验) 极强(内置校验、自愈) 极强(多副本校验同步)
运维复杂度 低(仅管理 LVM 卷组) 中等(需维护 ZFS 池) 中等(需管理节点同步)
资源占用 低(无额外内存消耗) 较高(需预留 ARC 缓存内存) 中等(需维护节点同步)
适用场景 追求极致性能、简单运维场景 需数据高可靠性、功能丰富场景 需高可用、跨节点备份场景

存储方案性能对比表

存储方案 随机读 IOPS(4K) 随机写 IOPS(4K) 读延迟 写延迟 顺序吞吐(MB/s) CPU 开销 备注
裸 NVMe / LocalPV LVM 500K--1M+ 300K--800K+ ~0.05--0.2 ms ~0.1--0.3 ms 3000--7000+ 最低 最高性能基准
Mayastor (Replicated) 45K--500K+ 35K--400K+ 0.1--1.5 ms 1--2.5 ms 2000--3500+ 高(polling) 接近本地,replicas=2--3
LocalPV ZFS 50K--200K 20K--100K 0.2--0.8 ms 0.3--1.5 ms 1000--3000 中等(ARC 缓存) 快照强
Longhorn (v1/v2) 15K--60K 12K--50K 2--6 ms 3--10 ms 600--1200 中低 简单易用
Rook/Ceph RBD 25K--150K 20K--100K 0.5--2 ms 1--3 ms 1000--2800 中高 规模大但开销高
cStor (旧引擎) ~7K--20K - 已不推荐

总结 最好的就是lvm够了性能好,开销

快速部署Local PV LVM

部署前提

js 复制代码
apt install lvm2

在所有节点上创建卷组,LVM驱动将用于部署卷
pvcreate /dev/sdb
vgcreate lvmvg /dev/sdb

在上述命令中,是要创建的卷组名称。lvmvg
只安装lvm
js 复制代码
helm install openebs openebs/openebs \
  --namespace openebs \
  --set engines.replicated.mayastor.enabled=false \
  --set engines.local.zfs.enabled=false \
  --set engines.local.hostpath.enabled=false \
  --set loki.enabled=false \
  --set alloy.enabled=false
如下:
js 复制代码
# kubectl get pods
NAME                                             READY   STATUS    RESTARTS        AGE
openebs-localpv-provisioner-89447ff8-jt45m       1/1     Running   2 (5h41m ago)   24h
openebs-lvm-localpv-controller-95d4c9856-ldjkn   5/5     Running   0               24h
openebs-lvm-localpv-node-9wlll                   2/2     Running   0               24h
openebs-lvm-localpv-node-bn5rt                   2/2     Running   0               24h
openebs-lvm-localpv-node-w5ks9                   2/2     Running   0               24h
创建sc
yaml 复制代码
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: openebs-lvm
  annotations:
    storageclass.kubernetes.io/is-default-class: "false"   # 如果你不想让它成为默认,可以不加这行
provisioner: local.csi.openebs.io
parameters:
  storage: "lvm"
  volgroup: "lvmvg"  # ← 必须和你之前用 vgcreate 创建的卷组名称一致
  fsType: xfs
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Delete
allowVolumeExpansion: true

测试

yaml 复制代码
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: openebs-lvm
  resources:
    requests:
      storage: 20Gi
---

apiVersion: v1
kind: Pod
metadata:
 name: fio
spec:
 restartPolicy: Never
 containers:
 - name: perfrunner
   image: openebs/tests-fio
   command: ["/bin/bash"]
   args: ["-c", "while true ;do sleep 50; done"]
   volumeMounts:
      - mountPath: /datadir
        name: fio-vol
   tty: true
 volumes:
 - name: fio-vol
   persistentVolumeClaim:
     claimName: my-pvc
插件命令
js 复制代码
root@sr-demon1:/usr/local/src# openebs -n openebs localpv-lvm get volumes
 NAME                                      NODE        STATUS  CAPACITY   VOLGROUP  PVC-NAME  SC-NAME
 pvc-094022d1-836c-4c59-8504-5da2486a6e17  sr-demon-3  Ready   20.00 GiB  lvmvg     my-pvc    openebs-lvm
 pvc-bb516bcf-2d06-43e2-9166-ba9b54e3f2e8  sr-demon-3  Ready   20.00 GiB  lvmvg     my-pvc    openebs-lvm
root@sr-demon1:/usr/local/src# openebs localpv-lvm get volume-groups  -n openebs
 NAME   NODE        UUID                                    TOTAL-SIZE  FREE-SIZE  LV-COUNT  PV-COUNT  SNAP-COUNT
 lvmvg  sr-demon-2  doENw0-nkym-L8oT-rtO8-bJ8g-kDTR-9wIhLn  204796Mi    204796Mi   0         1         0
 lvmvg  sr-demon-3  Dbr6Ij-pwLf-OIIJ-domO-zu5E-3b40-hObUg7  204796Mi    163836Mi   2         1         0
 lvmvg  sr-demon-4  7p2svV-u0mq-0xUi-3wj8-biFI-SNws-YvESbB  204796Mi    204796Mi   0         1         0

机械盘跑starrocks 集群性能还是不错的


相关推荐
雨奔2 小时前
Kubernetes 对象详解:声明式管理的核心
kubernetes
inner2222 小时前
kubeasz部署k8s集群1.37
云原生·容器·kubernetes
indexsunny2 小时前
互联网大厂Java面试实战:基于微服务与云原生的电商场景问答解析
java·数据库·spring boot·docker·微服务·云原生·kubernetes
x10n91 天前
基于提示词驱动的Function Call实现K8s Pod智能诊断
ai·云原生·容器·kubernetes
张3231 天前
ConfigMap
云原生·kubernetes
文静小土豆2 天前
Java 应用上 K8s 全指南:从部署到治理的生产级实践
java·开发语言·kubernetes
努力搬砖的咸鱼2 天前
Label 与 Selector:Kubernetes 资源选择的核心机制
微服务·云原生·容器·架构·kubernetes
Devin~Y2 天前
大厂Java面试实战:Spring Boot/WebFlux、Redis+Kafka、K8s可观测性与Spring AI RAG/Agent三轮连环问
java·spring boot·redis·kafka·kubernetes·resilience4j·spring webflux
密瓜智能2 天前
从 Device Plugin 到 DRA:GPU 调度范式升级与 HAMi-DRA 实践
人工智能·kubernetes·开源·密瓜智能