The ibmc
driver is targeted for Huawei V5 series rack server such as
2288H V5, CH121 V5. The iBMC hardware type enables the user to take advantage
of features of Huawei iBMC to control Huawei server.
The ibmc
hardware type supports the following Ironic interfaces:
Management Interface: Boot device management
Power Interface: Power management
RAID Interface: RAID controller and disk management
Vendor Interface: ibmc passthru interfaces
node(s).
For example, it can be installed with pip
:
sudo pip install python-ibmcclient
Add ibmc
to the list of enabled_hardware_types
,
enabled_power_interfaces
, enabled_vendor_interfaces
and enabled_management_interfaces
in /etc/ironic/ironic.conf
. For example:
[DEFAULT]
...
enabled_hardware_types = ibmc
enabled_power_interfaces = ibmc
enabled_management_interfaces = ibmc
enabled_raid_interfaces = ibmc
enabled_vendor_interfaces = ibmc
Restart the ironic conductor service:
sudo service ironic-conductor restart
# Or, for RDO:
sudo systemctl restart openstack-ironic-conductor
Nodes configured to use the driver should have the driver
property
set to ibmc
.
The following properties are specified in the node’s driver_info
field:
ibmc_address
:
The URL address to the ibmc controller. It must include the authority portion of the URL, and can optionally include the scheme. If the scheme is missing, https is assumed. For example: https://ibmc.example.com. This is required.
ibmc_username
:
User account with admin/server-profile access privilege. This is required.
ibmc_password
:
User account password. This is required.
ibmc_verify_ca
:
If ibmc_address has the https scheme, the driver will use a secure (TLS) connection when talking to the ibmc controller. By default (if this is set to True), the driver will try to verify the host certificates. This can be set to the path of a certificate file or directory with trusted certificates that the driver will use for verification. To disable verifying TLS, set this to False. This is optional.
The openstack baremetal node create
command can be used to enroll
a node with the ibmc
driver. For example:
openstack baremetal node create --driver ibmc
--driver-info ibmc_address=https://example.com \
--driver-info ibmc_username=admin \
--driver-info ibmc_password=password
For more information about enrolling nodes see Enrollment in the install guide.
Currently, only RAID controller which supports OOB management can be managed.
See RAID Configuration for more information on Ironic RAID support.
The following properties are supported by the iBMC raid interface
implementation, ibmc
:
size_gb
: Size in gigabytes (integer) for the logical disk. Use MAX
as
size_gb
if this logical disk is supposed to use the rest of the space
available.
raid_level
: RAID level for the logical disk. Valid values are
JBOD
, 0
, 1
, 5
, 6
, 1+0
, 5+0
and 6+0
. And it
is possible that some RAID controllers can only support a subset RAID
levels.
Note
RAID level 2
is not supported by iBMC
driver.
is_root_volume
: Optional. Specifies whether this disk is a root volume.
By default, this is False
.
volume_name
: Optional. Name of the volume to be created. If this is not
specified, it will be N/A.
See RAID Configuration for more information on backing disk hints.
These are machine-independent properties. The hints are specified for each logical disk to help Ironic find the desired disks for RAID configuration.
share_physical_disks
disk_type
interface_type
number_of_physical_disks
These are HUAWEI RAID controller dependent properties:
controller
: Optional. Supported values are: RAID storage id,
RAID storage name or RAID controller name. If a bare metal server have more
than one controller, this is mandatory. Typical values would look like:
RAID Storage Id:
RAIDStorage0
RAID Storage Name:
RAIDStorage0
RAID Controller Name:
RAID Card1 Controller
.
physical_disks
: Optional. Supported values are: disk-id, disk-name or
disk serial number. Typical values for hdd disk would look like:
Disk Id:
HDDPlaneDisk0
Disk Name:
Disk0
.Disk SerialNumber:
38DGK77LF77D
For delete_configuration
step, ibmc
will do:
delete all logical disks
delete all hot-spare disks
Logical Disks creation priority based on three properties:
share_physical_disks
physical_disks
size_gb
The logical disks creation priority strictly follow the table below, if
multiple logical disks have the same priority, then they will be created with
the same order in logical_disks
array.
Share physical disks |
Specified Physical Disks |
Size |
---|---|---|
no |
yes |
int|max |
no |
no |
int |
yes |
yes |
int |
yes |
yes |
max |
yes |
no |
int |
yes |
no |
max |
no |
no |
max |
Note
physical-disk-group: a group of physical disks which have been used by some logical-disks with same RAID level.
If no physical_disks
are specified, the “waste least” strategy will be
used to choose the physical disks.
waste least disk capacity: when using disks with different capacity, it will cause a waste of disk capacity. This is to avoid with highest priority.
using least total disk capacity: for example, we can create 400G RAID 5 with both 5 100G-disks and 3 200G-disks. 5 100G disks is a better strategy because it uses a 500G capacity totally. While 3 200G-disks are 600G totally.
using least disk count: finally, if waste capacity and total disk capacity are both the same (it rarely happens?), we will choose the one with the minimum number of disks.
when share_physical_disks
option is present, ibmc
driver will
create logical disk upon existing physical-disk-group list first. Only
when no existing physical-disk-group matches, then it chooses unused
physical disks with same strategy described above. When multiple exists
physical-disk-groups matches, it will use “waste least” strategy too,
the bigger capacity left the better. For example, to create a logical disk
shown below on a ibmc
server which has two RAID5 logical disks already.
And the shareable capacity of this two logical-disks are 500G and 300G,
then ibmc
driver will choose the second one.
{
"logical_disks": [
{
"controller": "RAID Card1 Controller",
"raid_level": "5",
"size_gb": 100,
"share_physical_disks": true
}
]
}
And the ibmc
server has two RAID5 logical disks already.
When size_gb
is set to MAX
, ibmc
driver will auto work through
all possible cases and choose the “best” solution which has the biggest
capacity and use least capacity. For example: to create a RAID 5+0 logical
disk with MAX size in a server has 9 200G-disks, it will finally choose
“8 disks + span-number 2” but not “9 disks + span-number 3”. Although they
both have 1200G capacity totally, but the former uses only 8 disks and the
latter uses 9 disks. If you want to choose the latter solution, you can
specified the disk count to use by adding number_of_physical_disks
option.
{
"logical_disks": [
{
"controller": "RAID Card1 Controller",
"raid_level": "5+0",
"size_gb": "MAX"
}
]
}
RAID 5, 500G, root OS volume with 3 disks
RAID 5, rest available space, data volume with rest disks
{
"logical_disks": [
{
"volume_name": "os_volume",
"controller": "RAID Card1 Controller",
"is_root_volume": "True",
"physical_disks": [
"Disk0",
"Disk1",
"Disk2"
],
"raid_level": "5",
"size_gb": "500"
},
{
"volume_name": "data_volume",
"controller": "RAID Card1 Controller",
"raid_level": "5",
"size_gb": "MAX"
}
]
}
The ibmc
hardware type provides vendor passthru interfaces shown below:
Method Name |
HTTP Method |
Description |
---|---|---|
boot_up_seq |
GET |
Query boot up sequence |
get_raid_controller_list |
GET |
Query RAID controller summary info |
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.