This patch is documenting the new root device hint: HCTL and adding a release note for it. Closes-Bug: #1648036 Change-Id: Ie7ef0e25aed50ea5372d7cfe80778575f8560271
3.5 KiB
Specifying the disk for deployment (root device hints)
Starting with the Kilo release, Bare Metal service supports passing hints to the deploy ramdisk about which disk it should pick for the deployment. The list of support hints is:
model (STRING): device identifier
vendor (STRING): device vendor
serial (STRING): disk serial number
size (INT): size of the device in GiB
Note
A node's 'local_gb' property is often set to a value 1 GiB less than the actual disk size to account for partitioning (this is how DevStack, TripleO and Ironic Inspector work, to name a few). However, in this case
size
should be the actual size. For example, for a 128 GiB disklocal_gb
will be 127, but size hint will be 128.wwn (STRING): unique storage identifier
wwn_with_extension (STRING): unique storage identifier with the vendor extension appended
wwn_vendor_extension (STRING): unique vendor storage identifier
rotational (BOOLEAN): whether it's a rotational device or not. This hint makes it easier to distinguish HDDs (rotational) and SSDs (not rotational) when choosing which disk Ironic should deploy the image onto.
hctl (STRING): the SCSI address (Host, Channel, Target and Lun), e.g '1:0:0:0'
name (STRING): the device name, e.g /dev/md0
Warning
The root device hint name should only be used for devices with constant names (e.g RAID volumes). For SATA, SCSI and IDE disk controllers this hint is not recommended because the order in which the device nodes are added in Linux is arbitrary, resulting in devices like /dev/sda and /dev/sdb switching around at boot time.
To associate one or more hints with a node, update the node's
properties with a root_device
key, for example:
ironic node-update <node-uuid> add properties/root_device='{"wwn": "0x4000cca77fc4dba1"}'
That will guarantee that Bare Metal service will pick the disk device
that has the wwn
equal to the specified wwn value, or fail
the deployment if it can not be found.
The hints can have an operator at the beginning of the value string.
If no operator is specified the default is ==
(for
numerical values) and s==
(for string values). The
supported operators are:
- For numerical values:
=
equal to or greater than. This is equivalent to>=
and is supported for legacy reasons==
equal to!=
not equal to>=
greater than or equal to>
greater than<=
less than or equal to<
less than
- For strings (as python comparisons):
s==
equal tos!=
not equal tos>=
greater than or equal tos>
greater thans<=
less than or equal tos<
less than<in>
substring
- For collections:
<all-in>
all elements contained in collection<or>
find one of these
Examples are:
Finding a disk larger or equal to 60 GiB and non-rotational (SSD):
ironic node-update <node-uuid> add properties/root_device='{"size": ">= 60", "rotational": false}'
Finding a disk whose vendor is
samsung
orwinsys
:ironic node-update <node-uuid> add properties/root_device='{"vendor": "<or> samsung <or> winsys"}'
Note
If multiple hints are specified, a device must satisfy all the hints.