Swap is a bit special, and must be special-cased in both MAAS and curtin:
-
Swap can exist:
- on a whole disk,
- on a partition with the type
0x82
("Linux swap / Solaris"), - in a file without holes (created with
fallocate
ordd
for example).
-
Swap must be created with
mkswap
, notmkfs.${fstype}
. -
Swap is mounted with
swapon
, notmount
. -
Swap is not a filesystem and so is not mounted to a directory.
It would appear that swap more closely resembles a special-case of a block device than of a filesystem. Nevertheless, MAAS models it as a filesystem; the special-cases to handle it thus are fewer and will be more familiar to end-users.
MAAS will support swap on a disk, on a partition, or in a swap file. The latter is already supported; setting Node.swap_size = 1234
will result in {"swap": {"size": "1234B"}}
being passed to curtin. This document therefore discusses only swap on a disk or partition.
In the storage configuration that MAAS passes to curtin it may include stanzas like:
- id: sda-part3
name: sda-part3
type: partition
number: 3
uuid: 53f88413-0568-44cc-b7db-4378bdba7f6e
size: 1073741824B
device: sda
wipe: superblock
- id: sda-part3_format
type: format
fstype: swap
label: swap
uuid: 0f523f74-e657-4c5d-a11b-b50c4c6b0c73
volume: sda-part3
- id: sda-part3_mount
device: sda-part3_format
options: pri=1,discard=pages
type: mount
The type: parititon
stanza describes the partition on which the swap will be created. This is identical in form to other type: partition
stanzas. Note that there is no partition type information; this must be inferred from the fstype
in the related type: format
stanza.
The type: format
stanza describes how the partition will be prepared. In this case, curtin will presumably format using mkswap
and may set the partition type to 0x82
, but these are implementation details for curtin. This stanza takes the same form as other type: format
stanzas.
The type: mount
stanza describes mounting (strictly: enabling) the swap area. It differs in form from other type: mount
stanzas in that it does not provide a path
.
If a type: format
stanza for swap is given to curtin without a corresponding type: mount
stanza, the swap area should be created but not enabled. It should not be rendered into fstab(5)
. This is consistent with existing behaviour for other filesystems.