cncf / sandbox

Applications for Sandbox go here! ⏳📦🧪
Apache License 2.0
133 stars 22 forks source link

[Sandbox] HwameiStor #29

Closed zhaosimon closed 1 year ago

zhaosimon commented 1 year ago

Application contact emails

liang.sun@daocloud.io

mingming.zhou@daocloud.io

simon.zhao@daocloud.io

Project Summary

HwameiStor is an open-source local storage solution for cloud-native stateful workloads with High-Availability (HA) capabilities. It will address the limitation of the local volume by a mechanism to enable data drifting with applications.

Project Description

HwameiStor provides a full life cycle management of the local disks (HDD, SSD, NVMe) on the Kubernetes worker nodes. The local disk can be discovered, identified, managed and allocated automatically, besides, HwameiStor will monitor the disk’s health (S.M.A.R.T.) regularly, analyze the metrics to detect any current or potential problem, and process them.

By group the local disks in LVM group, HwameiStor can provision LVM volume in non-HA or HA mode (with HA module). It is trying to address the limitations of the local volume by

1) intelligently locate the data volume replica for the app/pod and schedule it without user interrupt; 2) When reschedule the app/pod across nodes, enable the data volume replica to follow the pod through the features of volume conversion, migration, eviction, etc…

HwameiStor provides a feature of volume group to enable an app/pod to have multiple local volumes, and also can be converted, migrated, evicted as well.

With high-availability replicas in HwameiStor, data can be synchronized & migrated cross-node within the cluster. Storage capacities can also be dynamically expanded (node expansion, disk expansion, volume expansion) to meet the application data persistence requirements.

HwameiStor is easy to deploy and can be installed with HwameiStor-Operator.

Org repo URL

https://github.com/hwameistor

Project repo URL

https://github.com/hwameistor/hwameistor

Additional repos

https://github.com/hwameistor/hwameistor-operator

https://github.com/hwameistor/hwameistor-ui

Website URL

https://hwameistor.io/

Roadmap

https://github.com/hwameistor/hwameistor/blob/main/README.md

Roadmap context

As an enterprise level storage solution, data secutiry will always be our top priority. On the base of HA, we have planned on some data recovery, and data protection features such as snapshot, clone etc.. Observability and performance QoS features are also under our consideration in plan. Data encryption and thin provisioning will be in our future enhancements.

Features Status Release Description
CSI for LVM volume Completed v0.3.2 Provision volume with lvm
CSI for disk volume Completed v0.3.2 Provision volume with disk
HA LVM Volume Completed v0.3.2 Volume with HA
LVM Volume expansion Completed v0.3.2 Expand LVM volume capacity online
LVM Volume conversion Completed v0.3.2 Convert a non-HA LVM volume to the HA
LVM Volume migration Completed v0.4.0 Migrate a LVM volume replica to a different node
Volume Group Completed v0.3.2 Support volume group allocation
Disk health check Completed v0.7.0 Disk fault prediction, status reporting
LVM HA Volume Recovery Planed Recover the LVM HA volume in problem
HwameiStor Operator Completed 0.9.3 Operator for HwameiStor install, maintain, etc.
Observability Completed 0.9.3 Observability, such as metrics, logs, etc.
GUI / Monitor Dashboard Completed 0.9.3 Graphic User Interface monitoring dashboard in Promethues / Kibana
Failover In Plan Fail over the pod with HwameiStor volume
IO throttling Developing Limit IO bandwith to access the HwameiStor volume
Disk replacement In Plan Replace disk which fails or will fail soon
LVM volume auto-expansion Developing Expand LVM volume automatically
LVM volume snapshot Developing Snapshot of LVM volume
LVM volume clone In Plan Clone LVM volume
LVM volume thin provision In Plan LVM volume thin provision
LVM volume stripe mode In Plan LVM volume stripe read/write
Data encryption In Plan Data encryption
System Consistency In Plan Consistent check and recovery from a disaster
Volume backup In Plan Backup the volume data to remote server and restore
Consistent Group In Plan A collection of volumes managed as a single unit for data consistency

Contributing Guide

https://github.com/hwameistor/hwameistor/blob/main/CONTRIBUTING.md

Code of Conduct (CoC)

https://github.com/hwameistor/hwameistor/blob/main/CODE_OF_CONDUCT.md

Adopters

https://github.com/hwameistor/hwameistor/blob/main/adopters.md

Contributing or Sponsoring Org

https://www.daocloud.io/

Maintainers file

https://github.com/hwameistor/hwameistor/blob/main/MAINTAINERS.md

IP Policy

Trademark and accounts

Why CNCF?

HwameiStor is a Kubernetes native local storage system naturally integrated with some CNCF ecosystems' technologies and tools, such as CSI, CRD, Operator, Scheduler,Helm etc.. By contributing this project to the CNCF, HwameiStor can gain access to a wider audience of users and potential contributors, as well as increased visibility and recognition from the community. Being part of the CNCF can also help HwameiStor to stay up-to-date with the latest industry standards and best practices, and to benefit from the experiences and knowledge of other contributors and projects within the CNCF ecosystem.

Benefit to the Landscape

As more organizations move to cloud native architectures, they need storage solutions that can handle the high volumes of data generated by modern applications that can scale dynamically to meet the changing demands. HwameiStor can play a critical role in supporting the data management needs of cloud native stateful applications, such as high performance, high availability, operation and maintenance automation etc..

Cloud Native 'Fit'

HwameiStor is cloud native designed and architectured on Kubernetes CRD mechanism. It is built for cloud native application.

Cloud Native 'Integration'

HwameiStor is working as the storage solution of the Kubernetes cluster to provide data persistency. HwameiStor-Operator is for the system installation and management

Cloud Native Overlap

There are two overlaps with other local storage projects:

First one is LVM module. LVM2 is adopted by HwameiStor for managing local disks and provisioning volume like some other project. In fact, LVM2 is a stable disk management module and popular in most of OS. It’s also easy to deploy and use.

Second one is DRBD module, which is for data synchronization across nodes. Some other projects provision HA volume and rely on DRBD for data syncronization. In HwameiStor, DRBD is one of options for data synchronization. HwameiStor is still trying to add other tools for the data sync, and provides more choice to meet users’ requirements.

Similar projects

HwameiStor provides similar functionality as these other projects:

OpenEBS https://github.com/openebs

Carina https://gitee.com/bocloud-open-source/carina

TopoLVM https://github.com/topolvm/topolvm

Product or Service to Project separation

N/A

Project presentations

https://youtu.be/6D1vgj86hHY (HwameiStor Demo) https://youtu.be/FJ2MZuSoSk4 (TAG Meeting for HwameiStor Presentation)

Project champions

No response

Additional information

No response

joshgav commented 1 year ago

Anither similar project is TopoLVM: https://github.com/topolvm/topolvm

sun7927 commented 1 year ago

Anither similar project is TopoLVM: https://github.com/topolvm/topolvm

Lots of diffs between HwameiStor and TopoLVM, including HA, data migration, disk mgmt, etc ...

zhaosimon commented 1 year ago

Anither similar project is TopoLVM: https://github.com/topolvm/topolvm

Thanks Josh! I have added into 'Similar Projects' section immediately after your reply, and will provide completed comparison info in later review stage.

zhaosimon commented 1 year ago

Anither similar project is TopoLVM: https://github.com/topolvm/topolvm

Hello Josh, thanks for your attention on HwameiStor! Just like the other similar CNCF projects, HwameiStor provides high-performance CAS based persistent volumes to cloud native stateful workloads.

However, as an enterprise level storage system already adopted on many production critical applications, we have made very much efforts on some unique data security attributes (compare to the similar projects mentioned above):

We will be happy to provide more detailed information under you request or available at https://hwameistor.io/docs/category/basic-operations.

chira001 commented 1 year ago

Hi - I'm a co-chair of the Storage TAG with @xing-yang and was discussing the HwameiStor after the TAG presentation/recording. We noticed that both the Piraeus Operator (https://piraeus.io/), which is also a sandbox project is also maintained by Daocloud, and both are a local volume manager with DRDB functionality. Could you clarify the differences between the projects please?

sun7927 commented 1 year ago

Hi - I'm a co-chair of the Storage TAG with @xing-yang and was discussing the HwameiStor after the TAG presentation/recording. We noticed that both the Piraeus Operator (https://piraeus.io/), which is also a sandbox project is also maintained by Daocloud, and both are a local volume manager with DRDB functionality. Could you clarify the differences between the projects please?

Thanks @chira001 for your question. Yes, Piraeus project is co-sponsored by Linbit and DaoCloud. The difference between Piraeus and HwameiStor is as below:

Piraeus is a set of modules and tools for enabling LINSTOR system in Kubernetes, including Piraeus Operator, HA controller, CSI Driver, etc.. LINSTOR system is fully based on DRBD, like features of quorum, sync/semi-sync/async HA, remote access, etc.., and provides plenty of the storage features like disaster recovery, HA volume, local/remote access. While claiming local volume management, Piraeus is focused on DRBD replicas. It manages VGs, but has no definition for disk resources.

HwameiStor is a cloud native local storage system, and provides the fully life cycle management for local disks, including disk auto-discovery, allocation, health monitor, disk group, and provisions multiple classes of volumes to applications, including LVM HA/non-HA volume, disk volume. In addition, HwameiStor tries to address the limitations of the local volume by the functionalities of volume conversion, migration, group, etc.., which enables the local data to follow the application(Pod) at some situations. There is a HA module in HwameiStor, which is for data synchronization between the volume replicas. Currently, DRBD is one of options for the HA module. We are still looking for other options for the HA module. With more choices, HwameiStor can deploy the appropriate HA module to meet the user’s requirements.

jberkus commented 1 year ago

How would HwameiStor relate to the Rook project? Does HwameiStor already implement its own operator, or would it be likely to become a storage backend for Rook?

chira001 commented 1 year ago

How would HwameiStor relate to the Rook project? Does HwameiStor already implement its own operator, or would it be likely to become a storage backend for Rook?

The project team may have more details, but we don't see much intersection between Rook and HwamieStor which has it's own operator. Rook is very Ceph optimised at this stage and support for other storage systems is mostly deprecated.

sun7927 commented 1 year ago

How would HwameiStor relate to the Rook project? Does HwameiStor already implement its own operator, or would it be likely to become a storage backend for Rook?

Thanks @jberkus for your question. Yes, HwameiStor already has its own operator. We would like to look into the Rook to see if it can benefit HwameiStor more.

xing-yang commented 1 year ago

HwameiStor gave a presentation at TAG Storage on 5/10/2023. Here's the recording. Here are the slides. These slides were updated after addressing feedback from TAG Storage. Slide 19-21 has a comparison table with similar projects.

amye commented 1 year ago

/vote-sandbox

git-vote[bot] commented 1 year ago

Vote created

@amye has called for a vote on [Sandbox] HwameiStor (#29).

The members of the following teams have binding votes:

Team
@cncf/cncf-toc

Non-binding votes are also appreciated as a sign of support!

How to vote

You can cast your vote by reacting to this comment. The following reactions are supported:

In favor Against Abstain
👍 👎 👀

Please note that voting for multiple options is not allowed and those votes won't be counted.

The vote will be open for 7days. It will pass if at least 66% of the users with binding votes vote In favor 👍. Once it's closed, results will be published here as a new comment.

amye commented 1 year ago

/check-vote

git-vote[bot] commented 1 year ago

Vote status

So far 27.27% of the users with binding vote are in favor (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
3 0 0 8

Binding votes (3)

User Vote Timestamp
cathyhongzhang In favor 2023-06-13 17:19:19.0 +00:00:00
TheFoxAtWork In favor 2023-06-13 18:05:33.0 +00:00:00
rochaporto In favor 2023-06-13 18:39:15.0 +00:00:00

Non-binding votes (2)

| User | Vote | Timestamp | | ---- | :---: | :-------: | | sun7927 | In favor | 2023-06-14 16:40:28.0 +00:00:00 | | carlory | In favor | 2023-06-14 18:01:38.0 +00:00:00 |
sun7927 commented 1 year ago

Hi TOC members,

please let us know your any question or suggestion on the HwameiStor project. To help you understand the HwameiStor better, I would like to summarize the key features/strengths as below:

  1. HwameiStor is a cloud native local storage system. Besides it provides a complete local disk lifecycle management including health monitoring, HwameiStor aims to address the limitations of the local volume in Kubernetes: 1) no data protection across the nodes; 2) no data mobility across the nodes.

  2. HwameiStor can provision the HA volumes (LVM). The volume has two replicas distributed across the nodes, and the replicas are synchronized in real time by HwameiStor's HA module (DRBD is one of HA module options).

  3. HwameiStor can convert the non-HA volume (i.e. only one LVM replica) to HA volume to protect the ongoing data.

  4. HwameiStor can migrate the volume's replica across the nodes. With this feature, it's possible for volume data to follow the application(Pod) on demand. In addition, it can keep the data still available when the storage node goes into the problem.

  5. HwameiStor provides a volume group to enable a Pod to have multiple local volumes, and can convert or migrate the volumes in the group on demand.

  6. HwameiStor is under developing the feature of volume snapshot with conversion and migration capabilities.

    Currently, HwameiStor already has tens of real enterprise users and run in their PROD/UAT env for more than 2 years, also got lots of feedbacks and feature requests from them.

    In HwameiStor's roadmap, it will continue to design and develop more features like thin provisioning, auto-resize, QoS, consistency group, etc... It would be very helpful for HwameiStor to get more attentions and contributions from the community. It will help HwameiStor step to the next level and benefit more and more users.

Thanks

git-vote[bot] commented 1 year ago

Votes can only be checked once a day.

sun7927 commented 1 year ago

/check-vote

git-vote[bot] commented 1 year ago

Vote status

So far 54.55% of the users with binding vote are in favor (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
6 0 0 5

Binding votes (6)

User Vote Timestamp
rochaporto In favor 2023-06-13 18:39:15.0 +00:00:00
TheFoxAtWork In favor 2023-06-13 18:05:33.0 +00:00:00
cathyhongzhang In favor 2023-06-13 17:19:19.0 +00:00:00
dzolotusky In favor 2023-06-14 23:42:55.0 +00:00:00
erinaboyd In favor 2023-06-15 21:01:48.0 +00:00:00
RichiH In favor 2023-06-15 9:25:38.0 +00:00:00

Non-binding votes (7)

| User | Vote | Timestamp | | ---- | :---: | :-------: | | carlory | In favor | 2023-06-14 18:01:38.0 +00:00:00 | | pacoxu | In favor | 2023-06-14 22:33:17.0 +00:00:00 | | zhaosimon | In favor | 2023-06-14 22:50:11.0 +00:00:00 | | yanrongshi | In favor | 2023-06-15 2:02:41.0 +00:00:00 | | yankay | In favor | 2023-06-15 2:03:56.0 +00:00:00 | | chira001 | In favor | 2023-06-15 10:41:22.0 +00:00:00 | | sun7927 | In favor | 2023-06-15 12:37:29.0 +00:00:00 |
SSmallMonster commented 1 year ago

/check-vote

git-vote[bot] commented 1 year ago

Vote status

So far 72.73% of the users with binding vote are in favor (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
8 0 0 3

Binding votes (8)

User Vote Timestamp
rochaporto In favor 2023-06-13 18:39:15.0 +00:00:00
erinaboyd In favor 2023-06-15 21:01:48.0 +00:00:00
TheFoxAtWork In favor 2023-06-13 18:05:33.0 +00:00:00
RichiH In favor 2023-06-15 9:25:38.0 +00:00:00
mattfarina In favor 2023-06-16 17:38:44.0 +00:00:00
justincormack In favor 2023-06-16 10:22:26.0 +00:00:00
dzolotusky In favor 2023-06-14 23:42:55.0 +00:00:00
cathyhongzhang In favor 2023-06-13 17:19:19.0 +00:00:00

Non-binding votes (7)

| User | Vote | Timestamp | | ---- | :---: | :-------: | | carlory | In favor | 2023-06-14 18:01:38.0 +00:00:00 | | pacoxu | In favor | 2023-06-14 22:33:17.0 +00:00:00 | | yanrongshi | In favor | 2023-06-15 2:02:41.0 +00:00:00 | | yankay | In favor | 2023-06-15 2:03:56.0 +00:00:00 | | chira001 | In favor | 2023-06-15 10:41:22.0 +00:00:00 | | sun7927 | In favor | 2023-06-16 7:40:49.0 +00:00:00 | | zhaosimon | In favor | 2023-06-16 8:37:59.0 +00:00:00 |
zhaosimon commented 1 year ago

/check-vote

git-vote[bot] commented 1 year ago

Vote status

So far 81.82% of the users with binding vote are in favor (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
9 0 0 2

Binding votes (9)

User Vote Timestamp
TheFoxAtWork In favor 2023-06-13 18:05:33.0 +00:00:00
erinaboyd In favor 2023-06-15 21:01:48.0 +00:00:00
RichiH In favor 2023-06-15 9:25:38.0 +00:00:00
nikhita In favor 2023-06-19 13:32:53.0 +00:00:00
justincormack In favor 2023-06-16 10:22:26.0 +00:00:00
rochaporto In favor 2023-06-13 18:39:15.0 +00:00:00
dzolotusky In favor 2023-06-14 23:42:55.0 +00:00:00
cathyhongzhang In favor 2023-06-13 17:19:19.0 +00:00:00
mattfarina In favor 2023-06-16 17:38:44.0 +00:00:00

Non-binding votes (7)

| User | Vote | Timestamp | | ---- | :---: | :-------: | | carlory | In favor | 2023-06-14 18:01:38.0 +00:00:00 | | pacoxu | In favor | 2023-06-14 22:33:17.0 +00:00:00 | | yanrongshi | In favor | 2023-06-15 2:02:41.0 +00:00:00 | | yankay | In favor | 2023-06-15 2:03:56.0 +00:00:00 | | chira001 | In favor | 2023-06-15 10:41:22.0 +00:00:00 | | sun7927 | In favor | 2023-06-16 7:40:49.0 +00:00:00 | | zhaosimon | In favor | 2023-06-16 8:37:59.0 +00:00:00 |
git-vote[bot] commented 1 year ago

Vote closed

The vote passed! 🎉

81.82% of the users with binding vote were in favor (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
9 0 0 2

Binding votes (9)

User Vote Timestamp
@RichiH In favor 2023-06-15 9:25:38.0 +00:00:00
@justincormack In favor 2023-06-16 10:22:26.0 +00:00:00
@dzolotusky In favor 2023-06-14 23:42:55.0 +00:00:00
@mattfarina In favor 2023-06-16 17:38:44.0 +00:00:00
@nikhita In favor 2023-06-19 13:32:53.0 +00:00:00
@cathyhongzhang In favor 2023-06-13 17:19:19.0 +00:00:00
@TheFoxAtWork In favor 2023-06-13 18:05:33.0 +00:00:00
@erinaboyd In favor 2023-06-15 21:01:48.0 +00:00:00
@rochaporto In favor 2023-06-13 18:39:15.0 +00:00:00

Non-binding votes (7)

| User | Vote | Timestamp | | ---- | :---: | :-------: | | @carlory | In favor | 2023-06-14 18:01:38.0 +00:00:00 | | @pacoxu | In favor | 2023-06-14 22:33:17.0 +00:00:00 | | @yanrongshi | In favor | 2023-06-15 2:02:41.0 +00:00:00 | | @yankay | In favor | 2023-06-15 2:03:56.0 +00:00:00 | | @chira001 | In favor | 2023-06-15 10:41:22.0 +00:00:00 | | @sun7927 | In favor | 2023-06-16 7:40:49.0 +00:00:00 | | @zhaosimon | In favor | 2023-06-16 8:37:59.0 +00:00:00 |
zhaosimon commented 1 year ago

/check-vote

amye commented 1 year ago

Closing with Approved, new onboarding issue: https://github.com/cncf/sandbox/issues/155

zhaosimon commented 1 year ago

Thanks TOC!!!