canonical / canonical/cloud-init
cc_resizefs does not allocate space on all disks of a multi disk btrfs volume
- Dominant language
- Python
- Stars
- 3.8k
- Forks
- 1.1k
- Avg merge
- 3d 8h
- Merged PRs (30d)
- 22
Description
This bug was originally filed in Launchpad as [LP: #1955858](https://bugs.launchpad.net/cloud-init/+bug/1955858)
Launchpad details
affected_projects = []
assignee = None
assignee_name = None
date_closed = None
date_created = 2021-12-28T01:05:59.703006+00:00
date_fix_committed = None
date_fix_released = None
id = 1955858
importance = medium
is_complete = False
lp_url = https://bugs.launchpad.net/cloud-init/+bug/1955858
milestone = None
owner = nothing4you
owner_name = Richard Schwab
private = False
status = triaged
submitter = nothing4you
submitter_name = Richard Schwab
tags = []
duplicates = []
_Launchpad user **Richard Schwab(nothing4you)** wrote on 2021-12-28T01:05:59.703006+00:00_
cloud provider: self-hosted, proxmox
cloud-init config:
growpart:
mode: auto
devices:
- /dev/sda1
- /dev/sdb1
- /dev/sdc1
- /dev/sdd1
I have a multi disk btrfs volume as root fs for the vm.
Each disk needs to grow on first boot and the btrfs filesystem should be resized.
Partitions are grown just fine and btrfs detects that, however, running `btrfs filesystem resize max /` as currently used in https://github.com/canonical/cloud-init/blob/bae9b11da9ed7dd0b16fe5adeaf4774b7cc628cf/cloudinit/config/cc_resizefs.py#L81 does not account for having multiple disks.
From the `btrfs-filesystem` man page (debian 11, Btrfs v5.10.1):
> The devid can be found in the output of btrfs filesystem show and defaults to 1 if not specified.
Since a devid is not passed only the first disk will be resized, other disks will stay with "slack" space.
This is after I manually resized disk id 2 for testing, before it also had 3GiB slack:
root@test-vm:~# btrfs device usage /
/dev/sda1, ID: 1
Device size: 4.00GiB
Device slack: 3.50KiB
Data,RAID10: 310.25MiB
Metadata,RAID10: 64.00MiB
System,RAID10: 8.00MiB
Unallocated: 3.62GiB
/dev/sdb1, ID: 2
Device size: 4.00GiB
Device slack: 3.50KiB
Data,RAID10: 310.25MiB
Metadata,RAID10: 64.00MiB
System,RAID10: 8.00MiB
Unallocated: 3.62GiB
/dev/sdc1, ID: 3
Device size: 4.00GiB
Device slack: 3.00GiB
Data,RAID10: 310.25MiB
Metadata,RAID10: 64.00MiB
System,RAID10: 8.00MiB
Unallocated: 640.73MiB
/dev/sdd1, ID: 4
Device size: 4.00GiB
Device slack: 3.00GiB
Data,RAID10: 310.25MiB
Metadata,RAID10: 64.00MiB
System,RAID10: 8.00MiB
Unallocated: 640.73MiB
Contributor guide
Research direction
Start in cloudinit/config/cc_resizefs.py around the btrfs filesystem resize command linked in the issue. Reproduce the multi-disk scenario or inspect the existing resize flow, then verify that resizing the root filesystem accounts for every btrfs device rather than only the default device.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, python
- Domain
- cloud, operating-systems
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100