Add consistent-disk-identification spec

Change-Id: I67737aed7bf631c9610fca7f0ab52d97ca861bef
This commit is contained in:
Max Lobur 2016-02-09 21:27:14 +02:00
parent 99973fdd68
commit 7453426a74
1 changed files with 97 additions and 0 deletions

View File

@ -0,0 +1,97 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode
==============================
Consistent disk identification
==============================
https://blueprints.launchpad.net/bareon/+spec/consistent-disk-identification
Problem description
===================
Udev provides unstable disk naming (e.g. sda/sdb can switch through power cycles).
Thus usage of these names in partitions schema is non-reliable.
Bareon needs a predictable, repeatable, and consistent way of disk identification
for the partitions schema. The method must be scalable and easy to maintain.
For example, the "ID" should ideally be applicable to all BM servers of the
same hardware configuration. UUIDs and S/Ns are unique to each physical server
and therefore not usable for reasons of scalability and difficulty to maintain.
Use cases:
- Deploying a number of nodes, each node has 2 disks: 300 Gb SSD and 2Tb HDD.
Disks may be discovered by udev in different order. Cray wants all the nodes
to be partitioned exactly the same - boot partition on the SSD, storage on HDD.
Proposed change
===============
NOTE: This is a contribution of the feature developed within Cray OpenStack project.
We will try to make a minimum changes to existing code.
To provide a flexible and predictable way to point devices in partitions schema
for Ironic data driver bareon adds support for the following disk identifiers:
- SCSI address (bus position): 6:2:0:0
- By path: disk/by-path/pci-0000:00:06.0-virtio-pci-virtio2 (exists already)
- Name: vda. Eexists already. This reliable ID, should not be used when
precise identification needed. Left for general use-cases.
For this purpose the id property of the disk will be changed to include the
type of identifier:
::
{
"partitions":[
{
"type": "disk",
"id":{"type": "scsi", "value": "6:1:0:0"},
...
}
]
}
Other examples of id are:
::
"id":{"type": "path",
"value" : "disk/by-path/pci-0000:00:07.0-virtio-pci-virtio3"}
"id":{"type": "name", "value": "vda"}
Alternatives
------------
To use existing nailgun schema (metadata) to identify disks (discuss if
this is possible).
Implementation
==============
Assignee(s)
-----------
- max_lobur
Milestones
----------
See blueprint ref above.
Work Items
----------
- rebase onto Bareon master
Dependencies
============
None.