diff --git a/data/data/agent/files/usr/local/bin/agent-gather b/data/data/agent/files/usr/local/bin/agent-gather index c201f08a7dc..a2a0478db78 100644 --- a/data/data/agent/files/usr/local/bin/agent-gather +++ b/data/data/agent/files/usr/local/bin/agent-gather @@ -78,6 +78,8 @@ function gather_storage_data() { cp /etc/mtab "${ARTIFACTS_DIR}/etc/mtab" ( >&2 echo -n ".") lsblk > "${ARTIFACTS_DIR}/lsblk" + ( >&2 echo -n ".") + df -h > "${ARTIFACTS_DIR}/df" ( >&2 echo " Done") } diff --git a/data/data/bootstrap/files/etc/systemd/system/node-image-pull.service b/data/data/bootstrap/files/etc/systemd/system/node-image-pull.service index 8ac36d75b8c..4dd7dd56fe8 100644 --- a/data/data/bootstrap/files/etc/systemd/system/node-image-pull.service +++ b/data/data/bootstrap/files/etc/systemd/system/node-image-pull.service @@ -1,7 +1,8 @@ [Unit] Description=Node Image Pull Requires=network.target NetworkManager.service -After=network.target +Wants=resize-ephemeral.service +After=network.target resize-ephemeral.service [Service] Type=oneshot diff --git a/data/data/bootstrap/files/etc/systemd/system/resize-ephemeral.service b/data/data/bootstrap/files/etc/systemd/system/resize-ephemeral.service new file mode 100644 index 00000000000..26d21ae6ae5 --- /dev/null +++ b/data/data/bootstrap/files/etc/systemd/system/resize-ephemeral.service @@ -0,0 +1,10 @@ +[Unit] +Description=Resize ephemeral disk +Requires=network.target NetworkManager.service +Before=node-image-pull.service bootkube.service +ConditionPathExists=/run/ostree-live + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/local/bin/resize-ephemeral.sh 12G diff --git a/data/data/bootstrap/files/usr/local/bin/node-image-pull.sh.template b/data/data/bootstrap/files/usr/local/bin/node-image-pull.sh.template index ba7bcaf4198..7b321c3c9d0 100755 --- a/data/data/bootstrap/files/usr/local/bin/node-image-pull.sh.template +++ b/data/data/bootstrap/files/usr/local/bin/node-image-pull.sh.template @@ -85,6 +85,8 @@ ostree checkout --repo "${ostree_repo}" ${hardlink} coreos/node-image "${ostree_ # in the assisted-installer case, nuke the temporary repo to save RAM if grep -q coreos.liveiso= /proc/cmdline; then + df -h "${ostree_repo}" echo "Deleting temporary repo" rm -rf "${ostree_repo}" + df -h "${ostree_checkout}" fi diff --git a/data/data/bootstrap/files/usr/local/bin/resize-ephemeral.sh b/data/data/bootstrap/files/usr/local/bin/resize-ephemeral.sh new file mode 100644 index 00000000000..814c891e4fc --- /dev/null +++ b/data/data/bootstrap/files/usr/local/bin/resize-ephemeral.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +set -eu + +TARGET_SIZE="$1" +BASE_DIR="/run/ephemeral_base" +LOOPBACK_FILE="${BASE_DIR}/loopfs" + +function get_size_bytes() { + printf "%d" "$(($(stat -f -c "%b * %s" "${BASE_DIR}")))" +} + +TARGET_SIZE_BYTES="$(numfmt --from=iec "${TARGET_SIZE}")" +CURRENT_SIZE_BYTES="$(get_size_bytes)" +CURRENT_SIZE="$(numfmt --to=iec "${CURRENT_SIZE_BYTES}")" + +if ((TARGET_SIZE_BYTES > CURRENT_SIZE_BYTES)); then + echo "Expanding ephemeral base dir from ${CURRENT_SIZE} to ${TARGET_SIZE}" + mount -o remount,size="${TARGET_SIZE}" "${BASE_DIR}" + + echo "Expanding ephemeral loopback" + truncate -s "$(get_size_bytes)" "${LOOPBACK_FILE}" + + LOOPBACK_DEVICE="$(losetup -j "${LOOPBACK_FILE}" -O NAME -n)" + losetup -c "${LOOPBACK_DEVICE}" + + echo "Expanding ephemeral filesystem" + xfs_growfs -d "${LOOPBACK_DEVICE}" +else + echo "Ephemeral base dir size ${CURRENT_SIZE} is already larger than ${TARGET_SIZE}; not expanding" +fi + +df -h