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 集群性能还是不错的


相关推荐
kuroomi8 小时前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
程序猿阿越16 小时前
containerd如何创建Pod
后端·kubernetes·源码阅读
安易算力19 小时前
昇腾生态开发深度实践:CANN算子库架构解析与MindSpore模型优化
网络·容器·架构·kubernetes·vllm
九皇叔叔1 天前
Kubernetes 核心概念:集群架构、核心组件与资源对象
docker·容器·kubernetes·k8s
weixin_420284142 天前
Kubernetes 开发自定义CRD资源
云原生·kubernetes·kubelet
极小狐2 天前
CI 算力饥渴症:Runner 弹性伸缩的架构权衡与落地
ci/cd·kubernetes·devops·弹性伸缩
Thneonl2 天前
SLO 燃烧率公式漏了个 1-,告警要全停才触发
安全·kubernetes
羑悻的小杀马特2 天前
从写 YAML 到集群自愈:KES-Operator 把 KES 集群接进 Kubernetes 原生体系
运维·数据库·容器·kubernetes
Thneonl3 天前
照着 CKS 教材做实验,把 apiserver 干瘫了 7 分钟
安全·kubernetes
名字还没想好☜3 天前
Kubernetes 用 kubectl port-forward 和 proxy 调试集群内服务:两者区别、断连自动重连与为什么别用在生产
运维·docker·kubernetes