btrfs subvolume strategy on single drive

Solution 1:

Assuming that you want to have the subvolume created in the same location as root and home:

  1. Temporarily mount the drive to some new folder

    sudo mkdir /my_disk
    sudo mount /dev/sda1 /my_disk  # sda1 will need to be your partition name
    sudo ls -la /my_disk
    # you should see your subvolumes now
    
  2. Now you can create the new subvolume inside the mounted disk

    sudo btrfs subvolume create /my_disk/sdata
    sudo ls -la /my_disk
    # you should see sdata here now
    
  3. Mounting sdata when you boot requires you edit the /etc/fstab file

    blkid    # use this to get the needed UUID for your disk
    sudo nano /etc/fstab
    
  4. Add the necessary info about your disk, mount point, and tags. Below is an example of you mounting sdata to the root directory, and I've included the options I use for mounting btrfs.

    # /etc/fstab: static file system information.
    #
    # Use 'blkid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # <file system>  <mount point>  <type>  <options>  <dump>  <pass>
    
    UUID=????  /sdata  btrfs  defaults,subvol=sdata,ssd,noatime,space_cache,commit=120,compress=zstd  0  0
    

I got the mounting options from Willi Mutschler's btrfs + luks installation guides which has a number of different OS installation step-by-steps. One recommendation in these guides is to rename the root subvolume to '@' so that the app Timeshift works correctly.

All that being said, my answer doesn't cover the process of reinstalling the same or new OS and how that is handled with btrfs subvolumes. I'm not certain of that myself. Either way I hope this helps.