Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions build_library/disk_layout.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"label":"EFI-SYSTEM",
"fs_label":"EFI-SYSTEM",
"type":"efi",
"blocks":"262144",
"blocks":"2097152",
"fs_type":"vfat",
"mount":"/boot",
"features": []
Expand All @@ -27,7 +27,8 @@
"label":"USR-A",
"uuid":"7130c94a-213a-4e5a-8e26-6cce9662f132",
"type":"flatcar-rootfs",
"blocks":"2097152",
"blocks":"4194304",
"extract_blocks":"2097152",
"fs_blocks":"260094",
"fs_type":"btrfs",
"fs_compression":"zstd",
Expand All @@ -38,7 +39,8 @@
"label":"USR-B",
"uuid":"e03dd35c-7c2d-4a47-b3fe-27f15780a57c",
"type":"flatcar-rootfs",
"blocks":"2097152",
"blocks":"4194304",
"extract_blocks":"2097152",
"fs_blocks":"262144"
},
"5":{
Expand All @@ -51,7 +53,7 @@
"label":"OEM",
"fs_label":"OEM",
"type":"data",
"blocks":"262144",
"blocks":"2097152",
"fs_type":"btrfs",
"fs_compression":"zlib",
"mount":"/oem"
Expand All @@ -70,7 +72,7 @@
"label":"ROOT",
"fs_label":"ROOT",
"type":"flatcar-resize",
"blocks":"4427776",
"blocks":"3653632",
"fs_type":"ext4",
"mount":"/"
}
Expand Down
14 changes: 11 additions & 3 deletions build_library/disk_util
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ def LoadPartitionConfig(options):
'_comment', 'type', 'num', 'label', 'blocks', 'block_size', 'fs_blocks',
'fs_block_size', 'fs_type', 'features', 'uuid', 'part_alignment', 'mount',
'binds', 'fs_subvolume', 'fs_bytes_per_inode', 'fs_inode_size', 'fs_label',
'fs_compression'))
'fs_compression', 'extract_blocks'))
integer_layout_keys = set((
'blocks', 'block_size', 'fs_blocks', 'fs_block_size', 'part_alignment',
'fs_bytes_per_inode', 'fs_inode_size'))
'fs_bytes_per_inode', 'fs_inode_size', 'extract_blocks'))
required_layout_keys = set(('type', 'num', 'label', 'blocks'))

filename = options.disk_layout_file
Expand Down Expand Up @@ -136,6 +136,13 @@ def LoadPartitionConfig(options):
part.setdefault('fs_block_size', metadata['fs_block_size'])
part.setdefault('fs_blocks', part['bytes'] // part['fs_block_size'])
part['fs_bytes'] = part['fs_blocks'] * part['fs_block_size']
# The partition may specify extract_blocks to limit what content gets
# extracted. The use case is the /usr partition where we can grow the
# partition but can't directly grow the filesystem and the update
# payload until all (or most) nodes are running the partition layout
# with the grown /usr partition (which can take a few years).
if part.get('extract_blocks', None):
part['extract_bytes'] = part['extract_blocks'] * metadata['block_size']

if part['fs_bytes'] > part['bytes']:
raise InvalidLayout(
Expand Down Expand Up @@ -823,6 +830,7 @@ def Extract(options):
if not part['image_compat']:
raise InvalidLayout("Disk layout is incompatible with existing image")

extract_size = part.get('extract_bytes', part['image_bytes'])
subprocess.check_call(['dd',
'bs=10MB',
'iflag=count_bytes,skip_bytes',
Expand All @@ -831,7 +839,7 @@ def Extract(options):
'if=%s' % options.disk_image,
'of=%s' % options.output,
'skip=%s' % part['image_first_byte'],
'count=%s' % part['image_bytes']])
'count=%s' % extract_size])


def GetPartitionByNumber(partitions, num):
Expand Down
3 changes: 3 additions & 0 deletions build_library/vm_image_util.sh
Original file line number Diff line number Diff line change
Expand Up @@ -224,9 +224,11 @@ IMG_ami_vmdk_DISK_FORMAT=vmdk_stream
IMG_ami_vmdk_OEM_USE=ami
IMG_ami_vmdk_OEM_PACKAGE=common-oem-files
IMG_ami_vmdk_SYSEXT=oem-ami
IMG_ami_vmdk_DISK_LAYOUT=vm
IMG_ami_OEM_USE=ami
IMG_ami_OEM_PACKAGE=common-oem-files
IMG_ami_OEM_SYSEXT=oem-ami
IMG_ami_DISK_LAYOUT=vm

## openstack
IMG_openstack_DISK_FORMAT=qcow2
Expand Down Expand Up @@ -342,6 +344,7 @@ IMG_kubevirt_OEM_SYSEXT=oem-kubevirt
IMG_kubevirt_DISK_EXTENSION=qcow2

## akamai (Linode)
IMG_akamai_DISK_LAYOUT=vm
IMG_akamai_OEM_PACKAGE=common-oem-files
IMG_akamai_OEM_USE=akamai
IMG_akamai_OEM_SYSEXT=oem-akamai
Expand Down
1 change: 1 addition & 0 deletions changelog/changes/2025-10-09-partition-sizes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Increased all partition sizes: `/boot` to 1 GB, the two `/usr` partitions to 2 GB, `/oem` to 1 GB so that we can use more space in a few years when we can assume that most nodes run the new partition layout - existing nodes can still update for the next years ([scripts#3027](https://github.com/flatcar/scripts/pull/3027))
Loading