Skip to content

Commit cf1e4e4

Browse files
authored
Merge pull request #73772 from sr1kar99/local-storage-options
TELCODOCS#1831: Local storage overview
2 parents d3900c3 + 5254535 commit cf1e4e4

File tree

3 files changed

+240
-0
lines changed

3 files changed

+240
-0
lines changed

_topic_maps/_topic_map.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1652,6 +1652,8 @@ Topics:
16521652
Dir: persistent_storage_local
16531653
Distros: openshift-enterprise,openshift-origin
16541654
Topics:
1655+
- Name: Local storage overview
1656+
File: ways-to-provision-local-storage
16551657
- Name: Persistent storage using local volumes
16561658
File: persistent-storage-local
16571659
- Name: Persistent storage using hostPath
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * storage/persistent_storage/persistent_storage_local/ways-to-provision-local-storage.adoc
4+
5+
:_mod-docs-content-type: CONCEPT
6+
[id="comparison-of-solutions-to-provision-node-local-storage_{context}"]
7+
= Comparison of LVM Storage, LSO, and HPP
8+
9+
The following sections compare the functionalities provided by {lvms}, Local Storage Operator (LSO), and HostPath Provisioner (HPP) to provision local storage.
10+
11+
[id="comparing-storage-types_{context}"]
12+
== Comparison of the support for storage types and filesystems
13+
14+
The following table compares the support for storage types and filesystems provided by {lvms}, Local Storage Operator (LSO), and HostPath Provisioner (HPP) to provision local storage:
15+
16+
.Comparison of the support for storage types and filesystems
17+
[cols="6a,5a,5a,5a",options="header"]
18+
|====
19+
20+
|Functionality|LVM Storage|LSO |HPP
21+
22+
|Support for block storage |Yes |Yes |No
23+
24+
|Support for file storage |Yes |Yes |Yes
25+
26+
|Support for object storage ^[1]^ |No |No |No
27+
28+
|Available filesystems |`ext4`, `xfs` |`ext4`, `xfs` |Any mounted system available on the node is supported.
29+
30+
|====
31+
[.small]
32+
--
33+
1. None of the solutions ({lvms}, LSO, and HPP) provide support for object storage. Therefore, if you want to use object storage, you need an S3 object storage solution, such as `MultiClusterGateway` from the Red{nbsp}Hat OpenShift Data Foundation. All of the solutions can serve as underlying storage providers for the S3 object storage solutions.
34+
--
35+
36+
[id="comparing-core-functionalities_{context}"]
37+
== Comparison of the support for core functionalities
38+
39+
The following table compares how {lvms}, Local Storage Operator (LSO), and HostPath Provisioner (HPP) support core functionalities for provisioning local storage:
40+
41+
.Comparison of the support for core functionalities
42+
[cols="6a,5a,5a,5a",options="header"]
43+
|====
44+
45+
|Functionality|LVM Storage|LSO |HPP
46+
47+
|Support for automatic file system formatting |Yes |Yes |N/A
48+
49+
|Support for dynamic provisioning |Yes |No |No
50+
51+
|Support for using software Redundant Array of Independent Disks (RAID) arrays
52+
|Yes
53+
54+
Supported on 4.15 and later.
55+
56+
|Yes |Yes
57+
58+
|Support for transparent disk encryption |Yes
59+
60+
Supported on 4.16 and later.
61+
62+
|Yes |Yes
63+
64+
|Support for volume based disk encryption |No |No |No
65+
66+
|Support for disconnected installation |Yes |Yes |Yes
67+
68+
|Support for PVC expansion |Yes |No |No
69+
70+
|Support for volume snapshots and volume clones |Yes |No |No
71+
72+
|Support for thin provisioning |Yes
73+
74+
Devices are thin-provisioned by default.
75+
76+
|Yes
77+
78+
You can configure the devices to point to the thin-provisioned volumes
79+
80+
|Yes
81+
82+
You can configure a path to point to the thin-provisioned volumes.
83+
84+
|Support for automatic disk discovery and setup |Yes
85+
86+
Automatic disk discovery is available during installation and runtime. You can also dynamically add the disks to the `LVMCluster` custom resource (CR) to increase the storage capacity of the existing storage classes.
87+
88+
|Technology Preview
89+
90+
Automatic disk discovery is available during installation.
91+
92+
|No
93+
94+
|====
95+
96+
[id="comparing-performance-and-isolation-boundary_{context}"]
97+
== Comparison of performance and isolation capabilities
98+
99+
The following table compares the performance and isolation capabilities of {lvms}, Local Storage Operator (LSO), and HostPath Provisioner (HPP) in provisioning local storage.
100+
101+
.Comparison of performance and isolation capabilities
102+
[cols="5a,6a,6a,6a",options="header"]
103+
|====
104+
105+
|Functionality|LVM Storage|LSO |HPP
106+
107+
|Performance
108+
109+
|I/O speed is shared for all workloads that use the same storage class.
110+
111+
Block storage allows direct I/O operations.
112+
113+
Thin provisioning can affect the performance.
114+
115+
|I/O depends on the LSO configuration.
116+
117+
Block storage allows direct I/O operations.
118+
119+
|I/O speed is shared for all workloads that use the same storage class.
120+
121+
The restrictions imposed by the underlying filesystem can affect the I/O speed.
122+
123+
|Isolation boundary ^[1]^
124+
125+
|LVM Logical Volume (LV)
126+
127+
It provides higher level of isolation compared to HPP.
128+
129+
|LVM Logical Volume (LV)
130+
131+
It provides higher level of isolation compared to HPP
132+
133+
|Filesystem path
134+
135+
It provides lower level of isolation compared to LSO and {lvms}.
136+
137+
|====
138+
[.small]
139+
--
140+
1. Isolation boundary refers to the level of separation between different workloads or applications that use local storage resources.
141+
--
142+
143+
[id="comparing-additional-functionalities_{context}"]
144+
== Comparison of the support for additional functionalities
145+
146+
The following table compares the additional features provided by {lvms}, Local Storage Operator (LSO), and HostPath Provisioner (HPP) to provision local storage:
147+
148+
.Comparison of the support for additional functionalities
149+
[cols="6a,5a,5a,5a",options="header"]
150+
|====
151+
152+
|Functionality|LVM Storage|LSO |HPP
153+
154+
|Support for generic ephemeral volumes |Yes |No |No
155+
156+
|Support for CSI inline ephemeral volumes |No |No |No
157+
158+
|Support for storage topology |Yes
159+
160+
Supports CSI node topology
161+
162+
|Yes
163+
164+
LSO provides partial support for storage topology through node tolerations.
165+
166+
|No
167+
168+
|Support for `ReadWriteMany` (RWX) access mode ^[1]^ |No |No |No
169+
170+
|====
171+
[.small]
172+
--
173+
1. All of the solutions ({lvms}, LSO, and HPP) have the `ReadWriteOnce` (RWO) access mode. RWO access mode allows access from multiple pods on the same node.
174+
--
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
:_mod-docs-content-type: ASSEMBLY
2+
[id="ways-to-provision-local-storage_{context}"]
3+
= Local storage overview
4+
include::_attributes/common-attributes.adoc[]
5+
:context: ways-to-provision-local-storage
6+
7+
toc::[]
8+
9+
You can use any of the following solutions to provision local storage:
10+
11+
* HostPath Provisioner (HPP)
12+
* Local Storage Operator (LSO)
13+
* {lvms-first}
14+
15+
[WARNING]
16+
====
17+
These solutions support provisioning only node-local storage. The workloads are bound to the nodes that provide the storage. If the node becomes unavailable, the workload also becomes unavailable. To maintain workload availability despite node failures, you must ensure storage data replication through active or passive replication mechanisms.
18+
====
19+
20+
[id="overview-of-hpp-functionality_{context}"]
21+
== Overview of HostPath Provisioner functionality
22+
23+
You can perform the following actions using HostPath Provisioner (HPP):
24+
25+
* Map the host filesystem paths to storage classes for provisioning local storage.
26+
* Statically create storage classes to configure filesystem paths on a node for storage consumption.
27+
* Statically provision Persistent Volumes (PVs) based on the storage class.
28+
* Create workloads and PersistentVolumeClaims (PVCs) while being aware of the underlying storage topology.
29+
30+
[NOTE]
31+
====
32+
HPP is available in upstream Kubernetes. However, it is not recommended to use HPP from upstream Kubernetes.
33+
====
34+
35+
[id="overview-of-lso-functionality_{context}"]
36+
== Overview of Local Storage Operator functionality
37+
38+
You can perform the following actions using Local Storage Operator (LSO):
39+
40+
* Assign the storage devices (disks or partitions) to the storage classes without modifying the device configuration.
41+
* Statically provision PVs and storage classes by configuring the `LocalVolume` custom resource (CR).
42+
* Create workloads and PVCs while being aware of the underlying storage topology.
43+
44+
[NOTE]
45+
====
46+
LSO is developed and delivered by Red{nbsp}Hat.
47+
====
48+
49+
[id="overview-of-lvm-storage-functionality_{context}"]
50+
== Overview of LVM Storage functionality
51+
52+
You can perform the following actions using {lvms-first}:
53+
54+
* Configure storage devices (disks or partitions) as lvm2 volume groups and expose the volume groups as storage classes.
55+
* Create workloads and request storage by using PVCs without considering the node topology.
56+
57+
{lvms} uses the TopoLVM CSI driver to dynamically allocate storage space to the nodes in the topology and provision PVs.
58+
59+
[NOTE]
60+
====
61+
{lvms} is developed and maintained by Red{nbsp}Hat. The CSI driver provided with {lvms} is the upstream project "topolvm".
62+
====
63+
64+
include::modules/comparison-of-solutions-to-provision-node-local-storage.adoc[leveloffset=+1]

0 commit comments

Comments
 (0)