You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[](https://builtwithnix.org)
7
7
8
-
Table of contents:
9
-
==================
8
+
## Table of contents
9
+
10
+
---
11
+
10
12
-[Quickly deploy it on K8s and get started](https://mayastor.gitbook.io)
11
-
-[Deploying on microk8s](/doc/microk8s.md)
13
+
-[Deploying on microk8s](/doc/microk8s.md)
12
14
-[High-level overview](#overview)
13
-
-[The Nexus CAS module](#Nexus)
14
-
-[Local storage](#local-storage)
15
-
-[Exporting a Nexus](#exporting-the-nexus)
15
+
-[The Nexus CAS module](#Nexus)
16
+
-[Local storage](#local-storage)
17
+
-[Exporting a Nexus](#exporting-the-nexus)
16
18
-[Building from source](/doc/build.md)
17
19
-[Examples of the Nexus module](/doc/mcli.md)
18
20
-[Frequently asked questions](/doc/FAQ.md)
19
21
20
22
<palign="justify">
21
23
<strong>Mayastor</strong> is a cloud-native declarative data plane written in <strong>Rust.</strong>
22
24
Our goal is to abstract storage resources and their differences through the data plane such that users only need to
23
-
supply the <strong>what</strong> and do not have to worry about the <strong>how</strong> so that individual teams stay in control.
25
+
supply the <strong>what</strong> and do not have to worry about the <strong>how</strong>
26
+
so that individual teams stay in control.
24
27
25
28
We also try to be as unopinionated as possible. What this means is that we try to work with the existing storage systems
26
-
you might already have and unify them as abstract resources instead of swapping them out whenever the resources are local
27
-
or remote.
29
+
you might already have and unify them as abstract resources instead of swapping them out whenever the resources are local
30
+
or remote.
28
31
<br>
29
32
<br>
33
+
30
34
</p>
31
35
32
36
Some targeted use cases are:
33
37
34
-
- Low latency workloads for converged and segregated storage by leveraging NVMe/NVMe over Fabrics (NVMe-oF)
35
-
- Micro-VM based containers like [Firecracker microVMs](https://github.com/firecracker-microvm/firecracker) and [Kata Containers](https://github.com/kata-containers/kata-containers) by providing storage over vhost-user
36
-
- Programmatic based storage access, i.e write to block devices from within your application instead of making system calls
37
-
- Storage unification to lift barriers so that you can start deploying cloud native apps on your existing storage without painful data gravity barriers that prevent progress and innovation
38
+
- Low latency workloads for converged and segregated storage by leveraging NVMe/NVMe over Fabrics (NVMe-oF)
39
+
- Micro-VM based containers like [Firecracker microVMs](https://github.com/firecracker-microvm/firecracker) and
40
+
[Kata Containers](https://github.com/kata-containers/kata-containers) by providing storage over vhost-user
41
+
- Programmatic based storage access, i.e write to block devices from within your application instead of making system calls
42
+
- Storage unification to lift barriers so that you can start deploying cloud native apps on your existing storage
43
+
without painful data gravity barriers that prevent progress and innovation
38
44
39
-
# User Documentation
45
+
## User Documentation
46
+
47
+
---
40
48
41
49
The official user documentation for the Mayastor Project is published at: [OpenEBS Replicated Storage](https://openebs.io/docs/concepts/data-engines/replicated-storage)
42
50
@@ -46,15 +54,18 @@ At a high-level, Mayastor consists of two major components.
46
54
47
55
### **Control plane:**
48
56
49
-
* A microservices patterned control plane, centered around a core agent which publicly exposes a RESTful API. This is extended by a dedicated operator responsible
50
-
for managing the life cycle of "Mayastor Pools" (an abstraction for devices supplying the cluster with persistent backing storage) and a CSI compliant external provisioner (controller).
51
-
Source code for the control plane components is located in its [own repository](https://github.com/openebs/mayastor-control-plane)
57
+
- A microservices patterned control plane, centered around a core agent which publically exposes a RESTful API.
58
+
This is extended by a dedicated operator responsible for managing the life cycle of "Disk Pools"
59
+
(an abstraction for devices supplying the cluster with persistent backing storage) and a CSI compliant
60
+
external provisioner (controller).
61
+
Source code for the control plane components is located in its [own repository](https://github.com/openebs/mayastor-control-plane)
52
62
53
-
* A _per_ node instance *mayastor-csi* plugin which implements the identity and node grpc services from CSI protocol.
63
+
- A daemonset _mayastor-csi_ plugin which implements the identity and node grpc services from CSI protocol.
54
64
55
65
### **Data plane:**
56
66
57
-
* Each node you wish to use for storage or storage services will have to run a Mayastor daemon set. Mayastor itself has three major components: the Nexus, a local storage component, and the mayastor-csi plugin.
67
+
- Each node you wish to use for storage or storage services will have to run an IO Engine daemonset. Mayastor itself has
68
+
two major components: the Nexus and a local storage component.
58
69
59
70
## Nexus
60
71
@@ -65,10 +76,10 @@ selected to run your k8s workload. We call these from the Nexus' point of view i
65
76
The goal we envision the Nexus to provide here, as it sits between the storage systems and PVCs, is loose coupling.
66
77
67
78
A practical example: Once you are up and running with persistent workloads in a container, you need to move your data because
68
-
the storage system that stores your PVC goes EOL. You now can control how this impacts your team without getting into storage
69
-
migration projects, which are always painful and complicated. In reality, the individual storage volumes per team/app are
70
-
relatively small, but today it is not possible for individual teams to handle their own storage needs. The Nexus provides the
71
-
abstraction over the resources such that the developer teams stay in control.
79
+
the storage system that stores your PVC goes EOL. You now can control how this impacts your team without getting into storage
80
+
migration projects, which are always painful and complicated. In reality, the individual storage volumes per team/app are
81
+
relatively small, but today it is not possible for individual teams to handle their own storage needs.
82
+
The Nexus provides the abstraction over the resources such that the developer teams stay in control.
72
83
73
84
The reason we think this can work is because applications have changed, and the way they are built allows us to rethink
74
85
they way we do things. Moreover, due to hardware [changes](https://searchstorage.techtarget.com/tip/NVMe-performance-challenges-expose-the-CPU-chokepoint)
@@ -79,6 +90,7 @@ a single device to a protocol standard protocol. These storage URIs are generate
79
90
track of what resources belong to what Nexus instance and subsequently to what PVC.
80
91
81
92
You can also directly use the nexus from within your application code. For example:
We think this can help a lot of database projects as well, where they typically have all the smarts in their database engine
126
138
and they want the most simple (but fast) storage device. For a more elaborate example see some of the tests in mayastor/tests.
127
139
128
-
To communicate with the children, the Nexus uses industry standard protocols. The Nexus supports direct access to local storage and remote storage using NVMe-oF TCP. Another advantage of the implementation is that if you were to remove
140
+
To communicate with the children, the Nexus uses industry standard protocols. The Nexus supports direct access to local
141
+
storage and remote storage using NVMe-oF TCP. Another advantage of the implementation is that if you were to remove
129
142
the Nexus from the data path, you would still be able to access your data as if Mayastor was not there.
130
143
131
144
The Nexus itself does not store any data and in its most simplistic form the Nexus is a proxy towards real storage
@@ -151,6 +164,7 @@ except for the fact that it is not local anymore.
151
164
Similarly, if you do not want to use anything other than local storage, you can still use Mayastor to provide you with
152
165
additional functionality that otherwise would require you setup kernel specific features like LVM for example.
153
166
<br>
167
+
154
168
</p>
155
169
156
170
## Exporting the Nexus
@@ -199,18 +213,18 @@ $ io-engine-client pool destroy tpool
199
213
200
214
## Links
201
215
202
-
-[Our bindings to spdk in the spdk-sys crate](https://github.com/openebs/spdk-sys)
216
+
-[Our bindings to spdk in the spdk-rs crate](https://github.com/openebs/spdk-rs)
0 commit comments