Merge pull request #3027 from flatcar/ader1990/increase_boot_partition

Increase partition sizes
This commit is contained in:
Kai Lüke 2025-10-10 16:21:37 +02:00 committed by GitHub
commit 1fa8f4428e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 22 additions and 8 deletions

View File

@ -13,7 +13,7 @@
"label":"EFI-SYSTEM", "label":"EFI-SYSTEM",
"fs_label":"EFI-SYSTEM", "fs_label":"EFI-SYSTEM",
"type":"efi", "type":"efi",
"blocks":"262144", "blocks":"2097152",
"fs_type":"vfat", "fs_type":"vfat",
"mount":"/boot", "mount":"/boot",
"features": [] "features": []
@ -27,7 +27,8 @@
"label":"USR-A", "label":"USR-A",
"uuid":"7130c94a-213a-4e5a-8e26-6cce9662f132", "uuid":"7130c94a-213a-4e5a-8e26-6cce9662f132",
"type":"flatcar-rootfs", "type":"flatcar-rootfs",
"blocks":"2097152", "blocks":"4194304",
"extract_blocks":"2097152",
"fs_blocks":"260094", "fs_blocks":"260094",
"fs_type":"btrfs", "fs_type":"btrfs",
"fs_compression":"zstd", "fs_compression":"zstd",
@ -38,7 +39,8 @@
"label":"USR-B", "label":"USR-B",
"uuid":"e03dd35c-7c2d-4a47-b3fe-27f15780a57c", "uuid":"e03dd35c-7c2d-4a47-b3fe-27f15780a57c",
"type":"flatcar-rootfs", "type":"flatcar-rootfs",
"blocks":"2097152", "blocks":"4194304",
"extract_blocks":"2097152",
"fs_blocks":"262144" "fs_blocks":"262144"
}, },
"5":{ "5":{
@ -51,7 +53,7 @@
"label":"OEM", "label":"OEM",
"fs_label":"OEM", "fs_label":"OEM",
"type":"data", "type":"data",
"blocks":"262144", "blocks":"2097152",
"fs_type":"btrfs", "fs_type":"btrfs",
"fs_compression":"zlib", "fs_compression":"zlib",
"mount":"/oem" "mount":"/oem"
@ -70,7 +72,7 @@
"label":"ROOT", "label":"ROOT",
"fs_label":"ROOT", "fs_label":"ROOT",
"type":"flatcar-resize", "type":"flatcar-resize",
"blocks":"4427776", "blocks":"3653632",
"fs_type":"ext4", "fs_type":"ext4",
"mount":"/" "mount":"/"
} }

View File

@ -40,10 +40,10 @@ def LoadPartitionConfig(options):
'_comment', 'type', 'num', 'label', 'blocks', 'block_size', 'fs_blocks', '_comment', 'type', 'num', 'label', 'blocks', 'block_size', 'fs_blocks',
'fs_block_size', 'fs_type', 'features', 'uuid', 'part_alignment', 'mount', 'fs_block_size', 'fs_type', 'features', 'uuid', 'part_alignment', 'mount',
'binds', 'fs_subvolume', 'fs_bytes_per_inode', 'fs_inode_size', 'fs_label', 'binds', 'fs_subvolume', 'fs_bytes_per_inode', 'fs_inode_size', 'fs_label',
'fs_compression')) 'fs_compression', 'extract_blocks'))
integer_layout_keys = set(( integer_layout_keys = set((
'blocks', 'block_size', 'fs_blocks', 'fs_block_size', 'part_alignment', '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')) required_layout_keys = set(('type', 'num', 'label', 'blocks'))
filename = options.disk_layout_file filename = options.disk_layout_file
@ -136,6 +136,13 @@ def LoadPartitionConfig(options):
part.setdefault('fs_block_size', metadata['fs_block_size']) part.setdefault('fs_block_size', metadata['fs_block_size'])
part.setdefault('fs_blocks', part['bytes'] // part['fs_block_size']) part.setdefault('fs_blocks', part['bytes'] // part['fs_block_size'])
part['fs_bytes'] = part['fs_blocks'] * 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']: if part['fs_bytes'] > part['bytes']:
raise InvalidLayout( raise InvalidLayout(
@ -823,6 +830,7 @@ def Extract(options):
if not part['image_compat']: if not part['image_compat']:
raise InvalidLayout("Disk layout is incompatible with existing image") raise InvalidLayout("Disk layout is incompatible with existing image")
extract_size = part.get('extract_bytes', part['image_bytes'])
subprocess.check_call(['dd', subprocess.check_call(['dd',
'bs=10MB', 'bs=10MB',
'iflag=count_bytes,skip_bytes', 'iflag=count_bytes,skip_bytes',
@ -831,7 +839,7 @@ def Extract(options):
'if=%s' % options.disk_image, 'if=%s' % options.disk_image,
'of=%s' % options.output, 'of=%s' % options.output,
'skip=%s' % part['image_first_byte'], 'skip=%s' % part['image_first_byte'],
'count=%s' % part['image_bytes']]) 'count=%s' % extract_size])
def GetPartitionByNumber(partitions, num): def GetPartitionByNumber(partitions, num):

View File

@ -224,9 +224,11 @@ IMG_ami_vmdk_DISK_FORMAT=vmdk_stream
IMG_ami_vmdk_OEM_USE=ami IMG_ami_vmdk_OEM_USE=ami
IMG_ami_vmdk_OEM_PACKAGE=common-oem-files IMG_ami_vmdk_OEM_PACKAGE=common-oem-files
IMG_ami_vmdk_SYSEXT=oem-ami IMG_ami_vmdk_SYSEXT=oem-ami
IMG_ami_vmdk_DISK_LAYOUT=vm
IMG_ami_OEM_USE=ami IMG_ami_OEM_USE=ami
IMG_ami_OEM_PACKAGE=common-oem-files IMG_ami_OEM_PACKAGE=common-oem-files
IMG_ami_OEM_SYSEXT=oem-ami IMG_ami_OEM_SYSEXT=oem-ami
IMG_ami_DISK_LAYOUT=vm
## openstack ## openstack
IMG_openstack_DISK_FORMAT=qcow2 IMG_openstack_DISK_FORMAT=qcow2
@ -342,6 +344,7 @@ IMG_kubevirt_OEM_SYSEXT=oem-kubevirt
IMG_kubevirt_DISK_EXTENSION=qcow2 IMG_kubevirt_DISK_EXTENSION=qcow2
## akamai (Linode) ## akamai (Linode)
IMG_akamai_DISK_LAYOUT=vm
IMG_akamai_OEM_PACKAGE=common-oem-files IMG_akamai_OEM_PACKAGE=common-oem-files
IMG_akamai_OEM_USE=akamai IMG_akamai_OEM_USE=akamai
IMG_akamai_OEM_SYSEXT=oem-akamai IMG_akamai_OEM_SYSEXT=oem-akamai

View File

@ -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))