rezize works part one

This commit is contained in:
2025-09-14 12:56:09 +02:00
parent 7decaf46ef
commit 7d64544c37
2 changed files with 25 additions and 8 deletions

View File

@@ -141,11 +141,23 @@ do_resize() {
exit 1
fi
log "Resizing LUKS volume."
cryptsetup resize "$mapper_name"
log "Checking and resizing filesystem."
log "Checking filesystem before resize."
e2fsck -fy "/dev/mapper/$mapper_name"
log "Resizing LUKS volume and filesystem."
# Re-authenticate for resize, as some cryptsetup versions require it.
if [ -n "$LUKSPASS" ]; then
log "Resizing with password."
echo -n "$LUKSPASS" | cryptsetup resize "$mapper_name" -
elif [ -n "$key_file_arg" ]; then
log "Resizing with keyfile."
cryptsetup resize "$mapper_name" --key-file "$key_file_arg"
else
# This should not happen if luksOpen succeeded.
# Fallback to the previous non-interactive attempt.
log "No password or keyfile for resize, trying non-interactively."
cryptsetup resize "$mapper_name" < /dev/null
fi
resize2fs "/dev/mapper/$mapper_name"
# 4. Mount it again

View File

@@ -177,9 +177,11 @@ class EncryptionManager:
free_space = shutil.disk_usage(mount_point).free
required_space = int(source_size * 1.10)
if required_space > free_space:
BUFFER = 4 * 1024 * 1024 * 1024 # 4 GB
# Trigger resize if projected free space is less than the buffer
if free_space - required_space < BUFFER:
self.logger.log(
f"Resize needed for {profile_name}. Free: {free_space}, Required: {required_space}")
f"Resize needed for {profile_name}. Free: {free_space}, Required: {required_space}, Buffer: {BUFFER}")
queue.put(
('status_update', f"Container für {profile_name} zu klein. Vergrößere..."))
@@ -192,8 +194,11 @@ class EncryptionManager:
return None
current_total = shutil.disk_usage(mount_point).total
needed_additional = required_space - free_space - \
(4 * 1024 * 1024 * 1024) # (4 * 1024 * 1024 * 1024) = 4 GB
# How much space we need to add to meet the future demand and have the buffer left over.
# This is the deficit (required_space - free_space) plus the desired buffer.
needed_additional = (required_space - free_space) + BUFFER
new_total_size = current_total + needed_additional
new_total_size = math.ceil(new_total_size / 4096) * 4096