/Exa=============== -Disk Management -===============
-Warewulf itself does not manage disks, partitions, or file systems -directly, but provides structures in the configuration for these -objects. At the moment warewulf supports ignition to create the -partitions and file systems.
+Disk Management
+Warewulf itself does not manage disks, partitions, or file systems directly, but provides structures in the configuration for these objects. +At the moment warewulf supports ignition to create the partitions and file systems.
Note
It is not currently possible to manage the root file system with Warewulf.
Warewulf can be used, for example, to create swap partitions or -/scratch file systems.
+Warewulf can be used, for example, to create swap
partitions or /scratch
file systems.
Requirements
+Partition and file system creation requires both ignition
and sgdisk
to be installed in the container image.
Rocky Linux
+dnf install ignition gdisk
+
openSuse Leap
+zypper install ignition gptfdisk
+
Storage objects
-The format of the storage objects is inspired by butane/ignition; -but, where butane/ignition uses lists for holding disks, partitions -and file systems, Warewulf uses maps instead.
-A node or profile can have several disks, where each disk is -identified by the path to its block device. Every disks holds a map to -its partitions and a bool switch to indicate if an existing -partition table should be overwritten if it does not matched the -desired configuration.
-Each partition is identified by its label. The partition number can be -omitted, but specifying it is recommended as ignition may fail -without it. Partition sizes should also be set (specified in MiB), -except of the last partition: if no size is given, the maximum -available size is used. Each partition has the switches should_exist -and wipe_partition_entry which control the partition creation -process.
-File systems are identified by their underlying block device, -preferably using the /dev/by-partlabel format. Except for a swap -partition, an absolute path for the mount point must be specified for -each file system. Depending on the container used, valid formats are -btrfs, ext3, ext4, and xfs. Each file system has the switch -wipe_filesystem to control whether an existing file system is wiped.
+Storage objects
+The format of the storage objects is inspired by butane/ignition
;
+but, where butane/ignition
uses lists for holding disks, partitions and file systems, Warewulf uses maps instead.
A node or profile can have several disks, where each disk is identified by the path to its block device.
+Every disks holds a map to its partitions and a bool
switch to indicate if an existing partition table should be overwritten if it does not matched the desired configuration.
Each partition is identified by its label.
+The partition number can be omitted, but specifying it is recommended as ignition
may fail without it.
+Partition sizes should also be set (specified in MiB), except of the last partition:
+if no size is given, the maximum available size is used.
+Each partition has the switches should_exist
and wipe_partition_entry
which control the partition creation process.
File systems are identified by their underlying block device, preferably using the /dev/by-partlabel
format.
+Except for a swap
partition, an absolute path for the mount point must be specified for each file system.
+Depending on the container used, valid formats are btrfs
, ext3
, ext4
, and xfs
.
+Each file system has the switch wipe_filesystem
to control whether an existing file system is wiped.
Ignition Implementation
-The ignition implementation uses systemd services, as the underlying -sgdisk command relies on dbus notifications. All necessary services -are distributed by the wwinit overlay and depends on the existence -of the file /warewulf/ignition.json. This file is created by the -template function {{ createIgnitionJson }} only if the configuration -contains necessary specifications for disks, partitions, and file -systems. If the file /warewulf/ignition.json exists, the service -ignition-disks-ww4.service calls the ignition binary which takes -creates partitions and file systems. A systemd .mount unit is -created for each configured file system, which also creates the -necessary mount points in the root file system. These mount units are -required by the enabled ww4-disks.target. Entries in /etc/fstab -are created with the no_auto option so that file systems can be -easily mounted.
+Ignition Implementation
+The ignition implementation uses systemd services, as the underlying sgdisk
command relies on dbus notifications.
+All necessary services are distributed by the wwinit
overlay and depends on the existence of the file /warewulf/ignition.json
.
+This file is created by the template function {{ createIgnitionJson }}
only if the configuration contains necessary specifications for disks, partitions, and file systems.
+If the file /warewulf/ignition.json
exists, the service ignition-disks-ww4.service
calls the ignition binary which takes creates partitions and file systems.
+A systemd .mount
unit is created for each configured file system, which also creates the necessary mount points in the root file system.
+These mount units are required by the enabled ww4-disks.target
.
+Entries in /etc/fstab
are created with the no_auto
option so that file systems can be easily mounted.
Example disk configuration
-The following command will create a /scratch file system on the node -n01
+Example disk configuration
+The following command will create a /scratch
file system on the node n01
.
wwctl node set n01 \
--diskname /dev/vda --diskwipe \
--partname scratch --partcreate \
@@ -187,8 +192,30 @@ Example disk configuration --fsname swap --fsformat swap --fspath swap
which has the partition number 1 so that it will be added before the -/scratch partition.
+which has the partition number 1
so that it will be added before the
+/scratch
partition.
Troubleshooting
+If the partition creation didn’t work as expected you have a few options to investigate:
+-
+
Add
systemd.log_level=debug
and orrd.debug
to the kernelArgs of the node you’re working on.
+After the next boot you should be able to find verbose information on the node with
journalctl -u ignition-ww4-disks.service
.
+You could also check the content of
/warewulf/ignition.json
.
+You could try to tinker with
+/warewulf/ignition.json
calling++/usr/lib/dracut/modules.d/30ignition/ignition \ + --platform=metal \ + --stage=disks \ + --config-cache=/warewulf/ignition.json \ + --log-to-stdout +
after each iteration on the node directly until you find the settings you need. +(Make sure to unmount all partitions if
+ignition
was partially successful.)
+Sometimes you need to add
should_exist: "true"
for the swap partiton as well.
+
-
diff --git a/static/docs/main/contents/glossary.html b/static/docs/main/contents/glossary.html
index 06b36192..59398899 100644
--- a/static/docs/main/contents/glossary.html
+++ b/static/docs/main/contents/glossary.html
@@ -64,9 +64,7 @@
- Warewulf Overlays
- Node Provisioning
- IPMI -
- Storage objects -
- Ignition Implementation -
- Example disk configuration +
- Disk Management
- Security
- Templating
- dnsmasq diff --git a/static/docs/main/contents/initialization.html b/static/docs/main/contents/initialization.html index cfa328e7..b515af76 100644 --- a/static/docs/main/contents/initialization.html +++ b/static/docs/main/contents/initialization.html @@ -72,9 +72,7 @@
- Warewulf Overlays
- Node Provisioning
- IPMI -
- Storage objects -
- Ignition Implementation -
- Example disk configuration +
- Disk Management
- Security
- Templating
- dnsmasq diff --git a/static/docs/main/contents/installation.html b/static/docs/main/contents/installation.html index 0d2d93b5..a5991335 100644 --- a/static/docs/main/contents/installation.html +++ b/static/docs/main/contents/installation.html @@ -78,9 +78,7 @@
- Warewulf Overlays
- Node Provisioning
- IPMI -
- Storage objects -
- Ignition Implementation -
- Example disk configuration +
- Disk Management
- Security
- Templating
- dnsmasq diff --git a/static/docs/main/contents/introduction.html b/static/docs/main/contents/introduction.html index 57da16f2..492f3812 100644 --- a/static/docs/main/contents/introduction.html +++ b/static/docs/main/contents/introduction.html @@ -70,9 +70,7 @@
- Warewulf Overlays
- Node Provisioning
- IPMI -
- Storage objects -
- Ignition Implementation -
- Example disk configuration +
- Disk Management
- Security
- Templating
- dnsmasq diff --git a/static/docs/main/contents/ipmi.html b/static/docs/main/contents/ipmi.html index 1b420692..648ab831 100644 --- a/static/docs/main/contents/ipmi.html +++ b/static/docs/main/contents/ipmi.html @@ -23,7 +23,7 @@ - + @@ -76,9 +76,7 @@
- Console