Storage

The final storage configuration that a deployed node uses can be influenced significantly. MAAS supports traditional disk partitioning as well as more complex options such as LVM, RAID, and Bcache. UEFI is also supported as a boot mechanism.

A node's storage is dependant upon the underlying system's disks but its configuration (how the disks get used) is the result of a storage template. In MAAS this template is called a layout and it gets applied to a node when it is commissioned.

Once a layout is applied, a regular user can make modifications to a node at the filesystem level in order to arrive at the node's final storage configuration.

When a node is no longer needed a user can choose from among several disk erasure types before releasing it.

Note: MAAS supports storage configuration for CentOS and RHEL deployments. Support includes RAID, LVM, and custom partitioning with different file systems (ZFS and Bcache excluded). This support requires a newer version of Curtin, available as a PPA.

UEFI

A node booting with UEFI is supported by every layout type. In such a case, an EFI boot partition (/boot/efi) will be automatically created. Other than setting the node to boot from UEFI, no other action is required of the user.

Warning: UEFI is either used by the node throughout its lifecycle or it's not. For example, do not enlist a node with UEFI enabled and then disable it before commissioning. It won't work!

The EFI partition, if created, will be the first partition (sda1) and will have a FAT32 filesystem with a size of 512 MB.

Layouts

There are three layout types:

  • Flat layout
  • LVM layout
  • Bcache layout

The below layout descriptions will include the EFI partition. If your system is not using UEFI simply regard sda2 as sda1 (with an additional 512 MB available to it).

Flat layout

With the Flat layout, a partition spans the entire boot disk. The partition is formatted with the ext4 filesystem and uses the / mount point:

Name Size Type Filesystem Mount point
sda - disk
sda1 512 MB part FAT32 /boot/efi
sda2 rest of sda part ext4 /

The following options are supported:

boot_size: Size of the boot partition on the boot disk. Default is 0, meaning not to create the boot partition. The '/boot' will be placed on the root filesystem.

root_device: The block device to place the root partition on. Default is the boot disk.

root_size: Size of the root partition. Default is 100%, meaning the entire size of the root device.

LVM layout

The LVM layout creates the volume group vgroot on a partition that spans the entire boot disk. A logical volume lvroot is created for the full size of the volume group; is formatted with the ext4 filesystem; and uses the / mount point:

Name Size Type Filesystem Mount point
sda - disk
sda1 512 MB part FAT32 /boot/efi
sda2 rest of sda part lvm-pv(vgroot)
lvroot rest of sda lvm ext4 /
vgroot rest of sda lvm

The following options are supported:

boot_size: Size of the boot partition on the boot disk. Default is 0, meaning not to create the boot partition. The '/boot' will be placed on the root filesystem.

root_device: The block device to place the root partition on. Default is the boot disk.

root_size: Size of the root partition. Default is 100%, meaning the entire size of the root device.

vg_name: Name of the created volume group. Default is vgroot.

lv_name: Name of the created logical volume. Default is lvroot.

lv_size: Size of the created logical volume. Default is 100%, meaning the entire size of the volume group.

Bcache layout

A Bcache layout will create a partition that spans the entire boot disk as the backing device. It uses the smallest block device tagged with 'ssd' as the cache device. The Bcache device is formatted with the ext4 filesystem and uses the / mount point. If there are no 'ssd' tagged block devices on the node, then the Bcache device will not be created and the Flat layout will be used instead:

Name Size Type Filesystem Mount point
sda - disk
sda1 512 MB part FAT32 /boot/efi
sda2 rest of sda part bc-backing
sdb (ssd) - disk
sdb1 100% of sdb part bc-cache
bcache0 per sda2 disk ext4 /

The following options are supported:

boot_size: Size of the boot partition on the boot disk. Default is 0, meaning not to create the boot partition. The '/boot' will be placed on the root filesystem.

root_device: The block device to place the root partition on. Default is the boot disk.

root_size: Size of the root partition. Default is 100%, meaning the entire size of the root device.

cache_device: The block device to use as the cache device. Default is the smallest block device tagged ssd.

cache_mode: The cache mode to set the created Bcache device to. Default is writethrough.

cache_size: The size of the partition on the cache device. Default is 100%, meaning the entire size of the cache device.

cache_no_part: Whether or not to create a partition on the cache device. Default is false, meaning to create a partition using the given cache_size. If set to true no partition will be created and the raw cache device will be used as the cache.

Setting layouts

Layouts can be set globally and on a per-node basis.

Default layout

All nodes will have a default layout applied when commissioned. An administrator can configure the default layout on the 'Settings' page, under the 'Storage' tab.

default storage layout

See Disk erasure for an explanation of the options related to the erasing of disks.

Important: The new default will only apply to newly-commissioned nodes.

To change the default with the CLI see MAAS CLI - advanced tasks.

Node layout

An administrator can change the layout for a single node as well as customise that layout providing this is done while the node has a status of 'Ready'. This is only possible via the CLI at this time (see MAAS CLI - advanced tasks).

Note: Only an administrator can modify storage at the block device level (providing the node has a status of 'Ready').

Final storage modifications

Once a node has been provisioned with block devices via a layout or administrator customisation (as mentioned under 'Node layout'), a regular user can perform modifications on the resulting storage configuration at the filesystem level.

Disk erasure

Node storage can be erased in several ways. See Disk erasure for details.