-
Notifications
You must be signed in to change notification settings - Fork 2
Storage Configuration
Stacki manages storage at both the Partition level and the hardware RAID Controller level.
The configuration of disk partitions can be specified in a spreadsheet with the following columns:
- Name. A host name, appliance type or global.
-
Device. The Linux disk device name (e.g.,
sda,sdb). - Mountpoint. Where the partition should be mounted on the file system.
- Size. The size of the partition in megabytes.
- Type. How the partition should be formatted (e.g., xfs, swap).
A sample spreadsheet is shown below.

The Name column can contain a specific host name (e.g., backend-0-0), an Appliance type (e.g., backend) or it can be set to global.
In the sample spreadsheet, we see the default configuration (global) is to
only configure the partitions for the first disk (sda).
The root partition / is an ext4 partition and it is 50 GB.
The /var partition is an ext4 partition and it is 80 GB.
The swap partition is 16 GB.
Lastly, /scratch is an xfs partition and it will be the remainder of sda.
The configuration for backend-0-0 has a similar configuration for sda as the global configuration.
Additionally, sdb and sdc will be configured for backend-0-0 as single partitions that span the entire disk.
When you are finished editing your spreadsheet, save it as a CSV file, then copy the CSV file to your frontend. Then, load the CSV file into the database on the frontend by executing:
# stack load storage partition file=your-controller.csv
You can view your storage partition configuration by executing:
# stack list storage partition
A host's disk partitions will only be reconfigured if the nukedisks attribute is set to true. On first install, all installing backend disks automatically have nukedisks set to true. If you've added backend nodes via spreadsheet, you must set nukedisks to true as in the example below, before installing.
As an example, to set the nukedisks attribute for host backend-0-0, execute:
# stack set host attr backend-0-0 attr=nukedisks value=true
Then, the next time backend-0-0 is installed, it will remove all partitions for all disks, then repartition the disks as you specified in your spreadsheet.
While a host is installing, after it partitions its disks, it will send a message to the frontend to instruct it to set the nukedisks attribute back to false. This ensures that the disks will not be reconfigured on the next installation.
Currently, there is no support to configure logical volumes via spreadsheets. This feature is in development.
LVM configuration is supported in Stacki. Please contact us for assistance.
Stacki can automatically configure two types of hardware RAID controllers:
- LSI MegaRAID
- HP Smart Array
The configuration of disk controllers can be specified in a spreadsheet with the following columns:
- Name. A host name, appliance type or global.
- Slot. The slot of a specific disk in the array.
- Raid Level. The RAID level for the disks. This can be 0, 1, 5 or 6.
- Array Id. The order in which the RAID groups will be constructed.
A sample spreadsheet is shown below.

The Name column can contain a specific host name (e.g., backend-0-0), an appliance type (e.g., backend) or it can be set to global.
In the sample spreadsheet, we see the default configuration (global) is to
configure the disks in slot 0 and 1 as a RAID 1 mirror and make them the
first logical disk (the Linux kernel will see this as sda).
The remaining disks (the disks in slots 2 and up) will be configured as individual RAID 0 disks (also known as JBOD mode).
We specify this with the wildcard symbol "*" for the Slot and Array Id cells.
Wildcards are useful when your backend hosts have different number of disks drives.
The next configuration is for all backend hosts.
Like the global configuration, the first two drives are configured as RAID 1 and they will be the first logical disk in the system (sda).
The disks in slots 2, 3 and 4 are configured as a RAID 5 and the disk in slot 6 will be available as a hot spare for this array and this array will be the second logical disk (sdb).
The third configuration is for the host named backend-0-0.
The first logical disk (sda) will be a RAID 1 and it will be constructed with the disk in slot 5 and the disk in slot 15.
The second logical disk (sdb) will be a RAID 5 composed of the disks in slots 0 through 4.
The third logical disk (sdc) will be a RAID 5 composed of the disks in slots 16 through 21.
The fourth logical disk (sdd) will be a RAID 6 composed of the disks in slots 6 through 12 and the disks in slots 13 and 14 will be hot spares associated with only this array.
The disks in slots 22 and 23 are designated as hot spares that can be used as replacements for any failed drive in any array.
When you are finished editing your spreadsheet, save it as a CSV file, then copy the CSV file to your frontend. Then, load the CSV file into the database on the frontend by executing:
# stack load storage controller file=your-controller.csv
You can view your storage controller configuration by executing:
# stack list storage controller
A host's hardware RAID controller will only be reconfigured if the nukecontroller attribute is set to true. As an example, to set the nukecontroller attribute for host backend-0-0, execute:
# stack set host attr backend-0-0 attr=nukecontroller value=true
Then, the next time backend-0-0 is installed, it will remove the current hardware RAID controller configuration, then configure it as you specified in your spreadsheet.
Unlike the nukedisks attribute, nukecontroller is not set to true on the initial installation of a backend node. If you or someone you've paid, has configured the RAID controller with a keyboard and monitor, that work won't be wiped out unless you specifically request it with nukecontroller.
While a host is installing, after it configures its controller, it will send a message to the frontend to instruct it to set the nukecontroller attribute back to false. This ensures that the controller will not be reconfigured on the next installation.