Skip to content

Conversation

@zaneb
Copy link
Member

@zaneb zaneb commented Nov 3, 2025

Agent-based installations on vSphere with 16GB RAM were failing with "no space left on device" errors during ostree image operations. The live ISO environment uses a tmpfs mounted at /var that is sized at 50% of available RAM. On systems with 16GB RAM, this provides only 8GB of tmpfs space.

During the bootstrap process, node-image-pull.sh creates a temporary ostree repository in /var/ostree-container/repo to pull and apply the node image. This operation has a peak tmpfs usage of approximately 8.5-9GB, exceeding the available 8GB and causing ENOSPC errors.

This fix resizes the /var tmpfs to 10GiB before creating the temporary ostree repository, providing sufficient space for the image operations while maintaining compatibility with the minimum 16GB RAM requirement.

The resize is performed using systemd-run to escape the mount namespace and only affects systems running in the live environment (detected by the presence of /run/ostree-live).

@openshift-ci-robot openshift-ci-robot added jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Nov 3, 2025
@openshift-ci-robot
Copy link
Contributor

@zaneb: This pull request references Jira Issue OCPBUGS-62790, which is invalid:

  • expected the bug to target the "4.21.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

In response to this:

Agent-based installations on vSphere with 16GB RAM were failing with "no space left on device" errors during ostree image operations. The live ISO environment uses a tmpfs mounted at /var that is sized at 50% of available RAM. On systems with 16GB RAM, this provides only 8GB of tmpfs space.

During the bootstrap process, node-image-pull.sh creates a temporary ostree repository in /var/ostree-container/repo to pull and apply the node image. This operation has a peak tmpfs usage of approximately 8.5-9GB, exceeding the available 8GB and causing ENOSPC errors.

This fix resizes the /var tmpfs to 10GiB before creating the temporary ostree repository, providing sufficient space for the image operations while maintaining compatibility with the minimum 16GB RAM requirement.

The resize is performed using systemd-run to escape the mount namespace and only affects systems running in the live environment (detected by the presence of /run/ostree-live).

Assisted-by: Claude Code

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@zaneb
Copy link
Member Author

zaneb commented Nov 3, 2025

/jira refresh
/cc @jlebon

@openshift-ci openshift-ci bot requested a review from jlebon November 3, 2025 04:06
@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Nov 3, 2025
@openshift-ci-robot
Copy link
Contributor

@zaneb: This pull request references Jira Issue OCPBUGS-62790, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.0) matches configured target version for branch (4.21.0)
  • bug is in the state ASSIGNED, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @mhanss

In response to this:

/jira refresh
/cc @jlebon

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci openshift-ci bot requested a review from mhanss November 3, 2025 04:06
Agent-based installations on vSphere with 16GB RAM were failing with
"no space left on device" errors during ostree image operations. The
live ISO environment uses a tmpfs mounted at /var that is sized at 50%
of available RAM. On systems with 16GB RAM, this provides only 8GB of
tmpfs space.

During the bootstrap process, node-image-pull.sh creates a temporary
ostree repository in /var/ostree-container/repo to pull and apply the
node image. This operation has a peak tmpfs usage of approximately
8.5-9GB, exceeding the available 8GB and causing ENOSPC errors.

This fix resizes the /var tmpfs to 10GiB before creating the temporary
ostree repository, providing sufficient space for the image operations
while maintaining compatibility with the minimum 16GB RAM requirement.

The resize is performed using systemd-run to escape the mount namespace
and only affects systems running in the live environment (detected by
the presence of /run/ostree-live).

Assisted-by: Claude Code
@zaneb zaneb force-pushed the ostree-tmpfs-size branch from 99e2a25 to 57892c6 Compare November 3, 2025 04:29
@zaneb
Copy link
Member Author

zaneb commented Nov 3, 2025

/test ?

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 3, 2025

@zaneb: The following commands are available to trigger required jobs:

/test artifacts-images
/test e2e-agent-compact-ipv4
/test e2e-aws-ovn
/test e2e-aws-ovn-edge-zones-manifest-validation
/test e2e-aws-ovn-upi
/test e2e-azure-nat-gateway-single-zone
/test e2e-azure-ovn
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upi
/test e2e-metal-ipi-ovn-ipv6
/test e2e-openstack-ovn
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi
/test gofmt
/test golint
/test govet
/test images
/test integration-tests
/test integration-tests-nodejoiner
/test okd-scos-images
/test openstack-manifests
/test shellcheck
/test unit
/test verify-codegen
/test verify-deps
/test verify-vendor
/test yaml-lint

The following commands are available to trigger optional jobs:

/test aws-private
/test azure-ovn-marketplace-images
/test azure-private
/test e2e-agent-4control-ipv4
/test e2e-agent-5control-ipv4
/test e2e-agent-compact-ipv4-appliance-diskimage
/test e2e-agent-compact-ipv4-iso-no-registry
/test e2e-agent-compact-ipv4-none-platform
/test e2e-agent-compact-ipv6-minimaliso
/test e2e-agent-ha-dualstack
/test e2e-agent-sno-ipv4-pxe
/test e2e-agent-sno-ipv6
/test e2e-agent-two-node-fencing-ipv4
/test e2e-aws-byo-subnet-role-security-groups
/test e2e-aws-custom-dns-techpreview
/test e2e-aws-default-config
/test e2e-aws-overlay-mtu-ovn-1200
/test e2e-aws-ovn-custom-iam-profile
/test e2e-aws-ovn-edge-zones
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-heterogeneous
/test e2e-aws-ovn-imdsv2
/test e2e-aws-ovn-proxy
/test e2e-aws-ovn-public-ipv4-pool
/test e2e-aws-ovn-public-ipv4-pool-disabled
/test e2e-aws-ovn-public-subnets
/test e2e-aws-ovn-shared-vpc-custom-security-groups
/test e2e-aws-ovn-shared-vpc-edge-zones
/test e2e-aws-ovn-single-node
/test e2e-aws-ovn-techpreview
/test e2e-aws-ovn-upgrade
/test e2e-aws-upi-proxy
/test e2e-azure-custom-dns-techpreview
/test e2e-azure-default-config
/test e2e-azure-ovn-multidisk-techpreview
/test e2e-azure-ovn-resourcegroup
/test e2e-azure-ovn-shared-vpc
/test e2e-azure-ovn-techpreview
/test e2e-azure-ovn-upi
/test e2e-azurestack
/test e2e-azurestack-upi
/test e2e-crc
/test e2e-external-aws
/test e2e-external-aws-ccm
/test e2e-gcp-custom-dns
/test e2e-gcp-custom-endpoints
/test e2e-gcp-default-config
/test e2e-gcp-ovn-byo-vpc
/test e2e-gcp-ovn-heterogeneous
/test e2e-gcp-ovn-techpreview
/test e2e-gcp-ovn-xpn
/test e2e-gcp-secureboot
/test e2e-gcp-upgrade
/test e2e-gcp-upi-xpn
/test e2e-gcp-xpn-dedicated-dns-project
/test e2e-ibmcloud-ovn
/test e2e-metal-assisted
/test e2e-metal-ipi-ovn
/test e2e-metal-ipi-ovn-dualstack
/test e2e-metal-ipi-ovn-swapped-hosts
/test e2e-metal-ipi-ovn-virtualmedia
/test e2e-metal-ovn-two-node-arbiter
/test e2e-metal-ovn-two-node-fencing
/test e2e-metal-single-node-live-iso
/test e2e-nutanix-ovn
/test e2e-openstack-ccpmso
/test e2e-openstack-ccpmso-zone
/test e2e-openstack-dualstack
/test e2e-openstack-dualstack-upi
/test e2e-openstack-externallb
/test e2e-openstack-nfv-intel
/test e2e-openstack-proxy
/test e2e-openstack-singlestackv6
/test e2e-powervs-capi-ovn
/test e2e-vsphere-externallb-ovn
/test e2e-vsphere-host-groups-ovn-techpreview
/test e2e-vsphere-multi-vcenter-ovn
/test e2e-vsphere-ovn-disk-setup-techpreview
/test e2e-vsphere-ovn-hybrid-env
/test e2e-vsphere-ovn-multi-disk
/test e2e-vsphere-ovn-multi-network
/test e2e-vsphere-ovn-techpreview
/test e2e-vsphere-ovn-upi-zones
/test e2e-vsphere-ovn-zones
/test e2e-vsphere-ovn-zones-techpreview
/test e2e-vsphere-static-ovn
/test gcp-private
/test okd-scos-e2e-aws-ovn

Use /test all to run the following jobs that were automatically triggered:

pull-ci-openshift-installer-main-artifacts-images
pull-ci-openshift-installer-main-e2e-aws-ovn
pull-ci-openshift-installer-main-gofmt
pull-ci-openshift-installer-main-golint
pull-ci-openshift-installer-main-govet
pull-ci-openshift-installer-main-images
pull-ci-openshift-installer-main-okd-scos-e2e-aws-ovn
pull-ci-openshift-installer-main-okd-scos-images
pull-ci-openshift-installer-main-shellcheck
pull-ci-openshift-installer-main-unit
pull-ci-openshift-installer-main-verify-codegen
pull-ci-openshift-installer-main-verify-deps
pull-ci-openshift-installer-main-verify-vendor
pull-ci-openshift-installer-main-yaml-lint

In response to this:

/test ?

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@zaneb
Copy link
Member Author

zaneb commented Nov 3, 2025

/test e2e-agent-compact-ipv4
/test e2e-metal-ipi-ovn-ipv6

@zaneb
Copy link
Member Author

zaneb commented Nov 3, 2025

/test e2e-metal-assisted

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 4, 2025

@zaneb: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-metal-assisted 57892c6 link false /test e2e-metal-assisted
ci/prow/e2e-metal-ipi-ovn-ipv6 57892c6 link true /test e2e-metal-ipi-ovn-ipv6
ci/prow/okd-scos-e2e-aws-ovn 57892c6 link false /test okd-scos-e2e-aws-ovn

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.


echo "Resizing /run/ephemeral_base tmpfs to 10GiB for ostree operations..."
# Use systemd-run to avoid inheriting MountFlags
systemd-run --wait --service-type=oneshot mount -o remount,size=10G /run/ephemeral_base
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIUC there isn't a way here to configure the value as % (rather than a fixed value, currently equivalent to 62.5%), isn't it? The only point is that better spec'ed nodes (with >16GB) will not grant any benefit by their additional memory during the live setup - which seems a minor point though, as the additional memory shouldn't be required

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, you can do it by %, but the ostree repo is the same size all the time.
And by the time we get here we have already validated the minimum total RAM, so we have at least 16GiB.
I guess the benefit of a % is that if we blew through the 10GiB barrier then you could still workaround by adding more RAM, but with a fixed size there is no workaround.

@andfasano
Copy link
Contributor

/approve

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 4, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: andfasano

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Nov 4, 2025
@bfournie
Copy link
Contributor

bfournie commented Nov 5, 2025

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Nov 5, 2025
@openshift-ci-robot
Copy link
Contributor

@zaneb: This pull request references Jira Issue OCPBUGS-62790, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.0) matches configured target version for branch (4.21.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @mhanss

In response to this:

Agent-based installations on vSphere with 16GB RAM were failing with "no space left on device" errors during ostree image operations. The live ISO environment uses a tmpfs mounted at /var that is sized at 50% of available RAM. On systems with 16GB RAM, this provides only 8GB of tmpfs space.

During the bootstrap process, node-image-pull.sh creates a temporary ostree repository in /var/ostree-container/repo to pull and apply the node image. This operation has a peak tmpfs usage of approximately 8.5-9GB, exceeding the available 8GB and causing ENOSPC errors.

This fix resizes the /var tmpfs to 10GiB before creating the temporary ostree repository, providing sufficient space for the image operations while maintaining compatibility with the minimum 16GB RAM requirement.

The resize is performed using systemd-run to escape the mount namespace and only affects systems running in the live environment (detected by the presence of /run/ostree-live).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants