Revision 855f9bad doc/design-shared-storage.rst
b/doc/design-shared-storage.rst | ||
---|---|---|
22 | 22 |
|
23 | 23 |
Background |
24 | 24 |
========== |
25 |
|
|
25 | 26 |
DRBD is currently the only shared storage backend supported by Ganeti. |
26 | 27 |
DRBD offers the advantages of high availability while running on |
27 | 28 |
commodity hardware at the cost of high network I/O for block-level |
... | ... | |
45 | 46 |
|
46 | 47 |
Use cases |
47 | 48 |
========= |
49 |
|
|
48 | 50 |
We consider the following use cases: |
49 | 51 |
|
50 | 52 |
- A virtualization cluster with FibreChannel shared storage, mapping at |
... | ... | |
63 | 65 |
storage. |
64 | 66 |
- Introduction of a shared file storage disk template for use with networked |
65 | 67 |
filesystems. |
66 |
- Introduction of shared block device disk template with device |
|
68 |
- Introduction of a shared block device disk template with device
|
|
67 | 69 |
adoption. |
68 |
- Introduction of an External Storage Interface.
|
|
70 |
- Introduction of the External Storage Interface.
|
|
69 | 71 |
|
70 | 72 |
Additionally, mid- to long-term goals include: |
71 | 73 |
|
... | ... | |
156 | 158 |
- The device will be available with the same path under all nodes in the |
157 | 159 |
node group. |
158 | 160 |
|
159 |
Introduction of an External Storage Interface
|
|
161 |
Introduction of the External Storage Interface
|
|
160 | 162 |
============================================== |
163 |
|
|
161 | 164 |
Overview |
162 | 165 |
-------- |
163 | 166 |
|
... | ... | |
180 | 183 |
- Grow a disk |
181 | 184 |
- Attach a disk to a given node |
182 | 185 |
- Detach a disk from a given node |
186 |
- SetInfo to a disk (add metadata) |
|
183 | 187 |
- Verify its supported parameters |
184 | 188 |
|
185 | 189 |
The proposed ExtStorage interface borrows heavily from the OS |
... | ... | |
191 | 195 |
- ``grow`` |
192 | 196 |
- ``attach`` |
193 | 197 |
- ``detach`` |
198 |
- ``setinfo`` |
|
194 | 199 |
- ``verify`` |
195 | 200 |
|
196 | 201 |
All scripts will be called with no arguments and get their input via |
... | ... | |
208 | 213 |
``EXTP_name`` |
209 | 214 |
ExtStorage parameter, where `name` is the parameter in |
210 | 215 |
upper-case (same as OS interface's ``OSP_*`` parameters). |
216 |
``VOL_METADATA`` |
|
217 |
A string containing metadata to be set for the volume. |
|
218 |
This is exported only to the ``setinfo`` script. |
|
211 | 219 |
|
212 | 220 |
All scripts except `attach` should return 0 on success and non-zero on |
213 | 221 |
error, accompanied by an appropriate error message on stderr. The |
... | ... | |
221 | 229 |
To support the ExtStorage interface, we will introduce a new disk |
222 | 230 |
template called `ext`. This template will implement the existing Ganeti |
223 | 231 |
disk interface in `lib/bdev.py` (create, remove, attach, assemble, |
224 |
shutdown, grow), and will simultaneously pass control to the external
|
|
225 |
scripts to actually handle the above actions. The `ext` disk template
|
|
226 |
will act as a translation layer between the current Ganeti disk |
|
232 |
shutdown, grow, setinfo), and will simultaneously pass control to the
|
|
233 |
external scripts to actually handle the above actions. The `ext` disk
|
|
234 |
template will act as a translation layer between the current Ganeti disk
|
|
227 | 235 |
interface and the ExtStorage providers. |
228 | 236 |
|
229 | 237 |
We will also introduce a new IDISK_PARAM called `IDISK_PROVIDER = |
Also available in: Unified diff