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 小时前
基于Kubeadm和Docker部署K8S高可用集群
docker·容器·kubernetes
志栋智能4 小时前
超自动化巡检:敏捷运维体系中的重要一环
运维·服务器·网络·云原生·容器·kubernetes·自动化
东北甜妹6 小时前
K8s job /cronjob 和 Networkpolicy
云原生·容器·kubernetes
汪汪大队u6 小时前
从 Docker Compose 到 Kubernetes:物联网管理系统迁移实战
物联网·容器·kubernetes
秋饼6 小时前
kubernetes (K8S)组件介绍以及原理
云原生·容器·kubernetes
明月_清风19 小时前
K8s 从入门到上手:核心概念+常用工具全解析
后端·kubernetes
塔克拉玛攻城狮1 天前
详解cni插件cilium篇一:它为什么这么快?它还有哪些高级功能?
kubernetes·cilium
阿里云云原生1 天前
HiClaw 发布 v1.1.0,提供 Kubernetes 集群部署实现,支持 Hermes Worker 运行时
kubernetes
Cat_Rocky1 天前
kubernetes ingress粗浅学习
学习·容器·kubernetes
PH = 71 天前
K8S集群部署Dashboard
云原生·容器·kubernetes