How to add storage to disk partition on dual-boot system with BTRFS

Hi!

I have a dual boot system (Windows 11 and Fedora Linux Workstation 37) and would like to enquire how do I add storage to my system, which is depicted in Disks below?

Do I just run btrfs device add /dev/nvme0n1 / while booted into Partition 6 (Fedora)?

df -h yields:

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs            16G   30M   16G   1% /dev/shm
tmpfs           6.3G  2.6M  6.3G   1% /run
/dev/nvme0n1p6   97G   67G   28G  72% /
tmpfs            16G  5.1M   16G   1% /tmp
/dev/nvme0n1p6   97G   67G   28G  72% /home
/dev/nvme0n1p5  974M  268M  639M  30% /boot
/dev/nvme0n1p2  575M   47M  529M   9% /boot/efi
tmpfs           3.2G  228K  3.2G   1% /run/user/1000

You need to see differently as nothing about file system or even Linux … first you reduce Windows partition using Disk Management or DiskPart from Windows toolbox. After you use a Linux system on USB device to chroot in Fedora moving boot partition and then file system manager software to extend Linux partition. Otherwise create BTRFS file system in space between Windows and boot loader or LVM for other file system. The recovery partition in Windows isn’t a functional necessity. Easier to reinstall Fedora …

Hi! Thanks for the response. I’m sorry but I don’t understand your first sentence, do you mean that this question does not pertain to the file system or Linux?

I had previously deallocated the memory currently in /dev/nvme0n1 by shrinking the Windows partition.

My understanding is that BTRFS is able to gracefully handle multiple devices as providing storage for a single mount-point, is this not accurate? This assumption of mine was what made me think this was as easy as just running btrfs device add /dev/nvme0n1 /. I would appreciate any clarity on this matter.

Thank you so much again for your kind response!

The layout is first Windows, after Fedora. Each operating system has a specific boot partition. You need first to shrink Windows leaving space for Fedora that has also a boot partition that you either move to the beginning of Fedora space or create another file system linked to the existing using BTRFS combining file system and volume manager …

What I’m saying is whatever OS you’re using, boot partition is the hard point to manage.

Please state more clearly:

  1. Which is the partition that need more spaces
  2. Where does the free spaces came from

With more concrete data, you will get more applicable suggestions.

1 Like

Thank you so much for the kind advice!

The partition that needs more space is partition 6 (Fedora)
I would like to merge the partition in blue labelled (Free Space 210 GB) into that Partition.

Other:
Partition 1 is the EFI system partition
Partition 3 is my Windows Partition.
Partition 4 is my Window Recovery partition.

I think Partition 5 is used by Fedora (Recovery?)
I think I can delete Partition 7, it’s an empty D: drive

If I were you, I will:

  1. Remove Partition 7, so that you will have about 3GB of free space after Partition 6
  2. Extend Partition 6 to use those extra, continous 3GB of free space
  3. Resize the BTRFS filesystem to make use of the extra space

Then I will plan for the next stage, which I will do a simulation in a Virtual Machine first.

  • delete Partition 4, make sure you can still boot
  • Move Partition 5 (which should become Partition 4, as 4 is removed) to the left most
  • then repeat 2 & 3 above .

Alternative way:

  • remove Parititon 4
  • create new partition of the 210.7GB free space
  • use btrfs device add “new partition” /
    (That is like running a Raid 0 of 2 partitions on the same device.)

Once VM simulation success, back up and do it on your physical device.

2 Likes

To do anything to your btrfs partition, you need to be booted from a different place. The usual way to do that is using a USB stick that either directly or through Ventoy contains a bootable ISO of “live” Fedora.

It appears that the basic thing you want to do is use part or all of the unpartitioned 210GB to expand the btrfs. But first they need to be contiguous. To get that, you can move partition 4 to the beginning of that unpartitioned space, then move partition 5 to immediately after it. Then you could grow partition 6 to use part or all of the space before it.

I always use gparted for such tasks. Most other Linux partitioning tools can also move and resize partitions, but I’m not sure of which can or can’t. They all end up invoking command line tools to move and resize partitions. Those command line tools aren’t very well documented, so if you use them directly, harmful mistakes are likely.

I understand you were asking about making one btrfs filesystem span multiple partitions. If you did that, you could use that free space without moving the two small partitions that are in between. A quick google search gave me quite a lot of info indicating btrfs ought to support that. But it gave too little detail for me to understand, and it gave some warnings that such features of btrfs were not implemented very well and btrfs is better used with just one partition per filesystem.

2 Likes

I’ve never attempted this, but according to the docs, that should work. There’s also info on that page about editing /etc/fstab, running btrfs device scan, etc.

1 Like

Thank you everyone for all the helpful suggestions! Unfortunately the system does not allow me to mark more than one answer as the solution, so I hope you’ll forgive me for not doing so.

I will attempt your suggestions, thanks again for all the help!

In the end, in Windows Disk Management, I created a new partition for the Windows Recovery Partition, created a disk image of the existing Windows Recovery Partition and moved it to the end of the disk, referring to diskpart - How to move the recovery partition on Windows 10? - Super User.

Then, I copied the Linux boot partition to the back of the disk with gparted (on a live USB) and changed the partition UUID of the old boot partition before deleting it.

Finally, I resized my Fedora partition to encompass the remaining space. (with gparted on a live USB)

The reason I pushed the boot volume as well as the Windows Recovery Partition to the end of the disk was in order to get them out of the way in case I need to resize my Windows or Linux partitions.

Thanks everyone for the advice!

Command line interface tools are powerful including diskpart for windows, btrfs (just type it in a console) or fdisk. Gparted is somewhat archaic, just learn CLI tools to do what you want.

1 Like

Changing that UUID didn’t hurt, but was actually unnecessary. gparted could unambiguously delete the one you tell it too, even while two partitions have the same UUID.

While two have the same UUID, mounting either of them will fail. Also, grub2 typically finds the /boot partition by UUID (as specified in the EFI/fedora/grub.cfg file). So trying to boot to the grub menu while two partitions have that UUID gives unpredictable results (I’ve made that mistake, results vary without obvious pattern).

Comparing your posts, I see you also deleted your original partition 7 (2.3GB NTFS). I assume that was on purpose. I hope that was a correct choice. Did you find out what it was before deleting it.

1 Like

Hi John, yes I deleted partition 7, as it was a duplicate Windows Recovery Partition that was not enabled.

I’m sorry that I was a bit too brief in my summary, I first changed the UUID on the old boot volume → reboot to check that the duplicate /boot volume was fine → delete the old boot volume.

Thank you again for your advice!

Last thought … from the first layout, you leave partitions 2 and 5 untouched being boot systems for each OS, keep partitions 3 and 6 leaving 3.82 GB of unused space as recovery partitions of Windows have no sense as you use a USB install memory device, formatted in Windows for the same result. The retrieved space can be formatted in BTRFS file system and linked together in logical volume being a feature of the file system. You reduce Windows space with Microsoft tool set and use the space formatted BTRFS for Fedora in two partitions, one logical volume. The final touch is eliminating partition 1 … won’t work with Windows storage space feature, formatted BTRFS linked to logical volume or move boot partition …?