{"id":18542324,"url":"https://github.com/alauda/nativestor","last_synced_at":"2025-12-15T10:30:11.927Z","repository":{"id":41205569,"uuid":"357398327","full_name":"alauda/nativestor","owner":"alauda","description":"NativeStor provide  kubernetes local storage which is light weight and high performance ","archived":false,"fork":false,"pushed_at":"2022-03-24T09:48:30.000Z","size":554,"stargazers_count":26,"open_issues_count":8,"forks_count":12,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-03-24T10:21:18.131Z","etag":null,"topics":["cloudnative","kubernetes","localstorage","operator","rawdevice","storage","topolvm"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alauda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-13T02:19:26.000Z","updated_at":"2024-12-18T16:05:19.000Z","dependencies_parsed_at":"2022-09-26T20:30:41.509Z","dependency_job_id":null,"html_url":"https://github.com/alauda/nativestor","commit_stats":null,"previous_names":["alauda/topolvm-operator"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alauda%2Fnativestor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alauda%2Fnativestor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alauda%2Fnativestor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alauda%2Fnativestor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alauda","download_url":"https://codeload.github.com/alauda/nativestor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248087795,"owners_count":21045592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudnative","kubernetes","localstorage","operator","rawdevice","storage","topolvm"],"created_at":"2024-11-06T20:08:03.965Z","updated_at":"2025-12-15T10:30:06.881Z","avatar_url":"https://github.com/alauda.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg alt=\"NativeStor\" src=\"./docs/logo.svg\" width=\"250\"/\u003e  \n\nNativeStor\n========\n\nNativeStor is an open source **cloud-native local storage** orchestrator for Kubernetes, which orchestrates [topolvm](https://github.com/topolvm/topolvm) and provides the raw device.  \nPS：Don't be surprised if you search for Topolvm-operator, NativeStor's original name is Topolvm-operator.\n\nSupported environments\n----------------------\n- Kubernetes: 1.21 1.22\n- Node OS: Linux with LVM2\n- Filesystems: ext4, xfs\n\nFeatures\n--------\n\n- Storage capacity expand dynamically\n- Volume capacity limit\n- Prometheus metric and alarm\n- Auto discover available devices\n- Raw device\n\nOperatorHub.io\n--------\n[NativeStor](https://operatorhub.io/operator/topolvm-operator) had been shared in operatorhub.io home.  \n\nRoadMap\n-------\nsee our [roadmap](./ROADMAP.md)\n\nComponents\n-------\n- `topolvm csi`: LVM Capacity-aware CSI plugin for Kubernetes\n- `raw device csi`: Raw Device and Capacity-aware CSI plugin for Kubernetes\n\n\n### Diagram\n\nA diagram of components and the how they work see below:\n### How topolvm components work\n![component diagram](./diagram.svg)\n\n1. `operator` watch the `TopolvmCluster`(CRD) \n2. `operator` watch the `operator-setting ConfigMap`\n3. `operator` start `discover devices Daemonset`\n4. `operator` start  `ConfigMap controller` to watch `lvmd ConfigMap` if `TopolvmCluster` created\n5. `TopolvmCluster controller` create `preparevg` Job,`Topolvm-controller` Deployment depend on `TopolvmCluster`\n6. `preparevg` Job on specific node check disk that provided in `TopolvmCluster` and create volume group, if volume group created successfully and then create `lvmd ConfigMap` for the node\n7. `ConfigMap controller` finds the new `lvmd ConfigMap` then create `Topolvm-node` Deployment\n8. `TopolvmCluster controller` update `TopolvmCluster` status\n\n### How raw device components work\n![component diagram](./raw-devie.svg)\n\n\n\nGetting started and Documentation\n---------------\n[docs](docs/) directory contains documents about installation and specifications\n\n\nNativeStor vs Other local storage Implement\n-------------\n\n\n|            |         nfs                          |     rook ceph              |           longhorn   |  host path       |  topolvm\n| ---------- | ------------------------------|-----------------|-----------------------------------------|----|------------------------|\n| filesystem        | yes            | yes                                        | yes                           | yes         | yes\n| filesystem type   | nfs       | ext4/xfs                                      | driver specific                 | ext4/xfs        | ext4/xfs                                      |\n| block             | no                | yes (rbd)                             | yes                              | no      | yes                                                   |\n| bandwidth         | standard    | high                                       | high                               | high      |high                                                     |\n| IOPS              |   standard       | standard                             | standard                            | high        | high                                                   |\n| latency       | standard      | standard                                       | standard                           | low      | low                                                  |\n| snapshot       | no               | yes                              | yes                                       | no          | no                                      |\n| clone       | no                   | yes                       | no                                               | no         | no                                           |\n| quota       | no                | yes                                      | yes                                    | no      | yes                                                 |\n| access mod | ReadWriteOnce ReadOnlyMany ReadWriteMany| ReadWriteOnce ReadOnlyMany ReadWriteMany|  ReadWriteOnce ReadOnlyMany |  ReadWriteOnce|  ReadWriteOnce ReadWriteOncePod\n| resizing       | yes            | yes                                       | yes                            | yes          |yes                                               |\n|data redundancy |Hardware RAID  | yes | yes| Hardware RAID| Hardware RAID\n|protocol type | nfs | rados| iscsi | fs | lvm\n|ease of maintainess| driver specific|  high maintainess effort| medium|  medium | ops-free\n|usage scenarios| general storage| extremly scalability| container attach storage|     temporary data       |   high performance block device for cloudnative applications\n\nDocker images\n------------\n\n- [alaudapublic/nativestor](https://hub.docker.com/r/alaudapublic/nativestor)\n- [alaudapublic/raw-device](https://hub.docker.com/r/alaudapublic/raw-device)\n\nDocumentation\n-------------\n\n[docs](docs/) directory contains documents about designs and specifications.\n\nReport a Bug\n----------\nFor filing bugs, suggesting improvements, or requesting new features, please open an [issue](https://github.com/alauda/nativestor/issues).\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falauda%2Fnativestor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falauda%2Fnativestor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falauda%2Fnativestor/lists"}