NativeStor
NativeStor is an open source cloud-native local storage orchestrator for Kubernetes, which orchestrates topolvm and provides the raw device.
PS:Don't be surprised if you search for Topolvm-operator, NativeStor's original name is Topolvm-operator.
Supported environments
- Kubernetes: 1.21 1.22
- Node OS: Linux with LVM2
- Filesystems: ext4, xfs
Features
- Storage capacity expand dynamically
- Volume capacity limit
- Prometheus metric and alarm
- Auto discover available devices
- Raw device
OperatorHub.io
NativeStor had been shared in operatorhub.io home.
RoadMap
see our roadmap
Components
topolvm csi
: LVM Capacity-aware CSI plugin for Kubernetesraw device csi
: Raw Device and Capacity-aware CSI plugin for Kubernetes
Diagram
A diagram of components and the how they work see below:
How topolvm components work
operator
watch theTopolvmCluster
(CRD)operator
watch theoperator-setting ConfigMap
operator
startdiscover devices Daemonset
operator
startConfigMap controller
to watchlvmd ConfigMap
ifTopolvmCluster
createdTopolvmCluster controller
createpreparevg
Job,Topolvm-controller
Deployment depend onTopolvmCluster
preparevg
Job on specific node check disk that provided inTopolvmCluster
and create volume group, if volume group created successfully and then createlvmd ConfigMap
for the nodeConfigMap controller
finds the newlvmd ConfigMap
then createTopolvm-node
DeploymentTopolvmCluster controller
updateTopolvmCluster
status
How raw device components work
Getting started and Documentation
docs directory contains documents about installation and specifications
NativeStor vs Other local storage Implement
nfs | rook ceph | longhorn | host path | topolvm | |
---|---|---|---|---|---|
filesystem | yes | yes | yes | yes | yes |
filesystem type | nfs | ext4/xfs | driver specific | ext4/xfs | ext4/xfs |
block | no | yes (rbd) | yes | no | yes |
bandwidth | standard | high | high | high | high |
IOPS | standard | standard | standard | high | high |
latency | standard | standard | standard | low | low |
snapshot | no | yes | yes | no | no |
clone | no | yes | no | no | no |
quota | no | yes | yes | no | yes |
access mod | ReadWriteOnce ReadOnlyMany ReadWriteMany | ReadWriteOnce ReadOnlyMany ReadWriteMany | ReadWriteOnce ReadOnlyMany | ReadWriteOnce | ReadWriteOnce ReadWriteOncePod |
resizing | yes | yes | yes | yes | yes |
data redundancy | Hardware RAID | yes | yes | Hardware RAID | Hardware RAID |
protocol type | nfs | rados | iscsi | fs | lvm |
ease of maintainess | driver specific | high maintainess effort | medium | medium | ops-free |
usage scenarios | general storage | extremly scalability | container attach storage | temporary data | high performance block device for cloudnative applications |
Docker images
Documentation
docs directory contains documents about designs and specifications.
Report a Bug
For filing bugs, suggesting improvements, or requesting new features, please open an issue.